09 JSTL

● 커스텀 태그 중 빈번히 사용되는 태그들을 모아둔 라이브러리

1.     JSTL 다운로드 및 설치

○ 먼저 라이브러리 파일을 다운로드 받은 후 설치해야 함

○ 메이븐에서 받아도 됨

JSTL API JSTL Implementation 라이브러리 각각 다운로드

javax.servlet.jsp.jstl-api-1.2.1.jar

javax.servlet.jsp.jstl-1.2. l.jar

■ 다운로드 받은 두 개의 파일을 WEB-INF 폴더 내 lib 폴더에 저장

 

○ 출력

taglib 지시자를 사용 -> prefix 속성으로 접두어 지정 + uri 지정 필요

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

<cout value="HelloJSTL"/>

table border=’1’>

<cforEach var=”I” begin=”1” end=”5”>

<tr><td><cout value="${1}}"/></td></tr>

</cforEach>

</table>

 

2.     JSTL 라이브러리의 종류

URI 식별자 : JSTL 라이브러리를 구분하기 위해 사용

URI 식별자를 tglib 지시자를 통해 지정한 후 접두어와 연결

 

3.     JSTL 코어 태그 라이브러리 사용

1)    출력 처리

<cout value="출력할 내용" escapeXml=”[true I false] " default="출력할 내용"/

■ 속성들

escapeXml 속성을 true로 지정 -> 출력할 파일 내부의 문자들을 태그로 인식하지 않고 데이터로 바로 출력

out 태그의 value 속성에는 표현식과 EL로 지정 가능

<cout value=u<%=reader%>" escapeXml=”true" default="출력값 없음/

 

2)    예외 처리

catch 태그 : 해당 예외 객체를 catch 태그의 var 속성에 지정한 변수에 할당하고. 이후 해당 변수를 사용

<ccatch var=uexceptionName">

예외발생 가능 코드

</ccatch>

$exceptionName -> <cout value=”$reqParameterEx" />이런 식으로 출력

 

3)    변수 처리

EL 변수로 사용 가능한 값을 지정 가능

(1)   set 태그를 이용한 변수 및 프로퍼티 값 설정

     변수 값 설정

-      <cset var="변수명" value=*변수값 ” scope="영역"/

-      var : 값을 지정할 변수명을 지정

-      value : var 속성에 지정한 변수의 값을 지정하며 표현식, EL, 문자열 데이터로 지정이 가능

-      scope : var 속성에 지정한 변수의 사용 범위를 지정하며 page, request, session, application 지정이 가능. 지정하지 않을 경우 기본값은 page

-      set 태그의 변수를 EL로 사용 가능

-      out 태그의 value 속성으로도 사용 가능

     객체의 프로퍼티 값 설정 가능 (객체 멤버에 접근 가능하다는 것)

-      <cset target="대상객체" property="프로퍼티명" value="프로퍼티값"/>

-      target : 프로퍼티를 지정할 객체를 지정. 표현식 및 EL 변수로 지정 가능

-      property : 설정할 프로퍼티명을 지정. target 속성에 명시된 객체가 자바 빈 객체일 경우 setter 메서드가 존재하는 프로퍼티일 경우 사용 가능

-      value : property 속성에 명시한 프로퍼티의 값을 지정

 

(2)   remove 태그를 이용한 변수 제거

set 태그로 지정한 변수를 제거하기 위해 사용

<cremove var="변수명" scope="영역"/>

var : 제거할 변수명을 지정

scope : 제거할 변수가 포함된 영역을 지정하며 page, request, session, application 지정 가능. 지정하지 않을 경우 丫比에 명시된 모든 변수 제거

변수에 지정된 범위에 따라 제거 영역을 지정

 

4)    흐름 제어 처리

(1)   if 태그

□ 여러 조건을 중첩시킨 if ~ else if ~ else 구문과 같은 방식은 사용 불가능

<cif test=“조건” var=”조건의 결과값을 저장할 EL 변수”>

조건이 참인 경우 수행할 내용

</cif>

test 속성 : 조건을 지정하며 표현식 및 EL 사용 가능

var 속성 : 조건의 결과값이 저장될 EL 변수

<cset var="value" value=”10”/>

<h3>value의 값이 10 이상인지 검사</h3>

<cif test=”${value >= 10}" var=”over10">

<h4>- value : <cout value=”${value}”></h4>

<h4>-value의 값은 10 이상? : <cout value="${over10}"/></h4>

</cif>

 

(2)   choose 태그

□ 자바의 if else if else와 같은 다중 분기 기능을 구현할 수 있는 태그

when 태그와 otherwise 태그를 함께 사용

<cchoose>

<cwhen test="조건1”>

조건1을 만족할 경우 수행될 내용

</cwhen>

<cwhen test="조건2”>

조건2를 만족할 경우 수행될 내용

</cwhen>

<cwhen test="조건N">

조건N을 만족할 경우 수행될 내용

</cwhen>

<cotherwise>

상단 when 태그의 조건에 부합하지 않는 경우 수행될 내용

</cotherwise>

</cchoose>

 

(3)   forEach 태그

□ 배열, Map, 컬렉션 객체들과 같이 여러 값을 저장할 수 있는 요소들을 반복 처리할 때 사용

for while 반복문과 같은 역할

step 속성은 필요치 않을 경우 생략해도 무방

<%

HashMap<String, String> hashMap = new HashMap<String. String>( )

hashMap.put (“name", ”okjsp")

hashMap.put (“web", ”http//www.okjsp.net");

%

<cset var="map" value=”<%=hashMap%>"/>

<cforEach var=”inMap" items=”${map}">

${inMap.key} $ {inMap.value} <br/ >

</cforEach>

 

(4)   forTokens 태그

□ 문자열에 특정 문자를 기준으로 원본 문자열을 부분 문자열로 나누어주기 위한 기능을 제공

<cforTokens var="토큰이 대입될 변수" items="토큰을 포함한 원본 문자열" delims="토큰 문자… </cforTokens>

속성

설명

var

토큰 문자로 분리된 각 문자열 저장 변수 지정

items

토큰으로 지정될 문자를 포함한 원본 문자열 지정

delims

구분 문자로 사용할 문자를 지정, 복수 개의 문자 지정 가능

<cforTokens items=l'010-1234-5678" delims="-" var="tokens”>

${tokens}

</cforTokens>

 

5)    URL 처리

(1)   redirect 태그

response 내장객체 sendReclirect( ) 메서드처럼 태그에 지정한 페이지로의 리다이렉트 제공

JSP 페이지 외의 웹 자원, 다른 웹 서버의 자원도 호출이 가능

<credirect url="호출할 URL" context="컨텍스트 경로”>

<cparam name="파라미터명1" value="1"/>

.

<cparam name="파라미터명N" value="N"/>

</credirect>

 

(2)   import 태그

□ 현재 JSP 페이지에 다른 웹 페이지의 결과를 포함시키는 기능을 수행

JSP 페이지가 아닌 다른 종류의 웹 페이지 및 다른 서버의 웹 페이지도 불러올 수 있다!!!

          <jspinclude> 액션 태그와 유사하나 이런 차이점이 있음

var 속성이 지정되지 않을 경우 읽어온 데이터를 바로 출력

<cimport url="포함할 URL" var="URL 데이터를 저장할 EL 변수명" scope="영역" charEncoding= "문자셋">

<cparam name="파라미터명1" value="1"/>

<cparam name="파라미터명N" value="N"/>

</cimport>

 

(3)   url 태그

URL 전용 set 태그

□ 특정 URL 및 전송 파라미터를 설정한 내용을 변수에 저장하는 용도로 사용

□ 파라미터 지정 가능

<curl var="지정된 URL 내용을 저장하기 위한 변수명" value= “대상 URL" scope=”변수 저장 영역

<cparam name="파라미터명 1" value="1"/>

<cparam name="파라미터명N" value="N"/>

</curl>

 

+ Recent posts