[구성 요소]
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 Tag Libraries - Custom Tags |작성자 thdusin
'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 |