[JSP] JSTL (코어 라이브러리)
JSTL
JSP 표준 태그 라이브러리이다.
오라클 사이트를 뒤져보니 이렇게 나온다.
http://www.oracle.com/technetwork/java/index-137246.html#
The JavaServer Standard Tag Library (JSTL) is an important simplification of the Java web platform. With JSTL, page authors can now write dynamic pages using standard HTML-like tags and an easy-to-learn expression language.
JSP의 표준 태그 라이브러리인 JSTL은 자바 웹 플랫폼의 중요 부분만 간소화 시켰고, 페이지 기술자는 HTML 같이 표준화된 태그와 누구나 쉽게 배울 수 있는 표현식 언어로
동적페이지를 만들 수 있다.
해석하다보니 여기서 Expression Language에 대한 궁금증이 생긴다.
그렇다면 Expression Language는 뭐지 ?
EL은 표현식 언어로 JSP 2.0에 새로 추가된 스크립트 언어이다.
책에서는 JSTL보다 간단하고 자바 언어를 모르고도 JSP페이지를 작성 할 수 있는 방법을 제공한다고 한다.
예 :
${ param["name"] }
파라미터로 name을 얻어 온다.
다시 JSTL로 넘어가서
JSTL을 사용하기 위해선 http://jstl.java.net에 들어가서 다운을 받아야 한다.
이제 사용법을 알아보자.
코어 라이브러리
JSP 페이지에서 필요한 가장 기본적인 기능들을 제공
코어를 쓰기 위해서는 제일 먼저 지시어를 입력
<%@ taglib prefix="c" url="http://java.sun.com/jsp/jstl/core" @>
prefix의 c가 코어라이브러리를 쓰겠다는 표시
<%@ taglib prefix="fmt" url="http://java.sun.com/jsp/jstl/fmt" @>
포맷 라이브러리를 위해 선언 . 이건 나중에 ..... 근데 책에서는 코어 라이브러리 쓸 때 같이 선언하고 있다.
그리고 태그들
1. <c:out> 딱 봐도 out이니까 출력일 것이라 예상됨.
<c:out value="출력할 값" />
<c:out value="${param.name}" />
파라미터로 넘어온 name을 출력함
2. <c:set> set이니까 값을 설정하겠다고 ? of course!
<c:set value="value" var="varname" scope="scope" />
그냥 변수에 값을 넣느냐와 target 객체의 멤버 필드에 값을 넣느냐가 다르다.
그냥 변수에 넣을 때는,
<c:set var="t" value="5" />
t = 5 ; 랑 같다.
객체의 멤버 필드에 넣을 때는
<c:set target="target객체 이름" property="멤버필드 이름" />
3. <c:remove> 누가 봐도 삭제 ..
<c:remove var="변수명" scope="스코프값" />
4. <c:catch> try , catch 맨날 예외처리 했잖아.
<c:catch var="varname">
nested actions
</c:catch>
5. <c:if> 조건이다. 하지만 else가 없다.
<c:if test="test조건" var="결과 저장할 변수" scope="스코프" />
위에 처럼 태그 내용 없는 경우도 있지만
태그 있는 경우를 예를 들면
<c:if test="${!empty param.name}">
이름 : ${param.name}" />
</c:if>
해석하면 para.name이 공백이 아니면 " 이름 : param.name " 을 출력하겠다.
6. <c:choose> , <c:when> , <c:otherwise> 스위치문과 비슷
choose안에 여러개의 when과 한개의 otherwise를 포함 시킬 수 있다,
switch문 안에 여러개의 case와 한개의 default를 포함 시킬 수 있다.
'똑같네. 똑같아.'
<c:choose> , <c:when test="조건"> , <otherwise>
자세한 설명은 생략 !
'다시 복습할려고 포스팅 중인데 왜 이렇게 피곤하지...?'
7. <c:forEach> for문
아이템 반복
<c:forEach [var ="변수 이름"] items="아이템 컬렉션" [varStatus="반복의 상태값 갖는 변수"] begin="시작" end="마지막" step="증감" >
바디 부분
</c:forEach>
예>
<c:forEach var="h" items="${header}">
<li> <c:out value="${h.key}"/> : <c:out value="${h.value}" />
</c:forEach>
header 정보를 가져오는데 헤더의 값은 h라는 변수로 표현된다.
<li>는 html에서 리스트고 전체 문장이 html코드가 구현되어 있다고 가정하고
<c:out 출력하는데 value="${h.key} " 헤더의 key값 , 헤더의 이름을 출력하겠다,
그리고 <c:out 출력하는데 value=""${h.value}" 헤더 값을 출력하겠다.
그러면 헤더 갯수 만큼 헤더 이름과 헤더 값을 출력할 것이다.
아니면 우리가 잘 아는 단순 반복 해보자.
<c:set var="t" value="3">
<c:forEach var="i" begin="1" end="9" step="1">
<c:out value="${t}"/> , <c:out value="${a}"/>
</c:forEach>
책에 나오는 구구단 출력문인데 귀찮아서 그냥 ..
똑같이 하면
t = 3;
for(i=1; i<=9; i++)
print( t + " ," + a);
그리고
<c:forTokens> : 문자열을 토큰들로 잘라서 반복을 수행하는 태그
<c:import> : URL자원을 임포트 함
<c:url> : URL을 기술
<c:redirect> : HTTP 요청을 클라이언트를 통해 리다이렉트 함
<c:param> : 파라미터 값을 전달하기 위해 사용
API에서 코어 라이브러리를 확인해 볼 수 있다.
http://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/c/tld-summary.html
'IT노트 > JSTL' 카테고리의 다른 글
Jstl (0) | 2015.02.18 |
---|---|
JSTL core : 변수 설정 태그 <c:set> <c:remove> (0) | 2015.02.02 |