-
JSP파일에 자바형식의 코드를 사용하면 불편한 점이 있다.
EL (Expression Language) 과 JSTL (Jsp Standard Tag Library)는 코드를 더욱 간결하게 만든다.
JSP 2.0버전에서 새로 추가된 스크립트 언어인 EL(Expression Language)은
<%= abc %>를 ${abc}로 간단하게 사용할 수 있게 하였고, JSTL의 Core에서 c를 이용해 <%= if%>문을 <c:if>, <%=for%>문을 <c:forEach>로 대체하여 사용한다.
EL (Expression Language)
>> 사용목적
<%= %> , out.println()과 같은 자바코드를
더 이상 사용하지 않고 좀더 간편하게 출력을 지원하기 위한 도구.
배열이나 컬렉션에서도 사용되고, JavaBean의 프로퍼티에서도 사용된다.
>> 문법
Attribute형식에서는 ${cnt + 1}로 쓰고
Parameter형식에서는 ${param.abc}으로 쓴다.
여기서 cnt는 자바에서는 변수 이름이고, EL 식에서는 Attribute명이다.
값을 찾을때 Attribute는 작은 Scope에서 큰 Scope로 찾는다.
(page → request → session → application)
>> 내장객체
1) pageScope → 페이지Scope에 접근
2) request Scope → 리퀘스트Scope에 접근
3) sessionScope → 세션Scope에 접근
4) applicationScope → 어플리케이션Scope에 접근
5) param → 파라미터값 얻어올때 ( 1개의 Key에 1개의 Value )
6) paramValues → 파라미터값 배열로 얻어올때( 1개의 Key에 여러개의 Value)
7) header → 헤더값 얻어올때 ( 1개의 Key에 1개의 Value )
8) headerValues → 헤더값 배열로 얻어올때 ( 1개의 Key에 여러개의 Value )
9) cookie → ${cookie. key값. value값}으로 쿠키값 조회
10) initParam → 초기 파라미터 조회
11) pageContext → 페이지컨텍스트 객체를 참조할때
>> paramValues 나 headerValues 사용법
① $ { paramValues . boadDto [0] }
② $ { paramValues ["bardDto"] [1] }
Values 옆에 점을 찍는 방법과 대괄호로 묶어 사용하는 2가지 방법이 있다.
대신 ①번에서는 인덱스가 0부터 시작하고 ②번에서는 인덱스가 1부터 시작.
JSTL (Jsp Standard Tag Library)
>> JSTL
JSP에서 taglib 디렉티브를 통해서 정의할 수 있다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
스크립트릿을 작성하지 않아도 if문, for문을 사용할 수 있다.
>> 태그 종류
(1) Core (prefix : c)
→ 일반 프로그래밍에서 제공하는 것과 유사한 변수선언
→ 실행 흐름의 제어 기능을 제공
→ 페이지 이동 기술 제공
URI → http://java.sun.com/jsp/jstl/core
(2) Formatting (prefix : fmt)
→ 숫자, 날짜, 시간을 포매팅하는 기능을 제공
→ 국제화, 다국어 지원 기능 제공
URI → http://java.sun.com/jsp/jstl/fmt
(3) DataBase (prefix : sql)
→ DB의 데이터를 입력 / 수정 / 삭제 / 조회 하는 기능을 제공
URI → http://java.sun.com/jsp/jstl/sql
(4) XML (prefix : x)
→ XML문서를 처리할 때 필요한 기능 제공
URI → http://java.sun.com/jsp/jstl/xml
(5) Function (prefix : fn)
→ 문자열을 제공하는 함수 제공
URI → http://java.sun.com/jsp/jstl/functions
JSTL의 Core Library
1. <c:if>
<c:if test="조건식" var="조건을 검사하고 return되는 boolean값을 저장할 변수"> ~~~ </c:if>
2. <c:choose>
<c:choose>
<c:when test="조건식"> ~~~ </c:when>
<c:otherwise> ~~~ </c:otherwise>
</c:choose>
3. <c:foreach>
<c:foreach begin="시작값" end="끝값" step="증가값" var="index 변수"></c:foreach>
<c:foreach var="변수" items="배열or컬렉션"></c:foreach>