제 14 장 커스텀 태그
description
Transcript of 제 14 장 커스텀 태그
제 14 장
커스텀 태그
2008 2 학기
인터넷비즈니스과 강 환수 교수
커스텀 태그
정의 반복적으로 사용되는 조건 , 반복 등의 제어흐름과 다양한 태그의 표현 부분을 하나의 새로운 태그로 정의하여
사용할 수 있는 XML 유형의 사용자 정의 태그
2
커스텀 태그 생성
커스텀 태그 만드는 방법
3
버전 이름 특징
JSP 1.2JSP 1.2
태그 처리기자바 프로그래머에게 적합하고 , 상대적으로 다소 복잡하며 ,
JSP 2.0 을 사용할 수 없는 경우 사용
JSP 2.0
JSP 2.0태그 처리기
자바 프로그래머에게 적합하며 , JSP 1.2 태그 처리기에 비해 한결 간편해짐
태그 파일 JSP 프로그램과 유사하며 표현언어와 JSTL 에 익숙한 프로그래머에게 적합
이름 구현 인터페이스 또는상속 클래스
구현 파일 구현 방법
JSP 1.2태그 처리기
javax.servlet.jsp.tagext.Tagjavax.servlet.jsp.tagext.TagSupport
자바 파일 Tag 또는 TagSupport 를 상속받은 자바 클래스 구현
JSP 2.0태그 처리기
javax.servlet.jsp.tagext.SimpleTagjavax.servlet.jsp.tagext.SimpleTagSupport
자바 파일SimpleTag 또는
SimpleTagSupport 를 상속받은 자바 클래스 구현
태그 파일 확장자가 tag 인 태그 파일 태그 파일 JSP 프로그램과 같은 태그 파일 구현
JSP 2.0 커스텀 태그 개요
커스텀 태그 작성 절차
클래스 SimpleTagSupport
4
순서 이름 장소 파일
확장자 내용
1 태그 처리기 (Tag Handler) [Resource: src] *.java태그를 처리하는 자바 파일로 클래스
SimpleTagSupport 를 상속 ( 확장 ) 하여 작성
2태그 라이브러리 기술자
(TLD)[WEB-INF/tld] *.tld
1 에서 만든 태그를 JSP 페이지에서 사용할 수 있도록 태그 이름을 등록하는 절차
3 태그 활용 JSP 프로그램 [WebContent] *.jsp2 에서 등록한 태그이름을
taglib 지시자를 사용하여 이용
반환 유형 메소드 설명
void doTag()태그가 수행해야 할 일을 처리하는 메소드로 ,
태그 처리 클래스에서 오버라이딩 (overriding) 해서 구현
JspFragment getJspBody() 태그의 몸체 부분을 반환
JspContext getJspContext()페이지 context 를 반환하며 , 주로 getJspContext.getOut()
을 통해 출력에 사용할 JspWriter 객체를 얻음
문자열 출력 커스텀 태그 작성 절차
<myfirsttag:hello /> 태그 hello 는 몸체는 없으며
문자열 “ Hello Custom Tag!!!”를 출력
필요 파일
5
순서 이름 장소 파일 이름1 태그 클래스 작성 [Java Resources: src] HelloCustomTag.java
2 TLD 작성 [WEB-INF/tld] HelloCustomTag.tld
3 태그 활용 JSP 작성 [WebContent] HelloCustomTag.jsp
커스텀 태그를 위한 자바 파일 작성
HelloCustomTag.java
6
TLD 파일과 JSP 파일 작성
TLD 파일JSP 파일
7
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"><title> 커스텀 태그 </title></head><body> <%@ taglib uri="/WEB-INF/tld/HelloCustomTag.tld" prefix="myfirsttag" %>
<H2> 첫 커스텀 태그 예제 </H2><center><HR><myfirsttag:hello /></center>
</body></html>
속성이 있는 커스텀 태그 만들기
테이블 출력 커스텀 태그 작성 절차
8
순서 이름 장소 파일 이름 비고
1 태그 처리기 [Java Resources: src] SelectStudentTag.java 속성에 대한 setter getter
2 TLD [WEB-INF/tld] SelectStudentTag.tld 속성 처리
3 태그 활용 JSP 프로그램 [WebContent] SelectStudentTag.jsp
태그 파일 개요
태그 파일의 장점 자바에 익숙하지 않은 비개발자도 재사용이 가능한 커스텀
태그를 작성 프로그래머도 더 쉽게 작업 HTML 코드와 같은 표현 부분이 많은 모듈을 태그로 만든다면
태그 처리기 방식보다 적합
태그 파일로 커스텀 태그 작성 절차
9
순서 이름 장소 파일 확장자 설명
1 태그 파일 (Tag File) [WEB-INF/tags] *.tag태그를 처리하는 태그 파일로 JSP 파일과
비슷해 작성이 쉽고 , 간단함
2 태그 활용 JSP 프로그램 [WebContent] *.jsp위에서 만든 태그 파일 이름을 태그로
사용하며 , taglib 지시자를 사용하여 이용
문자열 출력 커스텀 태그 작성 절차
<mytag:hello /> 태그 hello 는 몸체는 없으며 문자열 “ Hello Custom Tag using
Tag File !!!” 를 출력하는 태그
10
순서 이름 장소 파일 이름
1 태그 파일 [WEB-INF/tags] hello.tag
2 태그 활용 JSP 프로그램 [WebContent] HelloCustomTagFile.jsp
태그 파일로 만드는 구구단 커스텀 태그
구구단 커스텀 태그 작성 절차
11
순서 이름 장소 파일 이름
1 태그 파일 [WEB-INF/tags] multiplication.tag
2 태그 활용 JSP 프로그램 [WebContent] multiplicationtable.jsp
Multiplication.tag
12
<%@ tag body-content="scriptless" pageEncoding="euc-kr" description=" 구구단 (multiplication table) 출력태그 "%>
<%@ attribute name="begin" %><%@ attribute name="end" %><%@ attribute name="bgcolor" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:if test="${empty(begin)}" var="bool">
<c:set var="begin" value="2" /></c:if>
<c:if test="${empty(end)}" var="bool"><c:set var="end" value="9" />
</c:if>
<c:if test="${empty(begin)}" var="bool"><c:set var="bgcolor" value="white" />
</c:if> <center><H2><jsp:doBody /></H2>
<table width=100% border=1 cellpadding=1 bgcolor="${bgcolor}" ><c:forEach var="i" begin="${begin}" end="${end}" >
<tr align="center" ><c:forEach var="j" begin="1" end="9" >
<td>${i} * ${j} = ${i * j}</td></c:forEach>
</tr></c:forEach></table>
</center><p><hr>
JSP 프로그램과 결과
13
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"><title> 커스텀 태그 </title></head><body> <h2> 태그 파일을 이용한 커스텀 태그 : multiplication </h2><hr>
<%@ taglib tagdir="/WEB-INF/tags" prefix="mytag" %>
<mytag:multiplication>구구단 (2 단에서 9 단까지 )</mytag:multiplication>
<mytag:multiplication end="5" bgcolor="linen">구구단 (2 단에서 5 단까지 )</mytag:multiplication>
<mytag:multiplication begin="3" end="7" bgcolor="yellow">구구단 (3 단에서 7 단까지 )</mytag:multiplication>
</body></html>
www.dongyang.ac.kr