JSP2010. 4. 9. 10:31

# 사용자 정의 태그(Custom tag = User Defined Tag)
-JSP에서 사용될 태그를 사용자가 직접 정의해서 사용
-JSTL은 사용자 정의 태그의 일부
-Tag인터페이스를 기반으로 하는JSP1.2 버전의 커스텀 태그의 SimpleTag인터페이스를 기반으로 하는JSP2.0버젼의 커스텀태그로 나눔.
-커스텀태그를 사용하면 태그의 재사용성이 증가하고, JSP개발이 간편해지며, 코드의 가독성을 향상 시켜주는 이익이 있다.
-계층도
       (i)JspTag
        |
  (i)Tag       (i)SimpleTag-(c)SimpleTagSupport
  (i)IterationTag-(c)TagSupport 
  (i)BodyTag-(c)BodyTagSupport

-커스텀 태그의 구성
 1) 태그클래스 : 태그가 할일(태그를 만나면 수행해야할 작업을 정의)
 2) TLD(Tag Library Descriptor) : XML로 만들어진 태그라이브러리(태그들의 모임)에 대한 서술자
 3) web.xml에 TLD에 대한 정의

- javax.servlet.jsp.tagtext.Tag인터페이스의 메소드
 1) void setPageCountext(PageContext pc)
 커스텀 태그가 포함된 JSP페이지의 pageContext를 설정
 2) int doStartTag() : 시작 태그를 만나면 해야할 작업을 정의
 3) int doEndTag() : 끝태그를 만나면 해야할 작업을 정의
 4) void release() : 태그클래스의 객체를 메모리에서 해제
 5) void setParent(Tag t) : 부모태그를 설정
 6) Tag getParent() : 부모태그를 획득
 
- javax.servlet.jsp.tagext.IterationTag 인터페이스의 메소드
 1)int doAfterBody() : 태그의 몸체내용을 처리한 후에 호출
 예) <pre:tagName> ==> doStartTag
   Body ...
  
   ----> doAfterBody
  </pre:tagName> ==> doEndTag
 
- javax.servlet.jsp.tagBodyContent클래스의 메소드
 1) String getString() : BodyContent의 내용을 문자열로 반환
 2) JspWriter getEnclosingWirter() : BodyContent의 내용을 출력스트림으로 반환
 3) void writeOut(Writer out) : BodyContent의 내용을 out 출력스트림으로 출력
 4) Reader getReader() : BodyContent의 내용을 읽어올 수 있는 Reader 반환
 5) void clearBody() : 몸체 내용을 삭제

 

 *Tag 파일
- JSP형식으로 태그핸들러 클래스
- 태그파일에서 사용할 수 있는 디렉티브
 1)tag : 태그파일의 설정 정보
 2)taglib : 태그파일내에서 사용할 태그라이브러리 설정 정보
 3)include : 태그파일에 다른 파일을 추가할 때 사용
 4)attribute : 태그파일이 입력받을 속성 설정
 5)variable: EL변수로 사용될 변수의 정보
-tag 디렉티브의 속성
 1)display-name : 표시 이름, tag를 표시할 수 있는 서버에서 표시하는 이름
 2)body-content : 이 태그가 바디를 포함할지
 3)dynamic-attributes : 동적 속성을 사용할 지
 4)description : 태그에 대한 설명
 5)import : 이 태그파일에서 사용할 클래스
 6)pageEncoding : 이 태그파일의 인코딩 방식
 7)isELIgnored : EL 무시 할지
-tag 파일에서 사용가능한 내장 객체
 1) jspContext : jsp파일에 대한 정보, getAttribute, setAttribute
 2) request, response, session, application, out
--attribute 디렉티브의 속성
 1)description : 설명
 2)name : 속성명
 3)required : 속성이 필수속성인지
 4)rtexprvalue : 표현식(EL)사용가능 여부
 5)type : 속성값의 타입
 6)fragment : 속성값 전달시 사용

-variable 디렉티브의 속성
 1)description : 설정
 2)name-given : EL변수의 이름을 속성의 값으로 사용
 3)name-from-attribute : 속성의 값을 EL변수의 이름으로 사용
 4)alias : name-from-attribute가 있을때만 사용. Tag파일에서  커스텀 태그의 몸체에서 사용될 변수와 값을 가지는 EL변수의 이름.
 5)variable-class : 변수의 타입
 6)scope : 변수의 유효범위
  -AT_BEGIN : 시작 태그부터 사용가능
  -NESTED : 태그내에서 사용가능
  -AT_END : 끝태그 후 부터 사용가능
 * 2) 3)은 둘중 하나만 사용해야함. 중복 사용 불가
 

 

 

 

   

Posted by Tiwaz