JSTL API : http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html 

 

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

JSP 상단에 추가해야 하는 태그 라이브러리

 

fmt:parseDate : String 형을 받아서 워하는 포멧으로 자료형을 Date 형태로 변경 시켜 준다.

fmt:formatDate : Date 형을 받아서 원하는 포멧으로 날짜 형태를 변경시켜 준다.

 

ex)

<fmt:parseDate value="${applDt}" var="dateFmt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${dateFmt}" pattern="yyyy-MM-dd"/>

 

20081113 이라는 String 형태의 날짜 데이터가 존재한다고 가정하고

이 String 형태의 날짜를 2008-11-13 으로 변경하고 싶을 경우 위의 예 처럼 사용하면 된다.

그 외에도 2008. 11. 13 이런 식으로도 변경도 가능하다. (자신의 입맛에 맛게 변경하여 사용하도록 하자.)

 

<fmt:parseDate value="${applDt}" var="dateFmt" pattern="yyyyMMdd"/>

 

formatDate 는 Date 형태의 자료형만을 받아 변경시키도록 되어 있다. 즉 String 형태의 자료를 Date 형태로

변환시켜 줘야 할 필요가 있는데 이때 사용하는 태그가 fmt:parseDate 이다.

 

1. value 속성에는 넘어오는 파라메터(변환하고자 하는 String)의 이름을 적고

2. var 에는 fmt:formatDate 에서 사용될 변수 이름을 적어주도록 하자.

3. pattern 에는 value 속성에 들어가는 String 형태의 자료가 어떤 형태로 포멧되어 있는것인지를 지정해야 한다.

   즉, 넘어온 String 형태의 자료가 20081113 과 같이 포멧되어 있는 상태라면 yyyyMMdd 와 같이 적어준다.

   2008-11-13 과 같이 포멧되어 있는 상태라면 yyyy-MM-dd 와 같이 적어주면 된다.

 

<fmt:formatDate value="${dateFmt}" pattern="yyyy-MM-dd"/>

 

1. value 에는 parseDate 에서 var 속성뒤 적은 변수명을 적어주도록 한다.

2. pattern 에는 자신이 원하는 포멧 형식을 적어주면 된다. (yyyy년 MM월 dd일 과 같이도 사용이 가능하다.)

 

 


'Jsp' 카테고리의 다른 글

JSP 페이징  (0) 2014.11.07
javascript - jstl 참조하기  (0) 2014.07.17
@Schedule Spring 스프링 스케쥴 설정법 & CronTab  (0) 2014.07.01
request 의 활용  (0) 2013.12.26
JSTL (JSP Standard Tag Library)  (0) 2013.12.08

JSTL (JSP Standard Tag Library)

 

http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi

 

1. 위 사이트에서 JSTL 을 다운 받습니다.

2. 압축을 풀고 lib 디렉토리 안의 jstl.jarstandard.jar 를 복사합니다.

3. Tomcat 의 디렉토리 내의 common\lib 안에 복사 해놓고 쓰면 됩니다.

<%@ taglib prefix="c" uri="java.sun.com/jsp/jstl/core" %> 와 같이 선언하면 됩니다.

 

기본적인 기능

<%@ taglib prefix="c" uri="java.sun.com/jsp/jstl/core" %>

XML 처리

<%@ taglib prefix="x" uri="java.sun.com/jsp/jstl/xml" %>

국제화와 형식화

<%@ taglib prefix="fmt" uri="java.sun.com/jsp/jstl/fmt" %>

 데이터베이스 작업

<%@ taglib prefix="sql" uri="java.sun.com/jsp/jstl/sql" %>

 

JSTL 설치

  • 톰캣 설치기 설치 옵션에서 Examples를 선택하면 설치되는 예제 애플리케이션에 들어있음
  • 위치 : webapps/jsp-examples/WEB-INF/lib/jstl.jsr
  • 위의 파일을 WEB-INF/lib 디렉토리에 복사

스크립팅 없이 루핑 돌리기

<c:forEach>

  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <c:forEach var="movie" items="${movieList}" varStatus="movieLoopCount" >
  3. <tr>

  4. <td>${movie} </td>

  5. <td>${movieLoopCount.count}</td>

  6. </tr>

  7. </c:forEach>

var : 컬렉션에 있는 각각 항목을 나타내는 변수로, 한번 회전할 때마다 값이 바뀝니다.

items : 루핑을 돌 실제 데이터(배열, 컬렉션, 맵 또는 콤마 분리 문자열)

varStatus : 루핑 횟수 알기

*추가

JSTL 문법의 for문 사용법

#{status.current}   현재의 for문에 해당하는 번호

#{status.index} 0부터의 순서

#{status.count} 1부터의 순서

#{status.first}  현재 루프가 처음인지 확인

#{status.last}  현재 루프가 마지막인지 확인

#{status.begin} for문의 시작 값

#{status.end}   for문의 끝 값

#{status.step}  for문의 증가값

 

배열을 불러올때는 ${param.movieList} 가 아닌 ${paramValues.movieList}로 items에 저장해야 한다.

 

<c:forEach>안에 <c:forEach>품기

  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <c:forEach var="listElement" items="${movies}" varStatus="movieLoopCount" >
  3. <c:forEach var="movie" items="${listElement}">
  4. <tr>

  5. <td>${movie} </td>

  6. <td>${movieLoopCount.count}</td>

  7. </tr>

  8. </c:forEach> 
  9. </c:forEach>

속성 : begin, end, step

 

조건문

<c:if>

  1. <c:if test="${userType eq 'member'}:>
  2. <jsp:include page="inputComments.jsp" />

  3. </c:if>

 

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

  1.  <c:choose>
  2. <c:when test="${userPref == 'preformance'}">

  3. go 1

  4. </c:when>

  5. <c:when test="${userPref == 'preformance'}">

  6. go 2

  7. </c:when>

  8. <c:otherwise>

  9. go 3

  10. </c:otherwise>

  11. </c:choose>

 

 속성 입력

<c:set>

  1. <c:set var="userLevel" scope="session" value="Cowboy" />
  2. <c:set var="userLevel" value="${person.dog}" />
  3. <c:set var="userLevel" scope="session">
  4. Sheriff, Bartender, Cowgirl

  5. </c:set>
  1. var : session 생존범위에 "userLevel" 이란 이름의 속성이 없으면 <c:set> 태그는 하나를 새로 만듭니다.
  2. scope : 옵션값
  3. value : 꼭 문자열일 필요는 없습
  4. 기타 : value가 널 인경우 변수는 제거됩니다.

 

빈과 맵에 <c:set> 태그 사용하기

 <c:set> 태그는 빈 프로퍼티와 맵 값 두 가지 경우에만 동작합니다.

리스트나 배열에 값을 추가하기 위해서 사용할 수 없슴

  1. <c:set target="${petMap} property="dogName" value="Clover" />
  2. // target은 널이어서는 안 됩니다.
  3. // target이 맵인 경우 dogName은 키 이름이 됩니다 
  4. // target이 빈인 경우 dogName은 프로퍼티 이름이 됩니다.
  5. <c:set target="${person}" property="name" >
  6. // target 속성에 id 이름을 기입하면 안됩니다.
  7. ${foo.name}

  8. // 몸체 안에는 문자열 또는 표현식이 들어갈 수 있습니다.

  9. </c:set>

 target 속성에는 객체(Object)가 들어가야 합니다. 빈이나 맵의 "id" 이르을 쓰면 안됩니다.

 

scope 속성을 명기하지 않으면?

컨테이너는

  1. page 
  2. request 
  3. session 
  4. application(context) 

순으로 찾음, 못 찾을 경우 page 생존범위로 해서 하나를 새로 만듬

 

<c:remove> 로 속성 제거하기

  1. <c:remove var="userStatus" scope="request" /> 
  2. // var 속성에는 문자열을 넣어야함. 표현식을 넣으면 안됨

 

 

<c:import> 로 컨텐츠 포함

  1. <c:import url="http://www.lazyartist.co.kr"/>

요청이 들어오는 시점에 url 속성에 명기한 파일을 현재 컨텐츠에 포함합니다.

<c:import>는 외부 자원도 포함할 수 있습니다.

 

<c:param> 으로 포함될 파일 동적 변화 시키기

  1. <c:import url="header.jsp">
  2. <c:param name="subTitle" value="we take the String" />

  3. </c:import>

 포함될 파일에

  1. ${param.subTitle} 

 

 

<c:url>로 url 재작성

  1. <a href="<c:url value='/imputComments.jsp' />
  2. // value에 들어있는 상대경로 뒤에 jsessionid를 추가합니다.(쿠키를 사용하지 못 하는 경우)

 

url 인코딩

  1. <c:url value='/imputComments.jsp' var="inputURL" />
  2. <c:param name="firstName" value="${first}" />

  3. <c:param name="lastName" value="${last}" />

  4. // param 태그를 사용합으로써 url인코딩까지 해준다.(공백에 +를 넣어줌)

  5. </c:url>

  6. <a href="${inputURL}">

 

오류 페이지 설정

오류 페이지에서만 쓸 수 있는 객체 : exception

  1. <%@ page isErrorPage="true" %>
  2. ${pageContext.exception}

 

오류 발생 후 오류 페이지로 이동하지 않고 자체 페이지에서 해결하기 : <c:catch>

  1. <c:catch>
  2. <% int x = 10/0; %>

  3. // 에러가 발생하면 다음을 실행하지 않고 </c:catch>로 곧장 이동한다.

  4. </c:catch>

 

exception을 속성으로 만들어 에러 메시지 읽기
  1. <c:catch var="myException">
  2. ...

  3. </c:catch>
  4. ${myException.message}
  5. // 타입이 Throwable이니 message프로퍼티가 있음 


'Jsp' 카테고리의 다른 글

JSP 페이징  (0) 2014.11.07
javascript - jstl 참조하기  (0) 2014.07.17
@Schedule Spring 스프링 스케쥴 설정법 & CronTab  (0) 2014.07.01
request 의 활용  (0) 2013.12.26
fmt:*date  (0) 2013.12.20

+ Recent posts