Java/Servlet & JSP

JSTL 사용하기 (2)

체리필터 2009. 3. 16. 16:49
728x90
반응형
클라이언트의 브라우져에서 쿠키 사용을 제한 하고 있을 경우 jsessionid를 추가하여 url로 세션 정보를 공유하는 방법은 이미 서블릿에서 살펴 봤다.
jstl에서도 이와 같은 방법을 사용할 수 있다.

서블릿
response.encodeURL("/BeerTest.do");

jstl
<c:url value="/inputCommets.jsp"></c:url>

위와 같이 하게 되면 url 뒤에 jsessionid를 덧 붙여서 사용하게 된다.
하지만 urlencoding을 자동으로 하지는 않게 된다.
urlencoding을 하게 하려면 아래와 같은 방법을 사용해야 한다.

<c:set var="last" value="Hidden Cursor"></c:set>
<c:set var="first" value="Crouching Pixels"></c:set>
<c:url value="/inputCommets.jsp">
    <c:param name="firstName" value="${first}"></c:param>
    <c:param name="lastName" value="${last}"></c:param>
</c:url>

위와 같이 하게 되면 last, first에 설정 된 값에 있는 공백과 같은 값이 인코딩 되어 사용 된다.

* 오류 페이지 만들기

오류 메시지를 그대로 보여주지 않고 디자인 된 페이지를 보여주려면, 예외 사항이 발생하는 페이지에 다음과 같이 코딩해 주면 된다.

<%@ page errorPage="errorPage.jsp" %>
<% int x = 10/0; %> -> 예외 발생

에러 시 보여줄 페이지

<%@ page isErrorPage="true" %>
<body>
Error Page!!!
</body>

하지만, 모든 페이지에서 <%@ page errorPage="errorPage.jsp" %> 내용을 삽입하게 된다면 여간 귀찮은 일이 아닐 것이다. 따라서 configuration에서 error page를 지정하는 방법을 써서 수고를 덜 수 있다.

web.xml

  <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>/arithmeticError.jsp</location> => 특수한 경우의 에러
  </error-page>
  <error-page>
      <error-code>404</error-code>
      <location>/notFoundError.jsp</location> => 에러 코드에 따른 경우
  </error-page>

물론 web.xml에서 error page임을 명시해도 errorPage.jsp 파일에서는 "<%@ page isErrorPage="true" %>" 내용을 꼭 넣어야 한다.
errorPage.jsp에서는 exception 객체를 사용할 수 있다.
사용 방법은 다음과 같이 쓴다.

<%@ page isErrorPage="true" %>
You caused a ${pageContext.exception} on the Server.

Insert title hereError Page!!! You caused a java.lang.ArithmeticException: / by zero on the Server.

위의 예와 같은 경우에는 위와 같이 브라우져에 출력되게 된다.

오류가 났을 경우 오류 페이지로 가지 않고 catch로 잡을 수도 있다.
방법은 다음과 같다.

<c:catch>
    Inside the catch
    <% int x = 10/0; %>
</c:catch>

오류가 난 원인을 알기 위해서는 exception 객체를 사용해야 하는데, isErrorPage로 설정되지 않은 jsp에서는 exception 객체를 사용할 수 없다. 따라서 다음과 같이 사용해야 한다.

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

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

Insert title hereThere was an exception : / by zero

jstl에서 사용되는 5개의 라이브러리 중에서 자주 사용되는 태그는 다음과 같다.

* Core 라이브러리

<c:out>, <c:set>, <c:remove>, <c:catch>

<c:if>, <c:choose>, <c:when>, <c:otherwise>

<c:import>, <c:url>, <c:redirect>, <c:param>

<c:forEach>, <c:forTokens>

* 포맷팅 라이브러리

<fmt:message>, <fmt:setLocale>, <fmt:bundle>, <fmt:setBundle>, <fmt:param>, <fmt:requestEncoding>

<fmt:timeZone>, <fmt:setTimeZone>, <fmt:formatNumber>, <fmt:parseNumber>, <fmt:parseDate>

* SQL 라이브러리

<sql:query>, <sql:update>, <sql:setDataSource>, <sql:param>, <sql:dateParam>

* XML 라이브러리

<x:parse>, <x:out>, <x:set>

<x:if>, <x:choose>, <x:when>, <x:otherwise>, <x:forEach>

<x:transform>, <x:param>





728x90
반응형

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

사용자 정의 태그 개발 (1)  (0) 2009.03.23
커스텀 태그 사용하기  (0) 2009.03.17
JSTL 사용하기 (1)  (5) 2009.03.12
템플릿 형태로 JSP 사용하기  (0) 2009.02.16
EL 함수 사용하기  (0) 2009.02.13