코딩항해기
[JSP] EL식, JSTL 본문
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개의 파일을 복사해 넣어야한다.
태그 | 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"; |
'JSP' 카테고리의 다른 글
[JSP] xml 파일로 error 페이지 설정하기 (0) | 2024.08.14 |
---|---|
[JSP] 커스텀 태그, 사용자 지정 태그 (0) | 2024.08.14 |
[JSP] header, footer 넣기 (0) | 2024.08.09 |
[JSP] JDBCUtil 템플릿 정리 (0) | 2024.08.09 |
[JSP] response.sendRedirect() 주의사항 (0) | 2024.08.08 |