2010. 8. 5. 15:19
반응형
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
Posted by seongsland