[JSP] EL과 JSTL
EL(Expression Language)
JSP에서 저장 객체를 출력할 때 스크립팅을 사용하지 않도록 하는 기술
일종의 스크립트 언어로 자료 타입, 수치 연산자, 논리 연산자, 비교 연산자 등을 제공하며 표현식을 대체 가능
표현식
<%= value %>
EL
${value }
EL 내부에 사용하는 연산자
1. 산술: +, -, *, /, %
2. 관계: ==, !=, <, <=, >, >=
3. 조건: a ? b : c
4. 논리: &&, ||
${a = 15 }
${a } // 15
${a < 10 } // false
${(a == 15) ? "a는 15와 같다" : "a는 15와 다르다" } // a는 15와 같다
${(a > 10) || (a != 15) } // true
JSTL(JSP Standard Tag Library)
JSP 페이지에서 Java 코드를 사용하지 않고 로직을 내장하는 방법을 제공
표준화된 태그 셋을 사용하여 코드의 가독성과 유지보수에 좋음
Tomcat 기본 컨테이너에 포함되어 있지 않기 때문에 별도의 라이브러리를 설치
JSTL Core Library
Core 라이브러리는 기본적인 라이브러리로 출력, 제어문, 반복문과 같은 기능이 포함되어 있음
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
해당 라이브러리를 사용하려면 JSP 파일 내, 지시자 태그로 입력
1. 출력 태그
<c:out value = "출력할 내용">
2. 변수 선언 태그
<c:set var = "변수명" value = "설정 값" scope = "범위">
var
값을 저장할 EL 변수의 이름을 지정
value
변수의 값을 지정
scope
변수를 저장할 영역을 지정
- pageScope
: JSP의 page 객체를 참조하는 객체
- requestScope
: JSP의 request 객체를 참조하는 객체
- sessionScope
: JSP의 session 객체를 참조하는 객체
- applicationScope
: JSP의 application 객체를 참조하는 객체
3. 변수 제거 태그
<c:remove var = "변수명" scope = "범위">
주의: 삭제할 변수의 scope을 지정하지 않으면 동일한 이름으로 저장된 모든 영역의 변수를 삭제함
4. 조건문(if) 태그
Java의 if
구문과 비슷한 기능을 제공하지만, if ~ else
구문과 같은 효과를 낼 수는 없음
<c:if test = "조건식" var = "조건 처리 변수명">
처리할 내용
</c:if>
5. 조건문(choose) 태그
Java의 switch
구문과 if ~ else
구문을 혼합한 형태로 다수의 조건문을 하나의 블럭에서 수행할 때 사용
<c:choose>
<c:when test = "조건식">처리할 내용</c:when>
<c:when test = "조건식">처리할 내용</c:when>
<c:otherwise>처리할 내용</c:otherwise>
</c:choose>
6. 반복문 태그
배열, 컬렉션, 맵에 저장되어 있는 값들을 순차적으로 처리할 때 사용
<c:forEach items = "객체명" begin = "시작 값" end = "끝 값" step = "증감식" var = "변수명"></c:forEach>