-
[WEB:] 커스텀 태그비전공자 공부일기/:: WEB & Front-End 2019. 8. 19. 15:11
커스텀 태그는 이름에서 알 수 있듯 사용자 목적에 맞게 새로운 태그를 생성하여 사용할 수 있는 태그이다.
보통 스크립트 요소가 많아져서 코드가 복잡해지는 것을 막기 위해 사용한다.
한 번 작성한 커스텀 태그는 다른 JSP 컨테이너에서도 사용할 수 있기 때문에 재사용이 용이하다.
다음 네 가지는 https://tomcat.apache.org/download-taglibs.cgi 에서 다운로드한 jar 파일들이다.
개발자들이 공통으로 사용할 수 있는 커스텀 태그를 이용할 수 있다.
taglibs-standard-compat-1.2.5.jar0.05MBtaglibs-standard-impl-1.2.5.jar0.20MBtaglibs-standard-jstlel-1.2.5.jar0.16MBtaglibs-standard-spec-1.2.5.jar0.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
'비전공자 공부일기 > :: WEB & Front-End' 카테고리의 다른 글
[WEB:] mybatis 마이바티스 시작하기 - 설치 및 설정 (2) 2019.08.21 [WEB:] JSTL (0) 2019.08.19 [Web:] 자바 표현언어 EL(Expression Language) (0) 2019.08.19 [WEB:Model2] 컨트롤러 만들기2 (0) 2019.08.13 [WEB:Model2] Model2를 만들 때 알아두어야 할&주의사항 (0) 2019.08.13