1. 태그핸들러

 - 사용자 태그를 처리하는 클래스 파일

 - SimpleTagSupport 상속받음

ex) WelcomeTag.java

package customTag;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;

public class WelcomeTag extends SimpleTagSupport {
	@Override
	public void doTag() throws JspException, IOException {
		getJspContext().getOut().println("Welcome to My Custom Tag");
	}

}

 

2. TLD (Tag Library Descriptor)

 - 사용자 태그에 대한 정보를 기술하는 파일

 - WEB-INF 폴더 아래에 위치함. (web.xml과 같은 폴더)

ex) WelcomeTag.tld

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="https://java.sun.com/xml/ns/javaee" version="2.1">
	<tlib-version>1.0</tlib-version>
	<jsp-version>2.2</jsp-version>
	<short-name>JSPTag</short-name>
	<tag>
	    <name>welcome</name>						<!-- 변수명 -->
	    <tag-class>customTag.WelcomeTag</tag-class>		<!-- 클래스파일 -->
	    <body-content>empty</body-content>			<!-- 몸체가 없는 태그 -->
	</tag>
    
	<tag>
	    <name>welcomeBody</name>					
	    <tag-class>customTag.WelcomeBodyTag</tag-class>		
	    <body-content>scriptless</body-content>		<!-- 몸체가 있는 태그 -->
	</tag>
    
	<tag>
	    <name>page</name>
	    <tag-class>customTag.PageTag</tag-class>
	    <body-content>empty</body-content>
 	    <attribute>								<!-- 속성이 있는 태그 -->
	        <name>from</name>
	        <type>java.lang.Integer</type>
	        <rtexprvalue>true</rtexprvalue>
	    </attribute>
	    <attribute>
	        <name>to</name>
	        <type>java.lang.Integer</type>
 	        <rtexprvalue>true</rtexprvalue>
	    </attribute>
	</tag>
</taglib>

 

3. jsp 뷰

ex) welcomeTag.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="tag" uri="/WEB-INF/WelcomeTag.tld" %>
<%@ taglib prefix="tagb" uri="/WEB-INF/WelcomeBodyTag.tld" %>
<%@ taglib prefix="tagp" uri="/WEB-INF/tlds/PageTag.tld" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>		
<!-- tld파일에서 설정한 변수명으로 호출 -->
<tag:welcome/>								<!-- 몸체가 없는 태그 -->
<tagb:welcomeBody>Tina & Poli</tag:welcomeBody>		<!-- 몸체가 있는 태그 -->
<tagp:page from="1" to="10"/>						<!-- 속성이 있는 태그 -->
</body>
</html>

'Web > JSP&Servlet' 카테고리의 다른 글

필터(Filter)  (0) 2020.08.30
서블릿(Servlet)  (0) 2020.08.28
MVC model 2  (0) 2020.08.16
JSP 레이아웃 INCLUDE하기  (0) 2020.08.13
파일 업로드  (0) 2020.08.07

+ Recent posts