본문 바로가기

Java Programming/Jsp

태그 라이브러리 서술파일(Tag Library Descriptor TLD)

앞에서와 같이 태그 핸들러를 만들었으면, 그 클래스를 TLD(Tag Library Descriptor)에 등록해야 합니다. 앞에서도 설명했듯이 TLD는 XML태그의 이름에 태그 핸들러를 연관시켜서 특정태그가 호출될 때 그에 맞는 태그 핸들러를 사용하도록 서버에게 알려주는 역할을 합니다. TLD 파일은 XML 문서로 작성되며, 라이브러리에 대한 설명 및 정보, 태그의 정보들로 이루어집니다. 그럼 앞에서 작성한 태그 핸들러를 처리해 주는 간단한 TLD를 살펴보고 계속 설명 드리겠습니다.

 

noveltag.tld

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<!DOCTYPE taglib 
        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" 
  "http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd"

<taglib> 
  <tlib-version>1.0</tlib-version> 
  <jsp-version>1.2</jsp-version> 
  <short-name>noveljsp</short-name> 
  <uri></uri> 
  <description> 
  novel jsp simple Hello Tag 
  </description> 
  <tag> 
    <name>hello</name> 
    <tag-class>tags.HelloTag</tag-class
    <description>say Hello~ </description> 
  </tag>    
</taglib>

 

보다시피 TLD 파일은 XML 표준을 따르는 XML 문서입니다. XML 버전을 정의해 주고, DOCTYPE을 지정하는 부분 등은 모든 TLD 파일에서 똑같으니 하나만 만들어서 재사용하던지, 톰캣의 example 폴더에 있는 것을 사용하면 됩니다.

 

태그 라이브러리 서술 파일은 웹 애플리케이션 어느 곳에 위치해도 상관없지만, 보통 관리가 편하게 하기 위해서 JSP 파일과 같은 디렉토리에 위치시킵니다. 그리고 그 태그 라이브러리 서술파일이 가리키는 태그 핸들러는 classes 폴더아래에 패키지 형태로 만들어두어야 합니다.

 

위에서 보듯 TLD에서 최상위의 엘리먼트(element)는 <taglib>엘리먼트입니다. 그리고 그 하위로 6개의 엘리먼트가 있는데 그것을 정리해 보면 다음과 같습니다.

 

<taglib>엘리먼트의 하위 엘리먼트들

<tlibversion> : 태그 라이브러리의 버전을 표시합니다.

<jspversion> : 태그 라이브러리가 사용하는 JSP의 버전을 표시합니다.

<shortname> : 태그 라이브러리의 별명을 나타내며, 컨테이너등에서 쓰이게 됩니다.

<uri>        : 태그 라이브러리에 대한 추가적인 URL을 나타내며 생략해도 됩니다.

<description>: 태그 라이브러리에 대한 간단한 정보를 기술합니다.

<tag>       :  태그 라이브러리에서 하나의 동작을 의미합니다.

 

 이중에서도 가장 눈 여겨 보아야 할 것이 <tag>엘리먼트로서 이것을 통하여 각 커스텀 태그의 속성을 설정할 수 있습니다. <tag>엘리먼트는 다시 여섯 개의 하위 엘리먼트를 가질 수 있습니다.

 

<tag>엘리먼트의 하위 엘리먼트들

<name>

<tagclass>

 

<teiclass>

<bodycontent>

 

 

<description>

<attribute>

 

<name>

<required>

<rtexprvalue>

태그의 식별자로서, 커스텀 태그의 이름을 설정합니다.

태그 핸들러   : 클래스를 명시합니다. 주의해야 할 점은 패키지를 포함한 클래스 이름 전체를 명시해야 된다는 것입니다.

Helper클래스를 명시합니다. 생략해도 됩니다.

body타입을 지정하는 것으로, 본체가 없으면 EMPTY, 태그 핸들러가

직접 본체를 처리하면 TAGDEPENDENT 그리고 JSP가 해석할 본체면 JSP를써 줍니다.

태그에 대한 간단한 정보를 기술합니다.

태그가 속성을 가지게 될 경우 지정합니다.하위로 다음의 세가지

  엘리먼트를 가집니다.

: 속성의 이름을 정의

: 커스텀 태그에 이속성이 반드시 필요한지(true) 생략가능한지(false) 결정

: <%= 표현식 %>으로 속성이 설정될 수 있는지 결정. 기본값은 false이며 생략 가능

 

이상의 엘리먼트들에 대한 설명을 바탕으로 위에서 만들어놓은 novletag.tld 파일을 보면, hellotag가 호출되었을 때 그것을 tags.HelloTag 클래스 즉, 태그 핸들러로 보내어 처리하라는 것입니다.  그럼 이것들을 바탕으로 다음에는 JSP에서 만들어 놓은 커스텀 태그들을 직접 사용해 보겠습니다.