펌 - http://warmz.tistory.com/720
유형별 커스텀 태그 개발 방법
유형 | 개발 방법 |
- 태그 라이브러리로 개발 - 여러 사이트에 적용 - 개발된 커스텀 태그 배포 - 호환성 유지 | JSP 1.2 호환 개발 방법 |
- 많은 화면을 생성해내는 태그 - 비교적 간단한 기능들로 구성 - 단일 사이트에 적용 | 태그 파일 기반의 개발 방법 |
- 보다 쉬운 개발 - 태그 라이브러리로 개발 - 여러 사이트에 적용 - 공개 등 - 호환성 배제 | SimpleTag, simpleTagSupport 클래스를 이용한 개발 방법 |
JSP 1.2 커스텀 태그 구조
구성 요소 | 설명 |
태그 핸들러 클래스 (Tag Handler Class) | 자바 클래스 파일로 태그의 동작을 구현해놓은 파일이다. |
태그 라이브러리 기술자 (Tag Library Descriptor) | 태그 이름 등 태그 정보 및 태그 핸들러 클래스와의 관계를 기술한다. |
JSP 파일 | 커스텀 태그를 사용하기 위해서는 JSP 파일에 taglib 지시어 등 추가적인 작업이 필요하고, 실제 태그 라이브러리 기술자에 따라 커스텀 태그를 사용한다. |
태그 핸들러 클래스
메서드 | 설명 |
doStartTag() | 시작 태그를 만날 때 자동으로 호출되는 메서드 |
doEndTag() | 종료 태그를 만날 때 자동으로 호출되는 메서드 |
doAfterBody() | 태그 바디가 있을 때 처리를 위해 자동으로 호출되는 메서드 |
예제)
jspbook/ch10/MsgTagHandler.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | package jspbook.ch10; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; public class MsgTagHandler extends TagSupport { private static final long serialVersionUID = 1L; @Override public int doStartTag() throws JspException { try { JspWriter out = pageContext.getOut(); out.print( "커스텀 태그 출력 메시지 : Hello!!" ); } catch (IOException e) { e.printStackTrace(); } return SKIP_BODY; } } |
WebContent/tld/MsgTag.tld
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <? xml version = "1.0" encoding = "euc-kr" ?> xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/ version = "2.0" > < description >간단한 커스텀 태그 예제</ description > < tlib-version >1.2</ tlib-version > < jsp-version >1.2</ jsp-version > < short-name >MsgTag</ short-name > < tag > < name >hello</ name > < tag-class >jspbook.ch10.MsgTagHandler</ tag-class > < body-content >empty</ body-content > </ tag > </ taglib > |
<taglib> 설정을 위한 하위 태그 목록
태그 | 설명 |
<tlib-version> | 태그 라이브러리의 버전으로, 개발자에 의해 설정되는 부분. |
<jsp-version> | 적용되는 jsp 버전 |
<short-name> | 현재 태그 라이브러리의 간단한 이름 |
<uri> | taglib을 고유한 것으로 만들어주는 URI 정보 |
<display-name> | 출력에 사용되는 taglib 이름 |
<tag> | 커스텀 태그가 위치하는 부분 |
<description> | 태그 라이브러리에 대한 설명이 들어가는 부분 |
<tag> 설정을 위한 하위 태그 목록
태그 | 설명 |
<name> | 태그의 이름으로, 커스텀 태그 핸들러와 연결된다. |
<tag-class> | 커스텀 태그 핸들러 클래스 |
<body-content> | 태그 내 다른 태그를 가질 것인지, 아니면 JSP 문장이 올 수 있는지 등을 지정한다. - empty : body가 없는 태그. <xxx />와 같이 사용한다. - JSP : body 내용에 JSP 코드가 올 수 있다. <xxx>JSP코드</xxx> - tag-dependent : 태그 핸들러에 의해 처리된다. 또 다른 커스텀 태그가 올 수 있다. |
WebContent/ch10/MsgTagTest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/tld/MsgTag.tld" prefix="mytag"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>ch10 : 커스텀 태그 예제 - MsgTagTest</title> </head> <body> <center> <h2>ch10 : 커스텀 태그 예제 - MsgTagTest</h2> <hr><I><mytag:hello/></I> </center> </body> </html> |
'자바스토리' 카테고리의 다른 글
Serializable 과 transient (0) | 2016.03.09 |
---|---|
URL 에서 jsessionid 제거 방법 (0) | 2014.11.22 |
페이스북 공유하기 url 디버깅 페이지 (0) | 2014.05.15 |
자바 시리얼라이즈(Java Serializatoin) (0) | 2014.03.13 |
JSP PAGE 지시어 설명 (0) | 2014.02.04 |