tag 라이브러리 동작 원리에 대해서 생각해 보자

프로그래밍|2016. 1. 18. 18:02



1. 사용자 request 요청 /test.jsp

2. jsp에서 데이터 렌더링 중 tag lib를 만남

3. tag lib 인스턴스 생성 후 attribute에 선언되어 있는 속성에 데이터 바인딩 진행 (리플렉션 사용)

4. doStartTag() 실행

5. jsp에서 또 tag lib를 만남

6. 3에서 생성한 인스턴스를 가져와 다시 attribute에 선언되어 있는 속성에 데이터 바인딩 진행


7. 사용자 request 요청 /test2.jsp

8. jsp에서 데이터 렌더링 중 tag lib를 만남

9. tag lib 인스턴스 생성 후 attribute에 선언되어 있는 속성에 데이터 바인딩 진행


정리를 해보니 jsp 안에 선언되어 있는 태그라이브러리를 만나게 되면 tag-class 엘리먼트에 선언되어 있는  클래스의 인스턴스를 생성한 후 리플렉션을 이용하여 변수 값을 바인딩 하는 것 같다. 

여기서 중요한 것은 생성한 TestTag 인스턴스를 한번만 쓰고 버리는 것이 아니라 재사용을 한다라는 것이고, 재사용에 대한 scope는 tag lib를 생성한 jsp에서만이다. 

즉, 서로 다른 2개의 jsp에서 동일한 tag lib를 사용하더라도 tag lib의 인스턴스는 2개 생성된다라는 점이다.


<tag>

    <description><![CDATA[태그]]></description>

    <name>test</name>

    <tag-class>com.test.TestTag</tag-class>

    <body-content>empty</body-content>

    <attribute>    

     <name>name</name>

     <required>true</required>

     <rtexprvalue>true</rtexprvalue>

    </attribute>    

</tag>



<customTag:test name="kyu" />





댓글()