Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

JSP 커스텀 태그 작성 완벽 가이드: SimpleTagSupport로 나만의 태그 만들기

커스텀 태그(Custom Tag)는 사용자가 직접 정의하는 JSP 언어 요소입니다. 커스텀 태그를 포함한 JSP 페이지가 서블릿으로 변환될 때, 해당 태그는 태그 핸들러(tag handler)라는 객체에 대한 연산으로 변환됩니다. 이후 웹 컨테이너(Web Container)가 JSP 페이지의 서블릿을 실행할 때 이 연산들을 호출하게 됩니다.

JSP 태그 확장 기능을 활용하면 JavaServer Page에 바로 삽입할 수 있는 새로운 태그를 만들 수 있습니다. 특히 JSP 2.0 스펙부터는 커스텀 태그를 더 쉽게 작성할 수 있도록 Simple Tag Handler가 도입되었습니다.

커스텀 태그를 작성하려면 SimpleTagSupport 클래스를 상속하고 doTag() 메서드를 오버라이드하기만 하면 됩니다. 이 메서드 안에 태그가 출력할 콘텐츠를 생성하는 코드를 작성합니다.

Hello 태그 만들기

<ex:Hello>라는 이름의 커스텀 태그를 정의하고, 본문(body) 없이 다음과 같이 사용하고 싶다고 가정해 보겠습니다.

<ex:Hello />

JSP 커스텀 태그를 만들려면 먼저 태그 핸들러 역할을 하는 자바 클래스를 생성해야 합니다. 아래와 같이 HelloTag 클래스를 만들어 보겠습니다.

package com.tutorialspoint;

import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;

public class HelloTag extends SimpleTagSupport {
    public void doTag() throws JspException, IOException {
        JspWriter out = getJspContext().getOut();
        out.println("Hello Custom Tag!");
    }
}

위 코드는 매우 간단한 구조입니다. doTag() 메서드가 getJspContext() 메서드로 현재 JspContext 객체를 가져온 뒤, 이를 통해 현재 JspWriter 객체에 "Hello Custom Tag!" 문자열을 출력합니다.

태그 라이브러리(TLD) 파일 작성

이제 위 클래스를 컴파일하고, 환경 변수 CLASSPATH에 등록된 디렉터리에 복사합니다. 그다음 아래와 같은 태그 라이브러리 파일을 생성합니다. 파일 경로는 <Tomcat-설치-디렉터리>webapps\ROOT\WEB-INF\custom.tld입니다.

<taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>2.0</jsp-version>
    <short-name>Example TLD</short-name>

    <tag>
        <name>Hello</name>
        <tag-class>com.tutorialspoint.HelloTag</tag-class>
        <body-content>empty</body-content>
    </tag>
</taglib>

TLD(Tag Library Descriptor) 파일은 태그 이름, 실제 핸들러 클래스, 본문 콘텐츠 유형 등 태그에 대한 메타 정보를 담고 있습니다. 여기서는 태그 이름을 Hello로 지정하고, 본문이 없는(empty) 태그로 선언했습니다.

JSP에서 커스텀 태그 사용하기

이제 앞에서 정의한 커스텀 태그 Hello를 JSP 프로그램에서 다음과 같이 사용할 수 있습니다.

<%@ taglib prefix = "ex" uri = "WEB-INF/custom.tld"%>

<html>
    <head>
        <title>A sample custom tag</title>
    </head>

    <body>
        <ex:Hello/>
    </body>
</html>

taglib 디렉티브에서 prefix는 JSP 내에서 태그를 호출할 때 사용할 접두사이며, uri는 TLD 파일의 위치를 가리킵니다. 위 JSP를 실행하면 다음과 같은 결과가 출력됩니다.

Hello Custom Tag!

정리

JSP 커스텀 태그 작성 절차를 요약하면 다음과 같습니다.

① SimpleTagSupport를 상속받아 doTag() 메서드를 오버라이드한 태그 핸들러 클래스를 작성한다 → ② 클래스를 컴파일해 CLASSPATH 경로에 배치한다 → ③ 태그 정보를 담은 TLD 파일을 WEB-INF 디렉터리에 생성한다 → ④ JSP에서 taglib 디렉티브로 태그 라이브러리를 선언하고 커스텀 태그를 사용한다.