본문 바로가기
개발/JSP&Servlet

커스텀 태그

by 카리3 2020. 4. 19.

1. /WEB-INF/taglib/customTag.tld 설정

<tlib-version>0.0</tlib-version>
<short-name>customTag</short-name>
<uri>http://customTag.com</uri>

<tag>
    <name>kangspan</name>
    <tag-class>secretary.common.taglib.CustomTag</tag-class>
    <body-content>scriptless</body-content>
    <attribute>
        <name>color</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
        <type>java.lang.String</type>
    </attribute>
    <attribute>
        <name>iterNum</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
        <type>java.lang.Integer</type>
    </attribute>
</tag>

2. CustomTag.java 설정 

package secretary.common.taglib;

import java.io.IOException;
import java.io.StringWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.SimpleTagSupport;
 
public class CustomTag extends SimpleTagSupport{
    
    private String color;
    private int iterNum;
    
    //doTag()를 오버라이딩 하여 커스텀 태그 처리 내용을 개발한다.
    @Override
    public void doTag() throws JspException, IOException {
        //JspContext는 이 태그를 사용한 JSP 페이지에 대한 정보를  담고 있다.  
        PageContext context = (PageContext)this.getJspContext();
        
        //태그가 호출된 JSP에 대해 요청 정보를 가져온다.
        HttpServletRequest request =  (HttpServletRequest)context.getRequest();
        System.out.println("태그가 호출된 JSP URI : " +  request.getRequestURI());
        
        
        //Jsp 페이지의 결과를 브라우저로 출력할 출력스트림를 얻는다.
        //JSP의 out 객체와 같음.
        JspWriter out = context.getOut();
        
        //커스텀 태그의 몸체를 담을 StringWriter
        StringWriter stringWriter = new StringWriter();
        
        //태그를 사용할때 지정한 속성값들
        String color = this.getColor();
        int iterNum = this.getIterNum();
        
        //invoke()가 실행되면 StringWriter의 몸체 텍스트가 담긴다.
        getJspBody().invoke(stringWriter);
        String bodyText = stringWriter.toString();
        
        out.print("<span style=\" background-color: "+ color + ";  \">");
        
        for(int i=0; i < iterNum; i++ ) {
            //out으로 내용 출력
            out.print("♥" + bodyText + "♥");
        }
        
        out.print("</span>");
    }
    
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
    public int getIterNum() {
        return iterNum;
    }
    public void setIterNum(int iterNum) {
        this.iterNum = iterNum;
    }
}

 

3. jsp 설정

<%@ taglib prefix="kang" uri="/WEB-INF/taglib/customTag.tld" %>

<kang:kangspan color="yellow" iterNum="5">
        ktw
</kang:kangspan>

 

'개발 > JSP&Servlet' 카테고리의 다른 글

jsp 태그 설정  (0) 2020.08.12