JSTL (JavaServer Pages Standard Tag library)
표준 태그 라이브러리 - 일반적인 웹 어플리케이션 기능인 반복과 조건, 데이터 관리 포맷, XML 조작, 데이터베이스 엑서스를 구현하는 커스텀 태그 라이브러리 모음
종류 |
설명 |
prefix |
uri |
core |
데이터 출력, 제어문, URL처리등 기본 기능 |
c |
http://java.sun.com/jsp/jstl/core |
fmt |
I18N 데이터 포멧 기능 |
fmt |
http://java.sun.com/jsp/jstl/fmt |
sql |
JDBC 작업 수행 |
sql |
http://java.sun.com/jsp/jstl/sql |
xml |
XML 문서에 대한 처리 |
x |
http://java.sun.com/jsp/jstl/xml |
functions |
콜렉션 처리, String 처리 등 |
fn |
http://java.sun.com/jsp/jstl/functions |
JSTL을 사용하기 위하여 아래 파일을 lib 폴더에 저장한다. 물론 아래 jar은 버전별 이름이 다르다.
파일 |
설명 |
WEB-INF/lib/jstl.jar |
JSTL API 라이브러리 |
WEB-INF/lib/standard.jar |
JSTL 구현 라이브러리 |
JSTL 적용 - JSTL을 사용하기 위하여 각 페이지 상단에 아래와 같이 선언문을 추가한다. (아래는 core의 예이다.)
<%@ taglib prefix="c" url="http://java.sun.com/jstl/core" %>
EL (Expression Language)
데이터 혹은 객체를 표현하는데 사용하는 스크립트 언어로 ${}를 사용한다. EL은 JSP에서 저장객체를 출력할 때 스크립팅을 사용하지 않을 수 있다.
EL의 기본객체
종류 |
기본 객체 |
예제 |
JSP 저장영역 |
pageScope - PageContext 속성 requestScope - HttpServletRequest 속성 sessionScope - HttpSession 속성 applicationScope - ServletContext 속성 |
${requestScope.name} |
HTTP 요청 파라미터 |
param - HttpServletRequest 파라미터 paramValues - 동일 파라미터 이름에 값이 2개 이상 존재하는 경우 |
${param.name} |
JSP 객체 |
pageContext - pageContext cookie - 이름을 키로, Cookie를 값으로 하는 java.util.Map header - 헤더 이름을 키로, 헤더 값을 값으로 하는 java.util.Map headerValues - 동일 헤더 이름에 값이 2개 이상 존재하는 경우 initParam - JSP 초기 변후 |
${cookie.JESSIONID.name} ${headerValues['HOST'][0]} |
저장객체 접근
EL |
Script |
|
${param.name} |
request.getParameter("name"); |
|
${member} |
request.getAttribute("member"); |
|
저장객체의 attribute에 자동으로 접근하는데 자동 검색 순위는 page, request, session, application이다. |
||
${memeber.name} |
Member m = (Member)request.getAttribute("memeber"); m.getName(); |
|
Attribute 저장된 member의 name 속성(또는 키)에 접근 (도트의 왼쪽은 Beans 이거나 Map타입이어야 한다.) |
||
${list["0"]} |
List list = (List)request.getAttirbute("list"); list.get(0); |
|
Attribute 저장된 list를 가져온다. [] 안에 값은 list의 키 값 or 프로퍼티명 or 인덱스이다. []의 왼쪽은 Map, Beans, 배열, List 타입이 올 수 있다. |
* EL에서는 해당 값이 null이거나 공백 일 경우에는 아무 내용도 표시하지 않고 에러도 발생하지 않는다.
산술 연산자
연산자 |
설명 |
예제 |
결과 |
+ |
더하기 |
${10 + 2} |
12 |
- |
빼기 |
${10 - 2} |
8 |
* |
곱하기 |
${10 * 2} |
20 |
/ 또는 div |
나누기 |
${10 / 2} 또는 ${10 div 2} |
5 |
% 또는 mod |
나머지 |
${10 % 3} 또는 ${10 mod |
1 |
* 숫자형이 아니면 숫자형으로 자동 전환을 한 후에 연산을 수행한다.
${"10" + 1} // 101이 아닌 11을 출력한다.
${null + 1} // null은 0으로 처리하여 1을 출력한다.
${"열" + 10} // 숫자가 아니면 예외가 발생한다.
논리 / 관계 연산자
연산자 |
예제 |
결과 |
== 또는 eq |
${5 == 5} 또는 ${5 eq 5} |
true |
!= 또는 ne |
${5 != 5} 또는 ${5 ne 4} |
false |
< 또는 lt |
${5 < 7} 또는 ${5 lt 7} |
true |
> 또는 gt |
${5 > 7} 또는 ${5 gt 7} |
false |
<= 또는 le |
${5 <= 5} 또는 ${5 le 5} |
true |
>= 또는 ge |
${5 >= 6} 또는 ${5 ge 6} |
false |
&& 또는 and |
${true && false} 또는 ${true and false} |
false |
|| 또는 or |
${true || false} 또는 ${true or false} |
true |
! 또는 not |
${!true} 또는 ${not true} |
false |
empty |
${empty name} |
name이 null이거나 빈 문자열이면 true |
not empty |
${not empty name} |
name이 null도 아니고 빈 문자열도 아니면 true |
삼항연산자 ?
예제) ${colors == null ? "transparent" : colors}
참고자료 : http://slog2.egloos.com/3581446, http://blog.daum.net/kimslovehouse/8239530
'Programming > JSTL' 카테고리의 다른 글
JSTL Core (0) | 2013.12.09 |
---|