[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

 

[펌]http://m.blog.naver.com/klh1514/120191529104



'IT노트 > JSTL' 카테고리의 다른 글

Jstl  (0) 2015.02.18
JSTL core : 변수 설정 태그 <c:set> <c:remove>  (0) 2015.02.02
Posted by wychoi
,