커스텀 태그 장점
ㆍ한번 작성한 커스텀 태그는 어떤 jsp 컨테이너에서도 사용 가능
ㆍ쉽고 단순한 jsp 코드 작성
ㆍ코드 가독성 향상
태그 파일에서 사용할 수 있는 디렉티브
ㆍtag
ㆍtaglib
ㆍinclude
ㆍattribute
ㆍvariable
태그 파일 실행 전 해야 할 것
lib 폴더에 jstl-1.2.jar 파일 넣고,
WEB_INF에 web.xml 파일 넣어야 함.
태그 폴더는 WEB-INF에 생성한다.
작성 방법
tag파일에는 <%@ tag trimDirectiveWhitespaces="true" %> <%@ attribute name="title" required="true" %> 위 코드가 대부분 들어감 jsp파일에는 <%@ taglib prefix="tf" tagdir="/WEB-INF/tags" %> 위 코드가 꼭 들어가야 함 |
예제1
now.tag 파일
<%@ tag import="java.util.Calendar"%>
<%@ tag body-content="empty" pageEncoding="UTF-8"%>
<%
Calendar cal = Calendar.getInstance();
%>
<%= cal.get(Calendar.YEAR) %>년
<%= cal.get(Calendar.MONTH)+1 %>월
<%= cal.get(Calendar.DATE) %>일
now.jsp 파일
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="tf" tagdir="/WEB-INF/tags" %>
<body>
오늘은<b><tf:now/></b>
</body>
예제2
header.tag 파일
<%@ tag body-content="empty" pageEncoding="utf-8" %>
<%@ tag trimDirectiveWhitespaces="true" %>
<%@ attribute name="title" required="true" %>
<%@ attribute name="level" type="java.lang.Integer" %>
<%
String headStartTag = null;
String headEndTag = null;
if (level == null) {
headStartTag = "<hl>";
headEndTag = "</h1>";
} else if (level == 1) {
headStartTag = "<hl>";
headEndTag = "</h1>";
} else if (level == 2) {
headStartTag = "<h2>";
headEndTag = "</h2>";
} else if (level == 3) {
headStartTag = "<h3>";
headEndTag = "</h3>";
}
%>
<%= headStartTag %>
${title}
<%= headEndTag %>
header.jsp 파일
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="tf" tagdir="/WEB-INF/tags" %>
<body>
<tf:header title="텍스트 제목" level="2"/>
<tf:header title="${'EL 제목'}" level="3"/>
<tf:header title='<%="표현식 제목"%>'/>
<select name="code">
<option value="code1">테스트1</option>
<option value="code1">테스트2</option>
<option value="code1">테스트3</option>
</select>
</body>
예제3
select.tag 파일
<%@ tag body-content="empty" pageEncoding="utf-8" %>
<%@ tag trimDirectiveWhitespaces="true" %>
<%@ tag dynamic-attributes="optionMap" %>
<%@ attribute name="name" required="true" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<select name="${name}">
<c:forEach items="${optionMap}" var="option">
<option value="${option.key}"> ${option.value} </option>
</c:forEach>
</select>
select.jsp 파일
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="tf" tagdir="/WEB-INF/tags" %>
<body>
<tf:select name="kor" word1="가" word2="나" word3="다"/>
<tf:select name="eng" word1="A" word2="B" word3="C"/>
</body>
예제4
checkbox.tag 파일
<%@ tag body-content="empty" pageEncoding="utf-8" %>
<%@ tag trimDirectiveWhitespaces="true" %>
<%@ tag dynamic-attributes="checkboxMap" %>
<%@ attribute name="name" required="true" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:forEach items="${checkboxMap}" var="checkbox">
<input type="checkbox" name="${checkbox.key}"> ${checkbox.value}
</c:forEach>
checkbox.jsp 파일
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="tf" tagdir="/WEB-INF/tags" %>
<body>
<tf:checkbox name="food" value1="피자" value2="치킨" value3="햄버거"/> <br>
<tf:checkbox name="food1" value="샌드위치"/> <br>
<tf:checkbox name="food2" value="아이스크림"/> <br>
<tf:checkbox name="food3" value="핫도그"/> <br>
</body>
'22.05.24~22.11.16 > 7月' 카테고리의 다른 글
07-26 <Oracle> : view 와 index 생성, 삭제 (0) | 2022.07.26 |
---|---|
07-14 <JSP> : 쿠키 생성, 목록, 변경, 삭제 (0) | 2022.07.14 |
07-13 <Oracle> : 집계함수 (0) | 2022.07.13 |
07-12 <JSP> : 액션 태그 ( jsp:include, include 디렉토리, jsp:forward) (0) | 2022.07.12 |
07-08 <JAVA > : Vector 사용 (0) | 2022.07.08 |