코딩항해기

[JSP] EL식, JSTL 본문

JSP

[JSP] EL식, JSTL

miniBcake 2024. 8. 14. 09:02

 

 

 

EL (Expression Language)

속성 값을 편리하게 출력하기 위해 제공된 언어이다.

JSP 2.0 버전에서 새로 추가된 언어이며, <%= %> 지시어로 불러왔던 값을 ${}로 간단하게 사용할 수 있도록 도와준다.

 

Attribute 형식에서는 바로 ${cnt + 1} 등의 형태로 사용할 수 있으며, 

request.getAttribute("cnt") + 1과 같다.

값을 찾을 때는 작은 Scope에서 큰 Scope로 넘어가며 값을 찾는다.

(page -> request -> session -> application)

 

Parameter 형식에서는 앞에 Parameter값을 불러온다는 것을 별도로 명시해야한다.

${param.cnt}

 

EL 연산자

태그에서 '<' 꺽쇠를 사용하다보니 태그와의 오해 소지가 있다. 하여 EL에서는 단어 연산자 대신 기호 연산자를 사용한다.

  단어 연산자 기호 연산자
더하기 + +
빼기 - -
곱하기 * *
나누기 / div
나머지 % mod
AND && and
OR || or
not ! not
A가 B보다 크다 A > B A lt B (less than)
A가 B보다 작다 A < B A gt B (greater than)
A가 B보다 크거나 같다 A >= B A le B (less or equals)
A가 B보다 작거나 같다 A <= B A ge B (greater or equals)
A와 B는 같다 A == B A eq B (equals)
A와 B는 같지 않다 A != B A ne B (not equals)
A는 null이다 A == null empty A
A는 null이 아니다 A != null not empty A

 

 

 

JSTL (Jsp Standard Tag Library)

표준 액션 태그로 처리하기 힘든 부분을 보완해주는 언어이다.

EL식으로 java 언어를 사용하지 않고 값을 불러올 수 있게 되었지만 EL식은 제어문을 처리할 수 없다.

이 부분을 보완해주는 역할을 하며, Core에서 c를 이용해 <% if(){}%>문을 <c:if></c:if> 형태로 바꿔준다.

 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

 

Core에서 사용되는 prefix는 변수 선언이다. JSTL은 일반적으로 c를 사용하며, c 대신 mini를 작성한다면 mini로 시작하는 태그를 작성해야한다.

 

또한 WEB-INF 하위의 lib 폴더에 JSTL 파일을 넣어야하는데, 만약 사용하는 apache tomcat 서버가 10이상이라면 기존 2개 파일에 2개파일을 추가해 4개의 파일을 복사해 넣어야한다.

 

jakarta.servlet.jsp.jstl-api-2.0.0.zip
3.59MB

 

 

 

 

태그 JSTL 예시 같은 의미의 java
<c:set> <c:set var="num" value="100"/> int num = 100;
<c:out> <c:out value="안녕하세요"/> System.out.println("안녕하세요");
<c:if> <c:if test="${num > 0}">양수입니다</c:if> if (num > 0) { System.out.println("양수입니다"); }
<c:choose> <c:choose>
<c:when test="${num == 1}">하나</c:when>
<c:otherwise>다른 숫자</c:otherwise>
</c:choose>
switch (num) {
case 1: System.out.println("하나"); break;
default: System.out.println("다른 숫자");
}
<c:when> <c:when test="${num == 1}">하나</c:when> case 1: System.out.println("하나"); break;
<c:otherwise> <c:otherwise>다른 숫자</c:otherwise> default: System.out.println("다른 숫자");
<c:forEach> <c:forEach var="item" items="${items}">
<c:out value="${item}"/>
</c:forEach>
for (String item : items) {
System.out.println(item);
} (향상된 for문)
<c:forEach varStatus="status" begin="0" end="4">
<c:out value="${status.index}"/>
</c:forEach>
for (int i = 0; i <= 4; i++) {
System.out.println(i);
} (일반 for문)
<c:import> <c:import url="path/to/file"/> import java.io.*; (파일 읽기)
<c:url> <c:url value="path/to/resource"/> String url = "path/to/resource";