커스텀 태그
* 스크립트 요소가 많아져 코드가 복잡해지는 것을 막기 위해 커스텀 태그를 사용한다.
* 사용자가 원하는 목적에 맞게 새로운 태그를 만들어 사용할 수 있는 기능.
커스텀 태그의 장점
* 재사용
▷ 한 번 작성한 커스텀 태그는 어떤 JSP 컨테이너에서도 사용할 수 있다.
* 쉽고 단순한 코드 작성
▷ 자바 코드에 익숙하지 않은 개발자들도 커스텀 태그를 사용하면 쉽게 JSP 페이지를 작성할 수 있다.
* 코드의 높은 가독성
▷ 커스텀 캐그는 뚜렷한 목적을 갖고, 사용시에는 스크립트 태그를 줄일 수 있기 때문에 코드의 가독성이 향상된다.
* 개발자와 JSP 코드를 봐야하는 UI 개발자가 코드를 이해하는데 도움이 된다.
커스텀 태그 종류
* 구현하는 방법 3가지
▷ JSP 1.2 스타일로 구현. 자바 기반 커스텀 태그
▷ JSP 2.0 이상의 SimpleTag를 사용해 구현. 자바 기반 커스텀 태그
▷ JSP 2.0 이상의 태그 파일을 사용해 구현. JSP와 유사한 방식으로 커스텀 태그를 구현.
태그 파일을 이용한 커스텀 태그 구현
* 태그 파일이 나타나기 전까지는 자바 코드를 클래스 파일로 만들고, TLD 파일을 작성하고 web.xml 파일에 TLD 관련 정보를 기술해야 했다.
* 태그 파일 : JSP 문법을 사용해서 커스텀 태그로 동작할 수 있도록 만들어진 소스 코드
1) 기본
* JSP와 동일한 문법을 사용하며, 커스텀 태그 클래스로 변환한다.
* JSP의 몇가지 디렉티브와 태그 파일을 위한 디렉티브를 사용할 수 있다.
* 태그 파일에서 사용할 수 있는 디렉티브
디렉티브 |
설명 |
tag |
JSP 페이지의 page 디렉티브와 동일하다. 태그 파일의 정보를 명시한다. |
taglib |
태그 파일에서 사용할 태그 라이브러리를 명시할 때 사용한다. |
include |
태그 파일에 특정한 파일을 포함시킬 때 사용한다. 단, 태그 파일에 포함되는 파일은 태그 파일에 알맞은 문법으로 작성해야 한다. |
attribute |
태그 파일을 커스텀 태그로 사용할 때 압력받을 속성을 명시한다. |
variable |
EL 변수로 사용할 변수에 대한 정보를 지정한다. |
* tag 디렉티브 속성
속성 |
설명 |
display-name |
태그 파일을 도구에서 보여줄 때 사용될 이름을 지정한다. 기본값은 확장자 ".tag"를 제외한 태그 파일의 나머지 이름이다. (선택) |
body-content |
몸체 내용의 종류를 입력한다. empty, tagdependent, scriptless(기본값)의 세 가지 값 중 하나를 사용할 수 있다. (선택) |
dynamic-attribute |
동적 속성을 사용할 때, 속성의 <이름, 값>을 저장하는 Map 객체를 page 범위의 속성에 저장할 때 사용할 이름을 지정한다. EL에서 변수 이름으로 사용할 수 있다.(선택) |
description |
태그에 대한 설명을 입력한다. (선택) |
import |
page 디렉티브의 import 속성과 동일하다 (선택) |
pageEncoding |
page 디렉티브의 pageEncoding 속성과 동일하다. (선택) |
isELIgnored |
page 디렉티브의 isELIgnored 속성과 동일하다. (선택) |
deferredSyntaxAllowedAsLiteral |
page 디렉티브의 deferredSyntaxAllowedAsLiteral 속성과 동일하다. (선택) |
trimDirectiveWhitespace |
page 디렉티브의 trimDirectiveWhitespace 속성과 동일하다. (선택) |
2) 태그 파일 위치 | 태그 파일 참조 방법
* 태그 파일 위치 : WEB-INF/tags 폴더에 위치한다.
▷ 위 폴더에 위치한 .tag 확장자나 .tagx 확장자를 갖는 파일만 태그 파일로 인식한다.
* 태그 파일 참조 : WEB-INF/tags/util 폴더에 있는 Exam.tag 파일을 참조하려면
<%@ taglib prefix="tf" tagdir="/WEB-INF/tags/util" %>
...
< tf : Exam ...> ... </tf : Exam>
3) 태그 파일에서 사용가능한 기본 객체
* jspContext : pageContext가 제공하는 setAttribute(), getAttribute() 메소드를 그대로 제공하며, 각 속성과 관련된 작업을 처리한다.
* request : JSP의 객체와 동일
* response : JSP의 객체와 동일
* session : JSP의 객체와 동일
* application : JSP의 객체와 동일
* out : JSP의 객체와 동일
'WEB > JSP Servlet' 카테고리의 다른 글
서블릿 : 기본 (0) | 2016.11.21 |
---|---|
JDBC : 기초 (0) | 2016.11.21 |
JDBC : 기초 (0) | 2016.11.05 |
표현언어(EL) 비활성화 방법 (0) | 2016.11.05 |
표현언어 : 람다식, 스트림 API (0) | 2016.11.04 |