JSP Tag Libraries - Custom tags

[구성 요소]

1. 태그 라이브러리 설명 파일 :TLD 파일 (Tag Library Descriptior File)

- 태그 라이브러리가 포함하고 있는 태그들에 대한 정보가 들어 있는 파일

- 확장자 .tld , WEB-INF 디렉토리 내에 위치

- 서블리/JSP 컴파일러가 커스텀 태그를 사용한 JSP 문서로부터 서블릿 코드를 생성할 때 커스텀 태그가 제대로 사용되었는지 그 유효성을 검사하는 데 이용

- 서블릿 코드로의 컴파일을 보다 빨리 수행하기 위한 것

- <taglib>태그를 사용하여 태그 라이브러리에 대한 정보와 개별 커스텀 태그에 대한 정보로 구성

[taglib의 서브 엘리먼트]

태그

설명

<tlibversion>

사용자가 만든 태그 라이브러리의 버전

<jspversion>

JSP의 스펙 버전

<short-name>

태그 라이브러리의 이름(알파벳으로 시작, 공백문자 포함할수 없다)

<info>

태그 라이브러리에 대한 설명

<uri>

태그 라이브러리에서 공개적으로 사용하는 TLD파일의 URL 명시

<display-name>

선택적

<small-icon>

선택적

<large-icon>

선택적

<description>

선택적, 요약 설명

<listener>

이벤트 리스너 클래스들에 대한 정의 태그

<tag>

태그 핸들러 클래스에 대한 정보 정의 태그

 

[Tag의 서브 엘리먼트]

<tag>

하나의 커스텀 태그에 대한 정보를 기술

<name>

커스텀 태그의 이름

<tag-class>

커스텀 태그의 동작을 구현하는 태그 핸들러의 클래스 이름으로 WEB-INF/cases 디렉토리를 기준으로 클래스의 경로가 표현되어야 한다.

<tei-class>

Javax.servlet.j네.tagext.TagExtraInfo의 하위클래스, 선택적

<body-content>

empty의 경우 몸체가 없는 형식,  jsp가 기본값

tagdependent값의 경우 임베디드 sql 문 같이 태그 구현에서 직접 해석해야 되는 경우이다.

<info>

커스텀 태그에 대한 설명

<small-icon>

선택적

<large-icon>

선택적

<description>

선택적

<variable>

변수 정보

<attribute>

속성 정보

 

[attribute의 서브 엘리먼트]

태그

설명

<name>

속성 이름, 필수

<required>

속성 필수 여부, 기본값 false, 선택적

<rtexprvalue>

속성값 표현식 실행 여부, 기본값 false, 선택적

<type>

전달 속성 데이터형, 기본값 java.lang.String, 선택적

 

[variable의 서브 엘리먼트]

태그

설명

<name-given>

변수 이름, 필수

<variable-class>

변수 타입, 기본값 java.lang.String, 선택적

<declare>

변수 선언 여부, 기본값 true, 선택적

 

2. 태그 동작을 수행하는 클래스 파일들 : 태그 핸들러(Tag Handler)

- 커스텀 태그를 구현하는 클래스

<네임스페이스:태그이름 속성1=”값” 속성2=”값”…>

몸체

</네임스페이스:태그이름>

-<일반적인 태그 핸들러의 동작>

   태그 핸들러의 속성 설정

   doStartTag()메소드의 실행

   doAfterBody() 메소드의 실행(BodyTagSupport 상속을 받은 경우)

   doEndTag()메소드의 실행

   release()메소드의 실행

- 리소스 풀에 인스턴스로 존재하며,태그 수행 요청이 들어올 때마다 태그를 실행하므로 필드값 유지에 신경써야 한다.

- extends로 상속한 TagSupport에서 정해 놓은 pageContext 필드를 통해서, JSP페이지의 내장 객체들을 불러올 수 있다.

- pageContext.getResponse()메소드를 이용하여 response 내장 객체를 가져와서 태그핸들러 클래스에서 헤더에 캐시에 대한 내용을 지정할 수 있다.

- pageContext.getRequest()메소드를 이용하여 request 내장 객체를 가져와서 태그핸들러 클래스에서 인코딩등을 처리할 수 있다.

- pageContext.getOut()메소드를 이용하여 JSP 페이지의 out 내장 객체를 가져와서 태그핸들러 클래스에서 JSP 쪽으로 출력하는 코드를 처리할 수 있다.

- attribute을 받아서 해당되는 값에 따라 동적으로 태그의 내용에 반영할 수 있다. 커스텀 태그의 속성은 tld에서 명칭, 종류, 형식, 수량을 정해주고, 태그 핸들러에는 속성에 대한 필드와 접근할 수 있는 메소드를 만들어 놓는다. 자바 빈즈의 프로퍼티와 유사

 


3. 태그 핸들러를 도와주는 클래스 파일들 : 헬퍼 클래스(Helper Class)

4. TLD 파일의 내용을 참조하는 클래스 파일들 : 보조 클래스(Auxiliary Class)

 

<태그의 동작 구조>

파싱 -> 검증 -> 변환 -> 실행

 

'Jsp-Servlet > Jsp' 카테고리의 다른 글

404, 500 error등의 처리  (1) 2011.12.09
Excel Download 공통단  (1) 2011.11.17
quartz setting (servlet 이용)  (3) 2011.10.31
jstl el 특이한 명령어들..  (4) 2011.01.09
jstl, el, fn 정리  (2) 2010.05.27