본문 바로가기

Java

JSTL

●개요

- 표현언어(Expression Language)는 처음에는 JSTL의 부분으로 사용 되었으나 JSP2.0부터는 기본 스펙에 포함됨

-자바 빈즈 속상 값을 보다 쉽고 제약을 덜 받는 방법으로 사용하기위해 나옴

 

 

● 표현 언어 기본 개념

-액션 태그 및 JSP 표현식을 사용한 경우

<H2>
<jsp:useBean id="test" class"TestBean"/>
<%=test.getName()%>
</H2>

 

-표현언어를 사용한경우

<H2>
${test.name}
</H2>

 

● 기본문법 요약

- 표현언어는 "$"로 시작한다.

- 모든내용은 "{표현언어}" 과 같이 구성된다

- 표현식에는 기본적으로 변수명,혹은 속성명,메서드명 구조로 이루어 진다.

- 표현식에는 부가적으로 숫자, 문자열, boolean, null과 같은 상수값도 올 수 있다.

- 표현식에는 기본적인 연산이 가능하다

 

● JSTL 코어 라이브러리 개요

- 수식, 흐름제어, URL을 통한 자원 접근 등 가장 일반적으로 필요한 기능으로 구성

- CORE태그는 반드시 알아두어야 함

- CORE이외의 다른 라이브러리는 JSTL 이외에도 많이 개발 되어 있으며 경우에 따라서는 직접 커스텀 태그로 구현하는 것이 좋을수도 있음

 

코어 라이브러리

- <c:remove> 태그

해당 scope의 변수(객체) 삭제

<c:remove var="varName" [scope="{ page | request | session | application }"]>
속성 필수 기본값 설명
var Y 없음 삭제할 변수명
scope N 모든 범위 삭제할 범위

 

- <c:catch> 태그바디에서 실행되는 코드의 예외를 잡아냄

<c:catch [var="varName"]>
nested actions
</c:catch>
속성 필수 기본값 설명
var Y 없음 에러 메세지를 저장할 변수명

 

- <c:if>태그

조건이 맞는 경우 태그 바디부분 처리. if와 유사하지만 else는 지원하지 않음

 

1.바디 내용이 없는 경우

<c:if test="testCondition" var="varName" scope="{ page | request | session | application }"]/>

2. 바디 내용이 있는 경우

<c:if test="testCondition" [var="varName"] [scope="{ page | request | session | application }"]>
body content
</c:if>
속성 필수 기본값 설명
test 없음 검사할 조건
var N 없음 test조건의 결과를 저장할 변수 (true 혹은 false)
scope N page 변수가 저장될 범위

 

- <c:choose>, <c:when>, <c:otherwise> 태그

switch 문과 유사한 기능, 하나의 choose 태그에는 여러 개의 when 태그가 존재

<c:choose>
 body content (<when> and <otherwise> subtags)
 <c:when test="testCondition">
 body content
 </c:when>
 <c:otherwise>
 conditional block
 </c:otherwise>
</c:choose>
속성 필수 기본값 설명
test Y 없음 검사할 조건

 

 

- <c:forEach> 태그

자바의 for 문과 유사하며 가장 유용한 JSTL 태그 중 하나임

 

1. 컬렉션 객체의 크기만큼 반복

<c:forEach[var="varName"] items="collection" [varStatus="varStatusName"][begin="begin]
[end="end"] [step="step"]>
 body content
</c:forEach>

  2. 지정된 횟수 반복

<c:forEach [var="varName"] [varStatus="varStatusName"]
 begin="begin" end="end" [step="step"]>
  body content
</c:forEach>
속성 필수 기본값 설명
items N 없음 반복을 위한 데이터를 가진 아이템을 컬렉션
begin  N 0 반복 시작 번호
end N 컬렉션의 마지막 값 반복 끝 번호
step N 1 반복의 증가분
var N 없음 현재 아이템을 가지고 있는 변수
varStatus N 없음 반복 상태 값을 가지고 있는 변

 

 

- <c:forTokens> 태그

자바의 StringTokenizer 클래스 기능을 제공함

<c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"]
[varStatus="varStatusName"]
[begin="begin"] [end="end"] [step="step"]>
 body content
</c:forTokens>
속성 필수 기본값 설명
items N 없음 반복을 위한 데이터를 가진 아이템의 컬렉션
delims Y 없음 구분자(Delimeter)로 사용할 문자
begin N 0 반복 시작 번호
end N 컬렉션의 마지막 값 반복 끝 번호
step N 1 반복의 증가분
var N 없음 현재 아이템을 가지고 있는 변수
varStatus N 없음 반복 상태 값을 가지고 있는 변

 

 

- <c:import> 태그

특정 URL 페이지를 현재 페이지에 포함, <jsp:include> 액션과 유사함

 

1.포함 하고자 하는 자원을 문자열 형태로 포함하는 경우

<c:import url="url" [context="context"] [var="varName"] [scope="{ page | requese | session | application}"]
[charEncoding="charEncoding"]>
 optional body content for <c:param> subtags
</c:import>

2. 포함 하고자 하는 자원을 Reader 객체로 포함하는 경우

<c:import url="url" [context="context"] varReader="varReaderName" [charEncoding="charEncoding"]>
 body content where varReader is consumed by another action
</c:import>
속성 필수 기본값 설명
url Y 없음 현재 페이지 내에 포함시킬 URL
context N Current application 현재 웹 애플리케이션 컨텍스트 이름
charEncoding N ISO-8859-1 현재 페이지 내에 포함시킬 페이지 캐릭터셋 지정
var N Print to page 포함할 페이지의 내용을 가지는 변수명
scope N page var의 범위
varReader N 없음 자원 내용을 읽기 위한 java.io.Reader 변수

 

- <c:url> 태그

URL Rewriting 방식으로 URL 정보를 다룬다

1. 바디가 없는 경우

<c:url value="value" [context="context"] [var="varName"] [scope="{ page | request | session |
application }"]/>

2.바디가 없는경우

<c:url value="value" [context="context"] [var="varName"] [scope="{ page | request | session |
application }"]/>
 <c:param> subtags
</c:url>
속성 필수 기본값 설명
value Y 없음 기본 URL
context N Current application 현재 웹 애플리케이션의 컨텍스트 이름
var N Print to page 포함할 페이지의 내용을 가지는 변수명
scope N page  var의 범

 

 

- <c:redirect> 태그

response.sendRedirect() 나 <jsp:forward> 액션 대신 사용할 수 있다.

1. 바디가 없는 경우

<c:redirect url="value" [context="context"]/>

2. 바디가 있는 경우

<c:redirect url="value" [context="context"]/>
 <c:param> subtags
</c:redirect>
속성 필수 기본값 설명
value Y 없음 기본 URL
context N Current application 현재 웹 애플리케이션의 컨텍스트 이

 

 

- <c:param> 태그

import, url, redirect 태그에서 파라미터 값을 설정 할 때 사용

1. 바디가 없는 경우

<c:param name="name" value="value"/>

2. 바디 내용을 속성 값으로 사용하는 경우

<c:param name="name">
 parameter value
</c:param>
속성 필수 기본값 설명
url Y 없음 현재 페이지 내에 포함시킬 URL
context N Current application 현재 웹 애플리케이션 컨텍스트 이름