JAVA

[Java] CustomTag.2 속성이 있는 커스텀태그.

tenn 2012. 5. 29. 18:39

커스텀 태그 만들기


1. 라이브러리 임포트



jsp-api.jar



2. Tag Servlet 작성


package tags;


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

public class helloTagServlet implements Tag {
  private PageContext pageContext;
  private Tag parentTag;
  private String name;

  public void setPageContext(PageContext pageContext) {
    this.pageContext = pageContext;
  }

  public void setParent(Tag parentTag) {
    this.parentTag = parentTag;
  }

  public Tag getParent() {
    return this.parentTag;
  }

public void setName(String name){

this.name = name;

} public int doStartTag() throws JspException { try { JspWriter out = pageContext.getOut();


      out.print("Hello World!");
      out.println("name : "+this.name);

    } catch(Exception e) {
      throw new JspException(e.getMessage());
    }
      return SKIP_BODY;
    }

    public int doEndTag() throws JspException {
      return EVAL_PAGE;
    }

  public void release() {}
}


3. tld 작성


<?xml version="1.0" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
            web-jsptaglibrary_2_0.xsd"
        version="2.0">

  <tlib-version>1.0</tlib-version>
  <jsp-version>2.0</jsp-version>
  <short-name>helloTag</short-name>
  <tag>
    <name>helloTag</name>
    <tag-class>tags.helloTagServlet</tag-class>
    <body-content>empty</body-content>

<attribute>

<name>name</name>

<type>java.lang.String</type>

<rtexprvalue>true</rtexprvalue> <- EL식, servlet식을 사용해서 값 설정 가능.

</attribute>

</tag> </taglib>


4. web.xml에 추가


<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd" version="2.4"> <jsp-config> <taglib> <taglib-uri>tags/hello</taglib-uri> <taglib-location>/WEB-INF/lib/hello.tld</taglib-location> </taglib> </jsp-config> </web-app>


5. jsp에 사용


//uri web.xml에서 설정한 <taglib-uri>의 값을 설정



<%@ page contentType="text/html; charset=windows-31j"

         import="tags.*" %>


<%@ taglib uri=" tags/hello "

    prefix="hello" %>


<HTML>

<BODY>


<hello:helloTag name="hello"/>