ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [헤드퍼스트 Servlet&Jsp] 9-1. JSTL: JSP 표준 태그 라이브러리
    개발입문/Servlet&JSP 2017. 3. 2. 00:16
    언어를 배울 때 가장 기본이 되는 기능들에 대해서 JSP로 대응할 수 있도록 구현해 놓은것이 바로 JSP 표준 태그 라이브러리 이다. 만약 더 정교한 기능이 필요하다면 커스텀 태그 라이브러리를 (핸들러를 직접 구현해서) 활용할 수 있다.


    학습목표

    taglib 지시자 문법과 의미

    JSP 표준 태그 라이브러리

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


    Docs: http://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/index.html


    각 태그 마다 필수 옵션, 선택 옵션이 있는데,

    사실 java 문법을 한번만 공부했어도 쉽게 접근할 수 있는 개념들이었다. ;)



    JSP Core Library 등록


    코어 라이브러리 사용 등록
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>



    출력


    출력 c:out


    <c:out value="" [escapeXML=""] [default=""] >


    XML 엔티티를 문자로 출력하려면 escapeXml false (default true)

    <c:out value='${pageContent.rawHTML}' escapeXml='false' />


    변수가 NULL 일 경우 다른 default 값을 출력

    <c:out value='${user}' default='guest' />

    <c:out value='${user}'>

    guest

    </c:out>.</b>



    루핑 Loop

    for 루핑 Looping <c:forEach>

    <c:forEach var="" items="" >
    ${varValue}
    </c:forEach>


    <table>
    <c:forEach var="movie" items="${movieList}" >
    <tr>
    <td>${movie}</td>
    </tr>
    </c:forEach>
    </table>


    <c:forEach var="movie" items=${movieList}" varStatus="movieLoopCount" >
    ... Count: ${movieLoopCount.count}
    LoopTagStatus 객체, count 프로퍼티



    if/else 조건문

    조건문

    <c:if> if(true) { }
    <c:choose> switch () { }
    <c:when> case1: case2:
    <c:otherwise> else { }


    <c:if test="${userProf='safety'}">
    Our breaks will never lock up. (...)
    </c:if>

    <c:choose>
    <c:when test="${userProf='maintenance'}">
    you won't have to service these brakes for at least three years.
    </c:when>
    <c:otherwise>
    Our brakes are the best.
    </c:otherwise>
    </c:choose>



    변수 설정 set

    변수 설정 / javaBean, Map 설정

    <c:set [var=""] [scope=""] [value=""] />
    <c:set [target=""] [property=""] [value=""] />
    target 은 JavaBean 이거나 Map !


    <c:set var="userLevel" scope="session" value="cowboy" />

    <c:set var="userLevel" scope="session">
    Sheriff, Bartender, Cowgirl
    </c:set>

    <c:set target="${PetMap}" property="dogName" value="Clover" />

    <c:set target="${person} property="name" >
    ${foo.name}
    </c:set>



    변수 삭제 remove


    [remove 변수 삭제]
    <c:remove var="" [scope=""] />

    <c:remove var="userStatus" scope="request" />



    자원 임포트 import


    [import 컨텐츠 포함(내부, 외부자원 모두)]

    <c:import url="">
    <c:param name="" value="">
    </c:import>

    <c:import url="Header.jsp">
    <c:param name="subTitle" value="We take the sting out of SOAP." />
    </c:import>



    url 하이퍼링크 관련 url

    [하이퍼링크]
    <c:url value="" [var=""]>
    URL 재작성 ok / URL 인코딩 no!

    <a href="<c:url value="/inputComments.jsp" />"Click here</a>

    <c:url value="/inputComments.jsp" var="inputURL" >
    <c:param name="firstName" value="${first}" />
    <c:param name="secondName" value="${second}" />
    </c:url>



    에러 처리 c:catch
    [표준 오류 핸들링 매커니즘]
    예외사항이 발생하는 페이지에서 --- 오류 처리용 페이지로
    <c:remove var="" [scope=""] />

    1. DD 의 <error-page>

    모두 다 적용되는 (디폴트) 오류페이지 선언
    <error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/errorPage.jsp</location>
    </error-page>

    특정 예외사항에 대한 오류페이지 선언
    <error-page>
    <exception-type>java.lang.ArithmeticException</exception-type>
    <location>/errorPage.jsp</location>
    </error-page>

    HTTP 상태 코드에 따라 다르게 오류페이지 선언
    <error-page>
    <error-code>404</error-code>
    <location>/notFoundException.jsp</location>
    </error-page>


    2. JSP errorPage

    iserrorPage = True 인 페이지만 exception 내장객체 사용가능
    exception의 type은 "java.lang.Throwable"

    <%@ page isErrorPage="true" %>
    <html><body>
    You caused a ${pageContext.exception}. <br> (...)


    3. <c:catch>
    오류가 생길위험이 있는 코드를 <c:catch>로 감싼다. 그 코드가 없던 것처럼 진행된다.
    <c:catch> 태그가 끝나고 난 다음에도 나중에 Exception 객체를 다루고 싶다면 var 속성 이용

    <c:catch [var="" />

    <c:catch var="myException" >
    <% int x=10/0; %>
    </c:catch>

    <c:if test="${myException!=null}">
    There was an exception: ${myException.message}
    </c:if>



    JSTL core Tag Library 를 살펴보았으니.

    docs 을 좀더 자세히 읽어봐야겠다 :0


    댓글

Designed by Tistory.