jsp

[jsp] 4. 커스텀 태그 클래스 등록해 사용하는 법 (taglib Directive)

jeri 2024. 7. 5. 09:32
반응형

01. taglib Directive

  • JSP 문서에 태그 라이브러리 파일(커스텀 태그)을 포함하도록 지시
  • 고급에서 많이 사용
<%@taglib prefix="namespace" uri="tldId" %>

 

 

 

02. 커스템 태그 사용법

1) 커스텀 태그 클래스 만들기

💙CustomTag.java
package xyz.itwill.custom;

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

//태그 클래스 : JSP 문서에서 커스텀 태그 사용 시 객체로 생성하기 위한 클래스
// => TagSupport 클래스를 상속받아 작성
public class CustomTag extends TagSupport{
	private static final long serialVersionUID = 1L;

	//JSP 문서에서 커스텀 태그의 시작태그 사용 시 자동 호출되는 메소드
	@Override
	public int doStartTag() throws JspException {
		try {
			pageContext.getOut().println("<h3>커스텀 태그 사용</h3>");
		} catch (Exception e) {
			e.printStackTrace();
		}
		return super.doStartTag();
	}
}

2) 태그 라이브러리(TLD) 파일 만들어 커스텀태그 등록하기

파일명 확장자 : .tld
new >> other >> XML >> XMLfile

생성된 모습

💙WEB-INF > custom.tld
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" xmlns="<http://java.sun.com/xml/ns/j2ee>" xmlns:xml="<http://www.w3.org/XML/1998/namespace>" xmlns:xsi="<http://www.w3.org/2001/XMLSchema-instance>" xsi:schemaLocation="<http://java.sun.com/xml/ns/j2ee> <http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd> ">
  <tlib-version>0.0</tlib-version>
  <short-name>NMTOKEN</short-name>
  <uri><http://www.itwill.xyz/custom></uri>
  <tag>
  	<name>display</name>
  	<tag-class>xyz.itwill.custom.CustomTag</tag-class>
  	<body-content>empty</body-content>
  </tag>
</taglib>

3) 태그 라이브러리 불러와 사용하기

💙taglib.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
//<%-- taglib Directive를 사용하여 태그 라이브러리 파일(TLD)을 불러와 JSP 문서에 포함 --%>
//<%-- prefix속성 : 커스텀 태그를 사용하기 위한 네임스페이스(namespace)를 속성값으로 설정 --%>
//<%-- uri속성 : 태그 라이브러리 파일(TLD)의 식별자(url 엘리먼트값)를 속성값으로 설정 : [ctrl] + [space] 클릭 시 자동완성 --%>
<%@taglib prefix="custom" uri="<http://www.itwill.xyz/custom>"%>
 <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP</title>
</head>
<body>
	<h1>taglib Directive</h1>
	<hr>
	<p>JSP 문서에 태그 라이브러리 파일(TLD)을 불러와 포함하여 커스텀 태그를 제공하는 지시어</p>
	<p>태그 라이브러리 파일 : 태그 클래스를 커스텀 태그로 등록하기 위한 XML 파일</p>
	<hr>

//	<%-- 커스텀 태그를 사용하면 태그 클래스로 객체를 생성하여 메소드 호출하여 Java 명령 실행 --%>
//	<%-- 불필요한 자바 코드를 획기적으로 줄일 수 있음 JSP의 단점 극복!! 가독성이 느리고, 여러가지 문제점이 생기지만 태그 사용으로 자바 명령 실행되게 함!! --%>
//	<%-- 하지만.. [커스텀 태그 클래스 만들기] + [TLD파일에 커스텀태그 등록하기] + [태그 라이브러리 불러다] 사용할 수 있음.. 복잡하지만 알고 사용하면 편함! --%>

	<custom:display/>
	<custom:display/>
	<custom:display/>

</body>
</html>

 

반응형