본문 바로가기

Programming/JSTL

JSTL

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/3581446http://blog.daum.net/kimslovehouse/8239530

'Programming > JSTL' 카테고리의 다른 글

JSTL Core  (0) 2013.12.09