Internet Computing KUT Youn-Hee Han

Slides:



Advertisements
Similar presentations
JSP 정리 레퍼런스: JSP 2.1 웹 프로그래밍 (최범균, 가메출판사). 목차 1. Directive - 인코딩 - 오류처리 2. Implicit Object - 쿠키/세션 3. Action Tag 4. JDBC/DBCP 프로그래밍, 파일업로드 5. Expression.
Advertisements

11장. 프로토콜 핸들러 AI &HC I LAB 김 성 현.
Java Web Programming 5일차.
11 JSTL 사용하기.
제 12 장 표현 언어 학기 인터넷비즈니스과 강 환수 교수.
Spring MVC ㅇ 스프링 MVC 구성요소 설명 DispatcherServlet 클라이언트의 요청을 컨트롤러에게 전달하고
10. 예외 처리.
Introduction to Servlets
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
Chapter 14 : JSP 고급4. chapter 14 : JSP 고급4 학습목표 커스텀 태그 종류 JSTL ( JSP Standard Tag Library ) 사용자 커스텀 태그 커스텀 태그 작성 클래스 기반 커스텀 태그 작성 태그 파일 기반 커스텀 태그 작성.
12장. JSP에서 자바빈 활용 제12장.
7. JavaBeans 프로그래밍 JavaBeans JavaBeans 만들기 빈을 이용한 회원가입 양식 작성하기 빈 작성
12 커스텀 액션.
JSP BBS (Bulletin Board System)
2 서블릿의 기초.
3장. 웹 어플리케이션과 JSP 및 Servlet의 이해 제3장.
1. JSP(Java Server Pages) 소개
9 표준 액션.
9장. 요청 흐름제어와 모듈화 #1: <jsp:forward> 액션태그 사용
10장. 에러 처리 제10장.
JSP 내장 객체 개요 내장 객체 (참조 변수 이름) 자바 클래스 주요 역할
Chapter 11 – 예외 처리 Outline 11.1 설계 쟁점 11.2 Pl/I의 예외 처리 11.3 Ada의 예외 처리
10장 예외 처리 프로그래밍 언어론 10.6 Pascal과 C의 에러 처리 10.1 설계 주제 10.2 PL/I의 예외 처리
5 익셉션 처리.
DB와 WEB 연동(1) [2-Tier] Java Applet 이용
7. JavaBeans 프로그래밍 JavaBeans JavaBeans 만들기 Bean을 이용한 회원가입 양식 작성하기
16강. 자바 빈 빈 이란? 빈 만들기 빈 관련 액션 태그(useBean, getProperty, setProperty)
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
1장. JSP 및 Servlet을 활용한 동적 웹 프로그래밍 소개 제1장.
1. JSP(Java Server Pages) 소개
3 JSP의 기초.
7 JSP의 기초.
4 쿠키와 세션.
1강 01장. 웹과 자바.
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
6장. JSP 지시문 (Directives) 제6장.
중 간 고 사 (웹프로그래밍)
01. 직렬화와 역직렬화에 대하여 객체의 직렬화 직렬화와 역직렬화
24강. JSTL(JSP standard Tag Library)
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
강의 보조자료 & Homework #2 - 로그인과 이미지 카운터 만들기 -
12 ███████████ 12.
5. JSP의 내장객체1.
8 데이터베이스 사용하기.
12 데이터베이스 사용하기.
Cookie 와 Session.
Html(front end) & jsp(back end)
JDBC (Java Database Connectivity)
Web Socket.
10장. 자바빈(JavaBean) 이 장에서 배울 내용 : 화면에 표시를 담당하는 JSP페이지와 실제프로그램을 처리하는 로직을 분리하는 것에 대해서 학습한다. 하나의 JSP페이지 안에 디자인부와 로직부가 혼재하게 되면 프로그램의 협업과 유지보수가 어렵다. 자바빈은 로직을.
이장에서 배울 내용 : 화면에 표시를 담당하는 JSP페이지와 실제프로그램을 처리하는 로직을 분리하는 것에 대해서 학습한다
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
제 14 장 커스텀 태그 학기 인터넷비즈니스과 강 환수 교수.
JSP문법 JSP 기본 구조를 이해한다. 지시어, 스크립트릿 JSP 액션 태그 사용법을 익힌다. 한빛미디어(주)
표현언어와 커스텀태그 표현 언어의 개념을 이해한다. JSP1.2 커스텀 태그 개발 방법을 익힌다.
[INA470] Java Programming Youn-Hee Han
컴퓨터공학실습(I) 3주 인공지능연구실.
3장. 웹로직 서버에서의 서블릿과 JSP의 운용 3-1. 서블릿, JSP를 실행하기 전의 환경 설정
Internet Computing KUT Youn-Hee Han
자바 5.0 프로그래밍.
Internet Computing KUT Youn-Hee Han
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
Spring Security 2015 Web Service Computing.
4장 JSP 페이지의 디렉티브(Directive)
JSP Expression Language
Introduction to JSP & Servlet
제 11 장 자바빈즈를 이용한 JDBC 프로그래밍 학기 인터넷비즈니스과 강 환수 교수.
Java의 정석 제 7 장 객체지향개념 II-3 Java 정석 남궁성 강의
Internet Computing KUT Youn-Hee Han
Choi Younghwan CSE HUFS
Presentation transcript:

Internet Computing Laboratory @ KUT Youn-Hee Han Custom Tag Internet Computing Laboratory @ KUT Youn-Hee Han

What is Custom Tag? Custom Tag Custom Tag의 장점 종류 개발자가 필요에 의해서 자신이 스스로 개발하는 태그 JSP 코드의 복잡성을 줄여준다. 주로, Action Tag나 EL 및 JSTL 등으로도 그 복잡성이 해결이 안되는 내용을 별도의 자바 소스로 처리하고 실제 JSP 내에서는 태그하나로 그 내용을 처리하고자 할 때 사용한다. Custom Tag의 장점 한 번 작성한 커스텀 태그는 재사용이 가능하다. 프로그램의 가독성을 향상 시킬 수 있다. 업무의 효율성을 향상 시킬 수 있다. 종류 JSP 1.2 – 클래식 커스텀 태그 JSP 2.0 – SimpleTag & Tag File

Custom Tag 구현 방법 구현 방법 자바의 클래스 파일 기반으로 구현 (커스텀 태그 핸들러 이용) JSP 1.2 기반의 클래식 커스텀 태그 JSP 2.0 기반의 SimpleTag 태그 파일 기반으로 구현 JSP 2.0 기반의 태그 파일 자바 클래스파일 TLD 파일 (.tld ) web.xml JSP 페이지 태그파일 (.tag) JSP 페이지

수업시간에 다루는 내용 1. 커스텀 태그 라이브러리 2. 클래식 커스텀 태그 구현 1.1 커스텀 태그의 이익 1.2 커스텀 태그의 종류 1.3 커스텀 태그와 관련된 인터페이스 계층도 1.4 커스텀 태그의 구성 2. 클래식 커스텀 태그 구현 2.1 Tag 인터페이스와 IterationTag 인터페이스의 실행 방식 2.2 클래식, 단순 커스텀 태그 구현 2.3 클래식, 속성을 사용하는 커스텀 태그 2.4 클래식, 동적 속성을 사용하는 커스텀 태그(2.0) 2.5 클래식, 액션 태그를 사용하는 커스텀 태그(2.0) 2.6 클래식, 선택적으로 몸체 내용을 처리하는 커스텀 태그 2.7 클래식, 반복작업을 처리하는 커스텀 태그 2.8 클래식, 스크립트의 변수를 생성하는 커스텀 태그 2.9 클래식, 몸체 내용을 사용하는 커스텀 태그 2.10 클래식, 태그 간의 교류 2.11 예외 처리 태그

수업시간에 다루는 내용 3. JSP 2.0의 SimpleTag를 이용한 구현(2.0) 4. 손쉬운 커스텀 태그 구현: 태그 파일(2.0) 5. TLD 파일 정리 6. 커스텀 태그 배포하기

자바의 클래스 파일 기반 구현 - JSP 1.2 기법 -

Custom Tag 구현 방법 Tag Handler 관련 클래스 계층도 Body 내용을 처리하지 않을 경우 사용

클래스 파일 기반 구현 방법 자바의 클래스 파일 기반으로 구현 자바 클래스파일 TLD 파일 (.tld) web.xml JSP jsp2.0을 지원하는 tomcat부터는 생략가능 자바 클래스파일 TLD 파일 (.tld) web.xml JSP 페이지 TagHandler: 커스텀 태그 정의 ( 구조 , 로직 ) 자바클래스파일을 태그로 사용할 수 있도록 등록 JSP 페이지에서 사용할 수 있도록 TLD 파일 등록 태그 사용 WEB-INF\tlds 폴더에 저장한다.

중요 사항 Tag Handler 컴파일을 위한 sjc.bat 재정비 Tag Handler의 중요 메소드 doStartTag() JSP 내에서 커스텀 태그의 시작 태그를 만날 때 호출 doEndTag() JSP 내에서 커스텀 태그의 끝 태그를 만날 때 호출 doAfterBody() 태그의 몸체 내용을 처리한 뒤 호출한다. 이외 3,4개의 메소드 존재 (p.537의 표 20.1, 표 20.2) 참조 set CLASSPATH= set CLASSPATH=%CLASSPATH%;D:\jakarta-tomcat-5.0.19\webapps\2006777888 \WEB-INF\classes;D:\jakarta-tomcat-5.0.19\common\lib\servlet-api.jar; D:\jakarta-tomcat-5.0.19\common\lib\jsp-api.jar javac -d D:\jakarta-tomcat-5.0.19\webapps\2006777888\WEB-INF\classes %1

Java 파일 Tag Handler Java 파일 (p.539) /2006777888/WEB-INF/src/HeaderListTag.java package kut.ime.tag; import java.io.IOException; import java.util.Enumeration; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; public class HeaderListTag extends TagSupport { public int doStartTag() throws JspException { JspWriter out = pageContext.getOut(); … return SKIP_BODY; } public int doEndTag() throws JspException { return EVAL_PAGE;

Java 파일 Tag Handler Java 파일에서 return 상수 의미

TLD 파일 Tag Library Descriptor (TLD) 파일 (p.542) /2006777888/WEB-INF/tlds/classicStyle.tld <?xml version="1.0" encoding="euc-kr" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd” version="2.0"> <description>클래식 스타일의 커스텀 태그 예제</description> <display-name>클래식스타일예제</display-name> <tlib-version>1.0</tlib-version> <short-name>classicStyle</short-name> <uri>http://javacan.madvirus.net/jsp/classicTag</uri> <tag> <name>headerList</name> <tag-class>kut.ime.tag.HeaderListTag</tag-class> <body-content>empty</body-content> </tag> </taglib>

JSP 파일 구성 방법 커스텀 태그 사용 JSP 예 (p.544) /2006777888/headerList.jsp <%@ page contentType = "text/html; charset=euc-kr" %> <%@ taglib prefix="exam" uri="http://javacan.madvirus.net/jsp/classicTag" %> <html> <head><title>HeaderList</title></head> <body> 헤더 목록: <exam:headerList /> </body> </html> 개별적으로 알아서 붙여줌 tld 파일에서 <uri>…</uri>에 명시된 내용을 적어줌 tld 파일에서 <tag><name>…</name></tag>에 명시된 내용을 적어줌

Custom Tag 속성 처리 - Java 파일 Tag Handler Java 파일 (p.546) /2006777888/WEB-INF/src/HeaderTag.java package kut.ime.tag; import java.io.IOException; import java.util.Enumeration; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; public class HeaderTag extends TagSupport { private String name; private String defaultValue; public void setName(String name) { this.name = name; } public void setDefault(String defaultValue) { this.defaultValue = defaultValue; …

Custom Tag 속성 처리 - TLD 파일 Tag Library Descriptor (TLD) 파일 (p.548) /2006777888/WEB-INF/tlds/classicStyle.tld … <tag> <name>headerList</name> <tag-class>kut.ime.tag.HeaderTag</tag-class> <body-content>empty</body-content> </tag> <name>header</name> <attribute> <name>name</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>java.lang.String</type> </attribute> <name>default</name> <required>false</required> </taglib> 필수 옵션

Custom Tag 속성 처리 – JSP 파일 커스텀 태그 사용 JSP 예 – 속성 처리 /2006777888/header.jsp <%@ page contentType = "text/html; charset=euc-kr" %> <%@ taglib prefix="exam" uri="http://javacan.madvirus.net/jsp/classicTag" %> <html> <head><title>Header</title></head> <body> accept-language: <exam:header name="accept-language" /> <br> no-header: <exam:header name="no-header" /> <br> no-header(with default): <exam:header name="no-header" default="지원안함"/> <br> </body> </html> tld 파일에서 <uri>…</uri>에 명시된 내용을 적어줌 tld 파일에서 <tag><name>…</name></tag>에 명시된 내용을 적어줌

Custom Tag 동적 속성 처리 - Java 파일 Tag Handler Java 파일 (p.550) /2006777888/WEB-INF/src/DynamicTag.java package kut.ime.tag; import java.io.IOException; import java.util.Enumeration; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.DynamicAttributes; import javax.servlet.jsp.tagext.TagSupport; public class HeaderTag extends TagSupport implements DynamicAttributes{ private String kind; private Map dynamicAttr = new java.util.HashMap(); public void setKind(String value) { this.kind = value; } public void setDynamicAttribute(String uri, String localName, Object value) throws JspException { dynamicAttr.put(localName, value); …

Custom Tag 동적 속성 처리 - TLD 파일 Tag Library Descriptor (TLD) 파일 (p.552) /2006777888/WEB-INF/tlds/classicStyle.tld … <tag> <name>dynamicAttr</name> <tag-class>kut.ime.tag.DynamicTag</tag-class> <body-content>empty</body-content> <attribute> <name>kind</name> <required>true</required> </attribute> <dynamic-attributes>true</dynamic-attributes> </tag> </taglib>

Custom Tag 동적 속성 처리 – JSP 파일 /2006777888/dynaic.jsp <%@ page contentType = "text/html; charset=euc-kr" %> <%@ taglib prefix="exam" uri="http://javacan.madvirus.net/jsp/classicTag" %> <html> <head><title>동적 속성</title></head> <body> <exam:dynamicAttr kind=“색상“ red=“빨강” blue=“파랑” yellow=“노랑”/> <br> </body> </html>

Custom Tag 몸체 포함 처리 - Java 파일 Tag Handler Java 파일 (p.560) /2006777888/WEB-INF/src/isLoginTag.java package kut.ime.tag; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; public class HeaderTag extends TagSupport { public int doStartTag() throws JspException { HttpSession session = pageContext.getSession(); if (session == null) { return SKIP_BODY; } if (session.getAttribute("MEMBERID") == null) { } else { return EVAL_BODY_INCLUDE;

Custom Tag 몸체 포함 처리 - TLD 파일 Tag Library Descriptor (TLD) 파일 (p.561) /2006777888/WEB-INF/tlds/classicStyle.tld … <tag> <name>isLogin</name> <tag-class>kut.ime.tag.IsLoginTag</tag-class> <body-content>JSP</body-content> </tag> </taglib>

Custom Tag 몸체 포함 처리 – JSP 파일 /2006777888/login.jsp <%@ page contentType = "text/html; charset=euc-kr" %> <%@ taglib prefix="exam" uri="http://javacan.madvirus.net/jsp/classicTag" %> <% session.setAttribute("MEMBERID", "madvirus"); %> <exam:isLogin> 첫번째, 로그인하였습니다. </exam:isLogin> session.removeAttribute("MEMBERID"); 두번째, 로그인하였습니다. <p>두번째는 출력되지 않음. </body> </html>

Custom Tag 몸체 변경 처리 - Java 파일 /2006777888/WEB-INF/src/BodyChangeTag.java Tag Handler Java 파일 (교재 예제 아님, p574 참조) package kut.ime.tag; import java.io.IOException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.BodyContent; import javax.servlet.jsp.tagext.BodyTagSupport; public class BodyChangeTag extends BodyTagSupport { public int doStartTag() throws JspException { return EVAL_BODY_BUFFERED; } public int doEndTag() throws JspException { String content = bodyContent.getString(); if (content.equals("대한민국")) content = "Korea!!!"; if (content.equals("한국기술교육대학교")) content = "KUT!!!"; try { JspWriter out = pageContext.getOut(); out.print(content); } catch(IOException e) { throw new JspException(e); return EVAL_PAGE;

Custom Tag 몸체 변경 처리 – TLD & JSP 파일 Tag Library Descriptor (TLD) 파일 커스텀 태그 사용 JSP 예 /2006777888/WEB-INF/tlds/classicStyle.tld … <tag> <name>bodychange</name> <tag-class>kut.ime.tag.BodyChangeTag</tag-class> <body-content>tagdependent</body-content> </tag> </taglib> /2006777888/bodychange.jsp <%@ page contentType = "text/html; charset=euc-kr" %> <%@ taglib prefix="exam" uri="http://javacan.madvirus.net/jsp/classicTag" %> <html> <head><title>BodyChange</title></head> <body> 사랑해요! <exam:bodychange>대한민국</exam:bodychange></BR> 사랑해요! <exam:bodychange>한국기술교육대학교</exam:bodychange> </body> </html>

문제: 구구단 출력 커스텀 태그 문제] 다음과 같은 JSP를 구성할 수 있는 커스텀 태그를 구성하기 <%@ page contentType = "text/html; charset=euc-kr" %> <%@ taglib prefix="exam" uri="http://javacan.madvirus.net/jsp/classicTag" %> <html> <head><title>구구단</title></head> <body> <exam:gugu level=“2“/> <br> <exam:gugu level=“3“/> <br> <exam:gugu level=“4“/> <br> <exam:gugu level=“5“/> <br> . </body> </html>

자바의 클래스 파일 기반 구현 - JSP 2.0 기법 -

JSP 2.0: SimpleTag사용 SimpleTag를 사용한 Tag Handler 구현방법 실제 구현시에 SimpleTagSupport 클래스를 상속 받아 구현 하나의 메소드만 구현함 위 메소드는 커스텀 태그의 끝 태그를 만다면 실행 리턴형이 void임에 주의 즉, return EVAL_PAGE 등의 코딩은 필요 없음 출력할 내용은 다음과 같은 코드를 사용하여 출력함 즉, pageContext 변수 활용 못함 public class MySimpleTag extends SimpleTagSupport { … } public void doTag() throws JspException, IOException getJspContext().getOut().print(“……..”);

JSP 2.0: SimpleTag사용 SimpleTag를 사용한 Tag Handler 구현방법 몸체 내용은 getJspBody() 메소드를 통해 JspFragment로 전달받음 몸체 내용을 아무 변경 없이 response로 출력할 때 JspFragment의 invoke(null) 메소드 활용 몸체 내용을 저장하여 수정이 필요할 때… 주의: 위와 같이 몸체 내용을 얻어올 때, 몸체 내용으로 JSP Script는 사용 못함 즉, SimpleTag를 사용할 때 <body-content> 값으로 JSP를 가질 수 없음 JspFragment body = getJspBody(); body.invoke(null); StringWriter writer = new StringWriter(); JspFragment body = getJspBody(); body.invoke(writer); String bodyText = writer.toString();

SimpleTag 사용한 간단한 태그 처리 - Java 파일 Tag Handler Java 파일 (교재 예제 아님) /2006777888/WEB-INF/src/STag.java package kut.ime.tag; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.SimpleTagSupport; import java.io.IOException; public class STag extends SimpleTagSupport { public void doTag() throws JspException, IOException { getJspContext().getOut().print("Hello SimpleTag!"); }

SimpleTag 사용한 간단한 태그 처리 - TLD & JSP 파일 Tag Library Descriptor (TLD) 파일 SimpleTag 사용 JSP 예 /2006777888/WEB-INF/tlds/classicStyle.tld … <tag> <name>stag</name> <tag-class>kut.ime.tag.STag</tag-class> <body-content>empty</body-content> </tag> </taglib> /2006777888/simpletag.jsp <%@ page contentType = "text/html; charset=euc-kr" %> <%@ taglib prefix="exam" uri="http://javacan.madvirus.net/jsp/classicTag" %> <html> <body> <exam:stag/> </body> </html>

SimpleTag 사용한 몸체 변경 처리 - Java 파일 Tag Handler Java 파일 – 1/2 (교재 예제 아님) /2006777888/WEB-INF/src/MySimpleTag.java package kut.ime.tag; import javax.servlet.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import java.util.StringTokenizer; import java.io.*; public class MySimpleTag extends SimpleTagSupport { private String elemSep = ","; private String lineSep = ";"; public void doTag() throws JspException, IOException { StringWriter writer = new StringWriter(); JspFragment body = getJspBody(); body.invoke(writer); String bodyText = writer.toString(); StringBuffer tableOut = new StringBuffer(); StringTokenizer bodyTk = new StringTokenizer(bodyText, lineSep);

SimpleTag 사용한 몸체 변경 처리 - Java 파일 Tag Handler Java 파일 – 2/2 (교재 예제 아님) /2006777888/WEB-INF/src/MySimpleTag.java tableOut.append("<TABLE>"); while (bodyTk.hasMoreTokens()) { String str = bodyTk.nextToken(); StringTokenizer token = new StringTokenizer(str, elemSep); tableOut.append("<TR>"); while(token.hasMoreTokens()) { tableOut.append("<TD>"); tableOut.append((String)token.nextToken()); tableOut.append("</TD>"); } tableOut.append("</TR>"); tableOut.append("</TABLE>"); getJspContext().getOut().print(tableOut);

SimpleTag 사용한 몸체 변경 처리 - TLD & JSP 파일 Tag Library Descriptor (TLD) 파일 SimpleTag 사용 JSP 예 /2006777888/WEB-INF/tlds/classicStyle.tld … <tag> <name>changeTable</name> <tag-class>kut.ime.tag.MySimpleTag</tag-class> <body-content>tagdependent</body-content> </tag> </taglib> /2006777888/tablechange.jsp <%@ page contentType = "text/html; charset=euc-kr" %> <%@ taglib prefix="exam" uri="http://javacan.madvirus.net/jsp/classicTag" %> <html> <body> <exam:changeTable> 1,2,3,4; 2,12,3,9; </exam:changeTable> </body> </html>

Tag File - JSP 2.0 기법 -

태그 파일을 활용한 커스텀 태그 구현 특징 JSP 2.0 기반에서 제공하는 방법이다. 해당 태그파일이 내부적으로 태그 핸들러로 변환된다. 태그파일명이 JSP에서 사용하는 태그이름이 된다. 태그파일 (.tag) JSP 페이지 WEB-INF\tags 폴더에 저장한다.

tag 디렉티브 용도 사용법 속성들 태그 파일의 설정 정보를 기술하는데 사용된다. <%@ tag import=“java.io.*” pageEncoding=“EUC-KR” %> 속성들

Tag File 실습 예제 – body가 없는 경우 JSP File /2006777888/WEB-INF/tags/FirstTag.tag <%@ tag body-content="empty" pageEncoding="EUC-KR" %> 안녕하세요. Tag File 실습 예제입니다. /2006777888/FirstTagExam.jsp <%@ page contentType = "text/html; charset=euc-kr" %> <%@ taglib prefix="exam" tagdir="/WEB-INF/tags" %> <html> <body> <exam:FirstTag/> </body> </html>

Tag File 실습 예제 – body가 있는 경우 JSP File /2006777888/WEB-INF/tags/SecondTag.tag <%@ tag body-content="scriptless" pageEncoding="EUC-KR" %> 안녕하세요. Tag File 두번 째 실습 예제입니다. <jsp:doBody/> /2006777888/SecondTagExam.jsp <%@ page contentType = "text/html; charset=euc-kr" %> <%@ taglib prefix="exam" tagdir="/WEB-INF/tags" %> <html> <body> <exam:SecondTag>두번째 태그 파일!!!</exam:SecondTag> </body> </html>

attribute 디렉티브 용도 사용법 속성들 태그 파일에서 커스텀 태그의 속성을 명시한다. <%@ attribute name=“size” %> 속성들

Tag File 실습 예제 – 속성 처리 Tag File JSP File /2006777888/WEB-INF/tags/ThirdTag.tag <%@ tag body-content="scriptless" pageEncoding="EUC-KR" %> <%@ tag isELIgnored="false" %> <%@ attribute name="size" %> <font size="${size}" %> 안녕하세요. Tag File 세번 째 실습 예제입니다. <jsp:doBody/> </font> /2006777888/SecondTagExam.jsp <%@ page contentType = "text/html; charset=euc-kr" %> <%@ taglib prefix="exam" tagdir="/WEB-INF/tags" %> <html> <body> <exam:ThirdTag size="5">세번째 태그 파일!!!</exam:ThirdTag> </body> </html>

Dynamic Attribute 동적 속성으로만 접근 /2006777888/WEB-INF/tags/attrExam.tag <%@ tag body-content="empty" pageEncoding="euc-kr" %> <%@ tag dynamic-attributes="attr" %> ${attr.end}<BR> <c:out value="${attr.delimeter}"/><BR> ${attr.red}<BR> ${attr.blue}<BR> <c:out value="${attr.header}"/><BR> <c:out value="${attr.bottom}"/> <%--<%= end %>--%> /2006777888/tags/dynamicAttr.jsp <%@ page contentType = "text/html; charset=euc-kr" %> <%@ taglib prefix="tf" tagdir="/WEB-INF/tags" %> <html> <body> <tf:attrExam end="4" delimeter="<br>" red="빨강!" blue="파랑“> <jsp:attribute name="header">속성 사용방법</jsp:attribute> <jsp:attribute name="bottom">예제 완료</jsp:attribute> </tf:attrExam> </body> </html>

Dynamic Attribute 동적 속성과 정적 속성의 차이 /2006777888/WEB-INF/tags/attrExam.tag <%@ tag body-content="empty" pageEncoding="euc-kr" %> <%@ tag dynamic-attributes="attr" %> <%@ attribute name="end" required="true"%> <%@ attribute name="head" required="true"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 1. ${attr.end}<BR> 2. <c:out value="${attr.delimeter}"/><BR> 3. ${attr.red}<BR> 4. ${attr.blue}<BR> 5. <c:out value="${attr.head}"/><BR> 6. <c:out value="${attr.bottom}"/><BR> 7. <%= end %><BR> 8. <%= head %> 9. ${end} 10. ${head}