커스텀 태그 라이브러리 (Custom Tag Library)
커스텀 태그 작성 (Creating Custom Tags)
커스텀 태그는 JSP에서 반복적으로 사용되는 코드를 캡슐화하여 재사용 가능하게 만드는 사용자 정의 태그입니다. 이는 JSP 페이지의 코드 가독성과 유지 보수성을 높이는 데 도움을 줍니다. 커스텀 태그를 만들기 위해서는 태그 핸들러 클래스와 태그 라이브러리 설명 파일(TLD)을 작성해야 합니다.
태그 핸들러 클래스 작성 (Creating Tag Handler Class)
태그 핸들러 클래스는 커스텀 태그의 동작을 정의하는 자바 클래스입니다. 이 클래스는 SimpleTagSupport
를 상속받아 구현할 수 있습니다.
예제: HelloTag.java
package com.example.tags; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.SimpleTagSupport; public class HelloTag extends SimpleTagSupport { private String name; public void setName(String name) { this.name = name; } @Override public void doTag() throws JspException, IOException { if (name != null) { getJspContext().getOut().write("Hello, " + name + "!"); } else { getJspContext().getOut().write("Hello, World!"); } } }
이 클래스는 name
속성을 받아, 해당 이름을 사용하여 인사말을 출력합니다. doTag
메서드는 태그가 JSP 페이지에서 사용될 때 실행되는 코드를 정의합니다.
태그 라이브러리 설명 파일(TLD) 작성 (Creating Tag Library Descriptor)
태그 라이브러리 설명 파일(TLD)은 커스텀 태그의 메타데이터를 정의하는 XML 파일입니다. 이 파일은 태그 이름, 속성, 핸들러 클래스 등을 정의합니다.
예제: hello.tld
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <tlib-version>1.0</tlib-version> <short-name>hello</short-name> <uri>http://example.com/tags</uri> <tag> <name>hello</name> <tag-class>com.example.tags.HelloTag</tag-class> <body-content>empty</body-content> <attribute> <name>name</name> <required>false</required> </attribute> </tag> </taglib>
이 TLD 파일은 hello
라는 이름의 태그를 정의하고, 이 태그가 com.example.tags.HelloTag
클래스를 사용함을 나타냅니다. name
속성은 선택 사항으로 정의됩니다.
JSP에서 커스텀 태그 사용 (Using Custom Tags in JSP)
커스텀 태그를 JSP에서 사용하려면, TLD 파일을 참조하고 태그를 선언해야 합니다.
예제: 사용 방법
- TLD 파일 참조:
WEB-INF
디렉토리에tld
디렉토리를 만들고,hello.tld
파일을 그 안에 저장합니다. - JSP 파일에서 태그 사용: JSP 파일에서 커스텀 태그 라이브러리를 선언하고, 태그를 사용합니다.
예제: hello.jsp
<%@ taglib uri="http://example.com/tags" prefix="custom" %> <html> <head> <title>Custom Tag Example</title> </head> <body> <!-- name 속성을 사용하여 인사말 출력 --> <custom:hello name="홍길동" /> <!-- name 속성을 생략하여 기본 인사말 출력 --> <custom:hello /> </body> </html>
위 예제에서 custom:hello
태그는 홍길동
이름을 사용하여 “Hello, 홍길동!”을 출력하고, name 속성을 생략하면 “Hello, World!”를 출력합니다.
이로써 커스텀 태그 라이브러리를 작성하고 사용하는 방법을 상세히 설명했습니다. 커스텀 태그를 통해 JSP 페이지의 복잡한 로직을 단순화하고, 코드의 재사용성을 높일 수 있습니다.