EL(Expression Language) + JSTL(Java Standard Tag Library) 정리
처음에 EL과 JSTL을 혼용했다.
EL이 좀 더 큰 개념이고 JSTL은 좀 더 작은 개념으로 생각했기 때문이다.
글을 정리 하다 보니 EL은 화면 출력을 위한 도구이고 JSTL은 제어문이 맞겠다.
Servlet Spec | JSP Spec | EL Spec | WebSocket Spec | JASPIC Spec | Apache Tomcat version | Actual release revision | Supported Java Versions |
---|---|---|---|---|---|---|---|
4.0 | TBD (2.4?) | TBD (3.1?) | TBD (1.2?) | 1.1 | 9.0.x | 9.0.0.M9 (alpha) | 8 and later |
3.1 | 2.3 | 3.0 | 1.1 | 1.1 | 8.5.x | 8.5.4 | 7 and later |
3.1 | 2.3 | 3.0 | 1.1 | N/A | 8.0.x (superseded) | 8.0.35 (superseded) | 7 and later |
3.0 | 2.2 | 2.2 | 1.1 | N/A | 7.0.x | 7.0.70 | 6 and later (7 and later for WebSocket) |
2.5 | 2.1 | 2.1 | N/A | N/A | 6.0.x | 6.0.45 | 5 and later |
2.4 | 2.0 | N/A | N/A | N/A | 5.5.x (archived) | 5.5.36 (archived) | 1.4 and later |
2.3 | 1.2 | N/A | N/A | N/A | 4.1.x (archived) | 4.1.40 (archived) | 1.3 and later |
2.2 | 1.1 | N/A | N/A | N/A | 3.3.x (archived) | 3.3.2 (archived) | 1.1 and later |
먼저 들어가기 전에 EL 최소 Spec을 살펴보자. Tomcat 6, Servlet 2.5, Java 5버전이 최소 Spec이 되겠다.
---------------------------------------------------------------------------------------------
참고 url : http://neoguru.tistory.com/12
WAS 버전은 지원하는데 Servlet 버전이 낮은 경우는 Jsp에서 isELIgnored="false" 옵션을 주면 된다는 내용이 있음.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"isELIgnored="false" %>
---------------------------------------------------------------------------------------------
참고 Url : http://uniksy1106.tistory.com/179
web.xml을 이용한 EL 비활성화 하는 방법이 나와 있다.
그리고, web.xml에 표기된 servlet 버전에 따라 EL의 지원이 갈린다는 내용이 있다.
---------------------------------------------------------------------------------------------
JSP로 게시판 리스트를 작성하는 간단한 코드를 한번 보자.
<table>
<tr>
<td>제목</td>
<td>글쓴이</td>
<td>작성일</td>
</tr>
<% for ( int i =0; i < list.length; i++) { %>
<tr>
<td><%=list[i].["title"]%></td>
<td><%=list[i].["writer"]%></td>
<td><%=list[i].["regdate"]%></td>
</tr>
<%} %>
</table>
EL은 <%= %> 구문을 대신 한거고(화면에 값을 출력한 것이다.)
JSTL은 <% %> 구문을 대신 한 것이다. (루핑을 돌리는 제어문이다)
그렇다면 EL과 JSTL의 정리를 아래와 같이 하기로 했다.
EL
- EL은 어떻게 표현하는가?
- EL의 scope 순서는 어떻게 되는가?
JSTL
- JSTL의 제어문에는 어떠한 종류가 있는가?
EL은 어떻게 표현하는가?
- ${} 로 표현한다.
- 위에 <%= list[i].["title"] %>를 EL로 표기하면 ${list.title} 으로 표현 할 수 있겠다.
EL의 Scope 순서는 어떻게 되는가?
뜬금 없이 Scope(영역)라는 단어가 나왔는데 데이터에는 어떤 데이터가 있을까? 일반적으로는 위에 게시판 리스트를 출력하는 page 단위의 데이터만 생각해서 그렇다. 좀 더 범위를 넓혀보면 form에서 데이터가 넘어온 값 request, 로그인해서 담아 놓은 session 값, 더 크게는 Application의 값 까지도 포함이 된다.
만약 page, request, session, application에 모두 동일한 이름의 attribute가 있다면 어떤 값을 가져올까? 이게 EL의 scope(영역)의 의미이다.
결과적으로는 page에서 해당 attribute를 찾고 없으면 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 : 페이지컨텍스트 객체를 참조할때
JSTL
JSTL을 사용하기 위해서는 tag library를 선언해야 한다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
'Spring' 카테고리의 다른 글
[펌] Spring - JSON, XML , Plain Text 데이터제공 (0) | 2016.09.09 |
---|---|
다국어 지원 참고 싸이트 (0) | 2016.04.20 |
Maven pom.xml mysql, oracle , mssql 연동하기 (0) | 2016.03.27 |
Spring 기반 CRUD 생성 프로젝트 1 (0) | 2016.03.13 |
Context Root (/) 설정 (0) | 2016.03.12 |