[JSP] 커스텀 태그 개념 및 예제
- 웹 개발/JSP
- 2019. 8. 18. 16:54
커스텀 태그
- 스크립트 요소(스크립틀릿, 표현식 등)가 많아질수록 JSP 코드는 복잡해진다.
- 커스텀 태그를 이용하여 위 문제점을 해결
- JSTL이 표준 커스텀 태그인데 이처럼 코드의 가독성을 높여주는 방법
- JSP tag 파일을 생성해서 사용할 수 있음.
태그파일에서 사용할 수 있는 디렉티브들
디렉티브 | 설명 |
tag | JSP 페이지의 page 디렉티브와 동일. 태그바일의 정보를 명시. |
taglib | 태그파일에서 사용할 태그라이브러리를 명시. 사용법은 JSP 페이지와 동일 |
include | JSP 페이지와 마찬가지로 태그 파일에 특정한 파일을 포함시킬 때 사용. |
attribute | 태그 파일을 커스텀 태그로 사용할 때 입력받을 속성을 명시. |
variable | EL 변수로 사용할 변수에 대한 정보 저장. |
tag디렉티브 속성
속성 | 설명 |
display-name | 태그파일을 도구에서 보여줄 때 사용될 이름을 지정. 기본값은 확장자 ".tag"를 제외한 태그파일의 나머지이름이다. |
body-content | 몸체 내용의 종류를 입력. empty, tagdependent, scriptless의 세가지 값중 하나를 사용. |
dynamic-attributes | 동적 속성을 사용할 때, 속성의 <이름, 값>을 저장하는 Map 객체를 page 범위의 속성에 저장할 때 사용할 이름을 지정한다. |
description | 태그에 대한 설명 |
import | page 디렉티브에서 import 속성과 동일 |
pageEncoding | page 디렉티브에서 pageEncoding 속성과 동일 |
isELIgnored | page 디렉티브에서 isELIgnored 속성과 동일 |
deferredSyntaxAllowedAsLiteral | page 디렉티브에서 deferredSyntaxAllowedAsLiteral 속성과 동일 |
trimDirectiveWhitespaces | page 디렉티브에서 trimDirectiveWhitespaces 속성과 동일 |
태그파일의 위치와 참조방법
<%@ taglib prefix="tf" tagdir="/WEB-INF/tags/util" %>
...
<tf:태그명 ...>body</tf:태그명>
간단한 현재시간을 출력하는 커스텀 태그 예제
<!-- now.tag 파일 -->
<%@ tag body-content="empty" language="java" pageEncoding="UTF-8"%>
<%@ tag import = "java.util.Calendar" %>
<%
Calendar cal = Calendar.getInstance();
%>
<%=cal.get(Calendar.YEAR)%>년
<%=cal.get(Calendar.MONTH)+1%>월 <!--월의 경우 0인덱스라서 +1 해야됨-->
<%=cal.get(Calendar.DATE)%>일
- body-content 값이 empty이므로 <tf:now></tf:now> 사이에는 아무 값도 오지 않는다는 것.
- 혹은 <tf:now/> 처럼 홑 태그로 쓰던가 할 것임.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix ="tf" tagdir="/WEB-INF/tags" %><!-- 태그파일 위치(부모 폴더까지만 잡는다) -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>now</title>
</head>
<body>
오늘의 날짜는 <b><tf:now/></b>입니다.
</body>
</html>
- 오늘의 날짜는 2019년 08월 18일 입니다.
프로젝트 개발도중 커스텀 태그를 사용하게 된다면 실질적으로 어떻게 썼는지 활용방안과 함께 사용했던 커스텀 태그를 분석하는 포스팅을 진행하도록 하겠습니다.
지금은 아직 이러한 tag 파일을 이용해서 개발자가 직접 커스텀 태그를 제작하여 개발에 활용할 수 있겠구나 라는 느낌만 가져가는 시간이 될것 같습니다.
'웹 개발 > JSP' 카테고리의 다른 글
[JSP] ServletContextListener 개념 및 예제, 구현해보기 (1) | 2019.08.25 |
---|---|
[JSP] 서블릿의 개념 및 기초 예제 (1) | 2019.08.18 |
[JSP] 공통코드 작성하기 - <jsp:include> 액션태그 (1) | 2019.08.17 |
[JSP] flush 속성 (0) | 2019.08.17 |
[JSP] 에러페이지 지정하기 (0) | 2019.08.17 |