Expressions(EL)
접근방법
- Attribute 값
${expression}
을 직접 입력
- Bean
bean.name
또는 bean["name"]
형식으로 빈의 이름과 프로퍼티 이름을 입력
- Map
map.keyName
형식으로 맵의 키이름으로 입력
Map 타입의 글로벌 객체
객체이름 |
비고 |
param |
Request 객체에서 parameter에 대한 String 값 |
paramValues |
Request 객체에서 배열타입의 parameter에 대한 String 값 |
header |
Request 객체의 Header 정보 값 |
산술연산자
Operator(문자 연산자) |
Description |
+ |
더하기 |
– |
빼기 |
* |
곱하기 |
/ (div) |
나누기(몫) |
%(mod) |
나누기(나머지) |
관계 연산자
Operator(문자 연산자) |
Description |
== (eq) |
같음 |
!= (ne) |
같지 않음 |
< (lt) |
작음 |
> (gt) |
큼 |
<= (le) |
같거나 작음 |
>= (ge) |
같거나 큼 |
로직 연산자
Operator(문자 연산자) |
Description |
&& (and) |
모두 참일 경우 |
|| (or) |
둘중에 하나만 참일 경우 |
! (not) |
결과값의 반대 |
empty |
객체가 null인 경우 |
Core 태그
데이타를 화면에 출력, Scope 변수의 생성 및 조작 그리고 Exception에 대한 처리
<%@ tablig prefix="c" uri="http://java.sun.com/jstl/core" %>
<c:out>
화면에 데이타 출력
1
| <h2>Welcome, <c:out value="${user.name}" default="Guest"/></h2>
|
Attribute |
Description |
Req |
Default |
value |
출력될 데이타 |
YES |
None |
default |
데이타가 없을 경우 출력될 기본값 |
NO |
Body |
<c:set>
Scope 변수에 데이타 저장
1
2
| <c:set var="dogAge" value="${age div 7}"/>
You are <c:out value="${dogAge}"/> in dog years.
|
Attribute |
Description |
Req |
Default |
var |
저장된 데이타를 사용할 변수명 |
NO |
None |
value |
저장할 데이타 |
NO |
Body |
<c:remove>
Scope 변수에 데이타 삭제
1
| <c:remove var="dogAge" scope="page"/>
|
Attribute |
Description |
Req |
Default |
var |
삭제할 변수명 |
YES |
None |
scope |
스코프 변수 |
NO |
All scopes |
조건 분기문
<c:if>
조건문에 의한 분기
1
2
3
| <c:if test="${user.age ge 40}">
You are over the hill.
</c:if>
|
Attribute |
Description |
Req |
Default |
test |
분기문에 대한 조건(true/false) |
YES |
None |
var |
분기문에 대한 조건결과 |
NO |
None |
<c:choose>
switch
문과 같은 다중 조건 분기문
1
2
3
4
5
6
7
8
9
10
11
12
13
| <c:choose>
<c:when test="${a boolean expr}">
// do something
</c:when>
<c:when test="${another boolean expr}">
// do something else
</c:when>
<c:otherwise>
// do this when nothing else is ture
</c:otherwise>
</c:choose>
|
<c:when>
switch
문의 case
와 같은 분기조건
<c:choose>
와 함께 사용해야 한다.
Attribute |
Description |
Req |
Default |
test |
분기문에 대한 조건(true/false) |
YES |
None |
<c:otherwise>
switch
문의 default
와 같은 분기조건
<c:choose>
와 함께 사용해야 한다.
반복문
공통으로 사용되는 속성값
Attribute |
Description |
Req |
Default |
begin |
데이타의 시작점 |
NO |
0 |
end |
데이타의 종료점 |
NO |
데이타의 길이만큼 |
step |
데이타의 증가값 |
NO |
1 |
varStatus |
반복문 상에서 사용되는 속성값index데이타의 현재 index 값count데이타의 증가값(시작은 1부터)first데이타의 처음인지 여부last데이타의 마지막인지 여부 |
NO |
None |
<c:forEach>
for
문과 같은 데이타에 대한 반복문
1
2
3
4
5
6
7
| <c:forEach items="${user.languages}" var="lang" varStatus="status">
<c:if test="${status.first}">
You speak these languages: <br><ul>
</c:if>
<li><c:out value="${lang}"/></li>
<c:if test="${status.last}"></ul></c:if>
</c:forEach>
|
Attribute |
Description |
Req |
Default |
var |
반복문안에서 사용할 데이타 변수명 |
NO |
None |
items |
반복문안에서 사용할 데이타 |
No |
None |
<c:forTokens>
문자열 데이타를 사용해서 for
문과 같은 데이타에 대한 반복문
1
2
3
4
| <c:set var="users">Fred,Joe,Mary</c:set>
<c:forTokens items="${users}" var="name" delims=",">
<c:out value="${name}"/><br>
</c:forTokens>
|
Attribute |
Description |
Req |
Default |
var |
반복문안에서 사용할 데이타 변수명 |
NO |
None |
items |
반복문안에서 사용할 문자열 데이타 |
YES |
None |
delims |
문자열 데이타를 나눌 구분자 |
YES |
None |
URL 관련
<c:import>
URL로 컨텐츠를 삽입하는 태그, <c:param>
태그를 사용해서 쿼리 스트링을 넘겨줄 수 있다.
1
2
3
| <c:import url="includes/header.jsp">
<c:param name="title">Hello World<c:param>
</c:import>
|
Attribute |
Description |
Req |
Default |
url |
삽입할 컨텐츠 URL |
YES |
None |
context |
다른 로컬 웹 애플리케이션에서 삽입할 경우의 해당 애플리케이션 컨텍스트 |
NO |
현재 컨텍스트 |
<c:url>
URL 규칙을 적용해서 작성할 때 사용(자동으로 컨텍스트 삽입 등…)
1
2
3
4
| <c:url="editProfile.do" var="profileLnk">
<c:param name="id" value="${user.id}"/>
</c:url>
<a href='<c:out value="${profileLnk}"/>'>
|
Attribute |
Description |
Req |
Default |
url |
삽입할 컨텐츠 URL |
YES |
None |
context |
다른 로컬 웹 애플리케이션에서 삽입할 경우의 해당 애플리케이션 컨텍스트 |
NO |
현재 컨텍스트 |
<c:redirect>
페이지를 URL로 리다이렉트 함
1
2
3
| <c:if test="${empty user}">
<c:redirect url="login.do"/>
</c:if>
|
Attribute |
Description |
Req |
Default |
url |
리다이렉트할 URL |
YES |
None |
context |
다른 로컬 웹 애플리케이션으로 리다이렉트할 경우의 해당 애플리케이션 컨텍스트 |
NO |
현재 컨텍스트 |
<c:param>
<c:import>
, <c:url>
, <c:redirect>
태그와 함께 사용해서 파라미터를 넘겨줌
Attribute |
Description |
Req |
Default |
name |
파라미터 이름 |
YES |
None |
value |
파라미터 값 |
NO |
Body |
Function 태그
문자열을 조작하는 함수
<%@ taglib prefix="fn" uri="http://java.sun.com/jstl/functions" %>
1
| ${fn:function(arg0, …)}
|
Function |
Description |
fn:contains(string, substring) |
substring 문자열이 string 문자열에 포함되었는지 확인 |
fn:containsIgnoreCase(string, substring) |
대소문자 구분없이 substring 문자열이 string 문자열에 포함되었는지 확인 |
fn:join(string[], separator) |
string 배열을 separator를 사용해서 하나의 문자열로 변환 |
fn:length(collection or string) |
콜렉션의 길이 또는 문자열의 길이 |
fn:replace(inputString, beforeString, afterString) |
inputString에서 beforeString을 afterString으로 변환 |
fn:split(string, delimiters) |
string 문자열을 delimiters로 나눠서 배열로 변환 |
fn:substring(string, beginIndex, endIndex) |
string으로 beginIndex부터 endIndex까지 자름 |
fn:substringAfter(string, substring) |
string 문자열 substring 이후부터 끝까지 자름 |
fn:substringBefore(string, substring) |
string 문자열 처음부터 substring 이전까지 자름 |
fn:trim(string) |
string 문자열의 whitespace 를 모두 제거함 |