이번강좌에서는 parameter 를 갖는 태그에 대해서 알아보도록 하겠다.

 

지난강좌에서 알 수 있듯이 단순한 태그조차도 많은 매서드를 써야 한다는 것을 알수 있었다.

사실 지난시간까지는 Tag 인터페이스를 사용했습니다.

인터페이스는 그 특성상 모든 메서드를 일일이 사용자가 구현을 해야 함을 의미한다.

이번 강좌에서는 이러한 Tag 인터페이스를 미리 구현한 TagSupport클래스를 이용하여 진행하도록 하겠습니다.

 

그럼. TagSupport클래스부터 살펴보도록 하죠..

 

Javax.servlet.jsp.tagext.TagSupport

#id:java.lang.String
#pageContext:javax.servlet.jsp.PageContext
-paret:javax.servlet.jsp.tagext.Tag

-values:java.lang.Objct[]

+getId():java.lang.String

+setId(:java.lang.String):void

+release():void

+getValue(:java.lang.String):java.lang.Object

+setValue(:java.lang.String,:java.lang.Object):void

+getParent():javax.servlet.jsp.tagext.Tag

+setParent(:javax.servlet.jsp.tagext.Tag):void

+TagSupport()

+findAncestorWithClass(:javax.servlet.jsp.tagext.Tag,..)

+getValues():java.util.Enumeration

+removeValue(:java.lang.String):void

+doEndTag():int

+doStarttag():int

+setPageContent(:javax.servlet.jsp.PageContext):void

 

Interface

Javax.servlet.jsp.tagext

 

 

 

TagSupport 클래스 중에서 몇가지 메서드를 살펴보도록 하겠습니다.

- findAncestorsWithClass() : 부모태그를 찾는다.

- getID / setID() : ID라는 파라미터를 셋팅하거나 값을 가져오는데 사용되는 메서드

 

I.                    Hello Tag 의 작성

 

우리는 TagSupport클래스를 상속받아 Tag를 작성하려 합니다.

다음의 도표로 기본 구조를 살펴보도록 하겠습니다.

 

tag.HelloTag

-name:String = “”

+HelloTag()

+setName(name:String):void

+doEndTag():int

 

javax.servlet.jsp.tagext.TagSupport

 

 

1.        태그 핸들러 클래스의 작성

<HelloTag.java>

package tag;

import javax.servlet.jsp.*;

import javax.servlet.jsp.tagext.*;

public class HelloTag extends TagSupport{

       private String name = “”;

       // 생성자

       public HelloTag(){ super();}

       // setter 메서드

       public void setName(String name){

                    this.name = name;

       }

       public int doEndTag() throws javax.servlet.jsp.JspTagException{

                    try{

                                 pageContext.getOut().write(Hello + name + !);

                    }catch(java.io.IOException e){

                                 throw new JspTagException(IO Error : + e.getMessage());

                    }

                    return EVAL_PAGE;

}

}

 

이전강좌에서 사용했던 메서드들이 많이 사라진 것을 알수 있는데 앞서 언급했듯이..

TagSupport클래스는 Tag 인터페이스를 구현한 클래스이므로 모든 메서드를 구현할 필요가 없습니다.

2.        태그설명자 등록

<mytag.tld> 에 등록

<tag>

<name>hello</name>
<tagclass>tag.HelloTag</tagclass>
<bodycontent>empty</bodycontent>
<info>A Hello Tag</info>
<attribute>

<name>name</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>

</attribute>

</tag>

 

3.        Presentation 작성(JSP 파일 작성)

<hello.jsp>

<%@ taglib uri="taglibExample" prefix="mt" %>
<HTML>

<HEAD>

<TITLE>Hello!</TITLE>

</HEAD>
<BODY BGCOLOR="#FFFFFF">

<HR>
<mt:hello name="foo"/>
<HR>

</BODY>

</HTML>

 

4.        결과 확인

http://localhost/tag_tu/hello.jsp

 

             다음강좌에서는 Body를 갖는 태그에 대해서 알아보도록 하겠습니다.