ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [헤드퍼스트 SERVLET&JSP] 9-2. JSTL 에 없는 태그 라이브러리 사용하기
    개발입문/Servlet&JSP 2017. 3. 4. 11:22

    복습


    1. JSTL 과 EL


    JSTL | Java server page Standard Tag Library

    aligns with EL | Expression Language


    JSTL 은 논리적인 처리를 위해 사용되는 스크립트 코드를 대체하기 위한 태그

    EL은 자바코드를 사용하지 않고, 더 간편한 출력을 지원하는 도구



    2. Business System Tier 에서-
     
    - Business System Tier 중 Web Tier 에서
    - JSP Pages & Servlet 을 통해 사용자에 따라 동적인 웹페이지를 출력하며,
    - 사용자의 각 상태 / 정보는 JavaBeans 를 통해 관리한다.

    즉, JSTL 과 EL 은 JSP 에서 사용자의 상태와 논리적인 처리를 도와주는 도구이다.



    출처 | http://docs.oracle.com/javaee/5/tutorial/doc/bnaay.html#bnabg




    학습 목표

    taglib 지시자 문법과 의미

    JSP 표준 태그 라이브러리

    커스텀 태그 라이브러리 파일 


    커스텀 태그는 태그 뒤에서 돌아가는 코드 (즉 JSP에서 태그를 사용하면 실제로 호출되는 자바 코드)를 개발해놓은 라이브러리입니다. 우선 커스텀 태그를 어떻게 사용하는 가를 정리해보려고 합니다. 커스텀 태그 라이브러리의 문서 내용이 빈약하더라도- 유지보수는 사용하는 개발자의 몫입니다. ㅜ_ㅜ



    커스텀 태그 라이브러리 방식

    출처 | http://www.javatpoint.com/example-of-jsp-custom-tag


    1) Tag handler class: 커스텀 태그를 사용하면 실제로 호출되는 자바 코드

    2) TLD file: Tag 서술(?) 파일로 태그 이름, 속성, 핸들러 등을 명시한 파일

    3) JSP page: 커스텀 태그를 사용할 JSP 뷰페이지




    TLD (Tag Library Descriptor) 

    파일 구성


    1. 라이브러리 URI (Unique Resource Identifier)

    2. 태그 이름과 문법(속성, 핸들러 등)


    name 이름 / description설명

    tag-class 자바 핸들러

    body-cotent 허용여부


    attribute 태그 내 속성

    name 이름, required 필수여부

    and rtexprvalue 표현식가능여부(EL, 스크립팅, JSP 표준액션)


    <taglib .... >


    // tag-library 명세

    <tlib-version>0.9</tlib-version>

    <short-name>RandomTags</short-name>

    <uri>randomThings</uri>


    // (tag-lib 안의) tag 명세 

    <tag>

    <description>random advice</description>

    <name>advice</name>

    <tag-class>foo.AdvisorTagHandler</tag-class>

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

    <attribute>

    <name>user</name>

    <required>true</required>

    <rtexprvalue>true</rtexprvalue>

    </attribute>


    </tag> </taglib>


    // 태그를 사용하는 JSP

    <html><body>

    <%@ taglib prefix="mine" uri="randomThings" %>

    Advisor Page<br>

    <mine:advice user="${userName}" />

    </body></html>



    1. rtexprevalue

    Runtime Expression Value

    - 속성값을 런타임 시 실행(평가)할 것인지 = true

    - or 변환 시 실행(평가)할 것인지 (속성값으로 문자열만 사용가능) = false 


    +a. 표현식

    EL <mine:advice user="${userName}" />

    스크립팅 <mine:advice user="<%= request.getAttribute("username")" %> />

    표준액션 <jsp:attribute name="user">${userName}</jsp:attribute>



    2. body-content

    empty: 몸체불가

    몸체가 없거나, 몸체 내용이 없거나, <jsp:attribute>만 있거나


    scriptless: 스크립트 외 가능

    tagdependent: 태그몸체를 텍스트 취급

    JSP: JSP 안에 들어갈 수 있는 것들 모두




    웹 컨테이너가 찾는

    TLD 파일의 위치

    uri 는 유일식별자일 뿐. tag library 의 정확한 주소는 아닙니다. 

    유일한 이름으로 쓰기 위해 URL 의 형식으로 기술한 것일 뿐.


    컨테이너가 알아서 아래 경로들에서 TLD 를 찾아 매핑합니다.


    1) WEB-INF 안

    2) WEB-INF 아래 하위 디렉토리 안

    3) WEB-INF/lib 밑 jar 파일, jar 안 META-INF

    4) WEB-INF/lib 밑 jar 파일, jar 안 META-INF 아래 하위 디렉토리



    다음 포스트

    태그 핸들러를 작성하고 매핑하는 법 까지-

    커스텀 태그 핸들러를 완벽하게 익히는 그 순간까지~


    댓글

Designed by Tistory.