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 |