ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [WEB:] 커스텀 태그
    비전공자 공부일기/:: WEB & Front-End 2019. 8. 19. 15:11

    커스텀 태그는 이름에서 알 수 있듯 사용자 목적에 맞게 새로운 태그를 생성하여 사용할 수 있는 태그이다.

    보통 스크립트 요소가 많아져서 코드가 복잡해지는 것을 막기 위해 사용한다.

    한 번 작성한 커스텀 태그는 다른 JSP 컨테이너에서도 사용할 수 있기 때문에 재사용이 용이하다.

     

     

    다음 네 가지는 https://tomcat.apache.org/download-taglibs.cgi 에서 다운로드한 jar 파일들이다.

    개발자들이 공통으로 사용할 수 있는 커스텀 태그를 이용할 수 있다.

     

    taglibs-standard-compat-1.2.5.jar
    0.05MB
    taglibs-standard-impl-1.2.5.jar
    0.20MB
    taglibs-standard-jstlel-1.2.5.jar
    0.16MB
    taglibs-standard-spec-1.2.5.jar
    0.04MB

     

    파일을 복사해  웹 프로젝트 > WEB-INF > lib  에 붙여넣기 하면 자동으로 빌드된다.

     

     

    < 커스텀 태그 사용하는 방법 >

     

    1) 태그 클래스를 만든다

    --> 태그 클래스란? : JSP 문서에서 커스텀 태그를 사용할 경우 원하는 기능을 제공해주는 클래스

     

    2) 인터페이스를 상속받는다

    ---> TagSupport, BodyTagSupport, SimpleTagSupport 등

     

    3) 부모 메소드 오버라이드

    ---> doStartTag(), doEndTag()

     

    tld 파일

    tld란? : tag library desripter 의 약자.

     

    tld 파일은 xml 파일을 이용해 만들어야 하는데, 태그를 만들어주기 위한 여러 규칙들이 필요하므로 그냥 만들면 안 된다! >> new > xmlfile> 파일명.tld > finish 말고 next 눌러 Create XML file from an XML schema file 을 체크 > next 누르면 Select XML Catalog entry 클릭하면 기본적으로 WAS가 제공해주는 스키마 파일들이 나옴(?) > http://java.sun.com/xml/ns/web-jsptaglibrary 어쩌구를 클릭 > next 누르면 Namespace Information 중에서 javaee 를 선택하고 edit > Prefix에 적힌 것 지워주기(얘가 붙으면 tld 파일 사용시 몇 가지 제약이 생기므로 no prefix로 만들어줌) > finish

     

    <?xml version="1.0" encoding="UTF-8"?>
    <taglib version="2.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd ">
      <tlib-version>token</tlib-version>
      <short-name>NMTOKEN</short-name>
    </taglib>
    
    
    
    <?xml version="1.0" encoding="UTF-8"?>
    <taglib version="2.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd ">
    	<description></description> : 커스텀 태그에 대한 설명
    	<tlib-version>1.0</tlib-version> : 몇 번 고쳤는지
        <short-name>simple</short-name> : 간단한 이름 부여
    </taglib>
    
    ** 스키마 파일은 굉장히 강력한 규칙을 제공하므로, 선언해주는 내용의 순서까지도 지켜줘야 함

     

    <description> : tld 파일에 등록된 커스텀 태그에 대한 설명을 설정하는 엘리먼트

    <tlib-version> : tld 파일의 버전 정보를 설정하는 엘리먼트

    <short-name> : tld 파일의 이름을 설정하는 엘리먼트

     

    url : JSP 문서에서 tld 파일을 불러 사용하기 위한 고유값을 설정하는 엘리먼트

    => 다른 tld 파일의 uri 엘리먼트갑소가 중복될 경우 에러 발생

     

    <tag> : 태그 클래스를 커스텀 태그로 설정하기 위한 상위 엘리먼트

    --- <name> : 커스텀 태그명을 설정하기 위한 엘리먼트

    --- <tag-class> : 커스텀 태그를 사용할 경우 실행될 태그 클래스를 설정하기 위한 엘리먼트

    --- <body-content> : 커스텀 태그의 내용을 설정하기 위한 엘리먼트

    >> 바디 컨텐트 태그 안에 empty라고 써주게 되면 태그 내용이 없는 커스텀 태그를 설정하겠다는 뜻

    --- <attribute> : 커스텀 태그 속성을 설정하기 위한 상위 엘리먼트

    ----- <name> : 커스텀 태그의 속성명을 설정하기 위한 엘리먼트

    ----- <required> : 필수 속성 여부를 설정하기 위한 엘리먼트(* false : 선택속성(기본), true : )

     

     

    태그를 등록하고 난 뒤 WAS를 restart 시켜주어야 tld 파일을 읽어들일 수 있다.

     

     

     

     

     

     

    참고 블로그

    https://bravesuccess.tistory.com/128

     

     

     

    댓글

coding wanee