이전글
표현 언어(EL)를 이용한 내장객체 사용법
JSP에서는
request
, session
, application
등의 기본적인 내장객체에 대한 참조변수를 제공하여 사용할 수 있게 해줍니다. 표현언어(Expression Language)에서도 JSP와 마찬가지로 내장객체를 제공하지만 참조변수명이 JSP의것과 다릅니다.추가적으로 JSP의 기본적인 내장객체와 다르게 HTTP 헤더를 참조할 수 있는
header
객체나 쿠키를 참조할 수 있는 cookie
객체 등을 추가로 제공합니다. EL
에서 내장객체를 참조할때는 아래와 같이 사용합니다. 예제 GIT 링크<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% session.setAttribute("age", 29); //슬픔 %> <html> <head> <title>EL의 내장 객체 사용</title> </head> <body> 요청 파라미터의 name값 : ${param.name}<br> 세션 스코프의 age 속성값 : ${sessionScope.age} </body> </html> | cs |
EL 구문으로 작성된 코드 몇 글자 만으로 요청파라미터와 세션에 바인딩된 속성값을 출력하였습니다.
내장 객체 종류와 설명
앞서 간단히 살펴본 예제와 같이 EL에서 사용할 수 있는 내장객체는 다음 표와 같은것들이 있습니다.
분류 | 내장 객체 | 설명 |
예시 |
스코프 |
pageScope | page 영역의 Attribute 에 바인딩 된 객체를 참조하는 Map 객체 |
${pageScope.속성명}
|
requestScope |
request 영역의 Attribute 에 바인딩 된 객체를 참조하는 Map 객체 |
${requestScope.속성명}
|
|
sessionScope |
session 영역의 |
${sessionScope.속성명}
|
|
applicationScope |
application 영역의 Attribute 에 바인딩 된 객체를 참조하는 Map 객체 |
${applicationScope.속성명}
|
|
요청 파라미터 |
param | HTTP 요청 파라미터 값 참조하는 Map 객체 |
${param.파라미터명}
|
paramValues |
HTTP 요청 파라미터를 배열로 참조
param 과는 다르게 배열이므로 속성명 뒤에 배열의 요소를 참조하는것처럼 [index] 를 붙여주어야 함 |
${paramValues.속성명[index]}
${paramValues.name[2]} |
|
HTTP 헤더 | header |
HTTP 요청 헤더의 값 |
${header.헤더명}
|
쿠키 |
cookie |
쿠키 값을 참조하는
Map<String, Cookie> 객체 |
${cookie.쿠키명}
|
세션 |
session |
HttpSession 객체 참조 |
$pageContext.session}
|
요청, 응답
|
request | ServletRequest 객체 참조 |
$pageContext.request}
|
response |
ServletResponse 객체 참조 |
||
Context 객체
|
pageContext |
PageContext 객체 참조 |
$pageContext}
|
servletContext |
ServletContext 객체 참조 |
$pageContext.servletContext}
|
|
초기화 파라미터 |
initParam |
컨텍스트 초기화 파라미터 값 참조하는 Map 객체로 application.getInitParameter(name) 과 동일 |
${initParam.파라미터명}
|
EL에서 스코프(Scope) 객체의 속성 참조
EL에서는 단순히 속성명만을 지정해준 경우 암묵적으로 위 표에서 설명한 네가지 Scope 객체(
pageScope
, requestScope
, sessionScope
, applicationScope
)를 차례대로 탐색하며 getAttribute()
를 호출하여 값을 얻어냅니다.위 그림은 아래와 같이 EL 표현식을 사용한 경우입니다. pageScope에 값이 없는 경우 우선순위에 따라 탐색하다 sessionScope에서 값을 찾아 리턴합니다.
이름은 : ${name} //dololak | cs |
만약 각 스코프별로 같은 name의 속성이 존재하고 특정 스코프객체의 속성값이 필요한 경우 해당 스코프 내장객체변수를 이용하여 속성을 얻어내면 됩니다.
이름은 : ${applicationScope.name} | cs |
스코프 속성 참조 테스트
주석을 풀어가며 우선순위를 테스트 해보도록 합니다. 예제 GIT 링크
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% // pageContext.setAttribute("name", "dololak1"); // request.setAttribute("name", "dololak2"); session.setAttribute("name", "dololak3"); application.setAttribute("name", "dololak4"); %> <html> <head> <title>EL의 스코프 우선 순위</title> </head> <body> 이름은 : ${name} </body> </html> | cs |
sessionScope
가 applicationScope
보다 우선순위에 있기때문에 dololak3
이 출력됩니다.다음글
연관글
'Servlet&Jsp' 카테고리의 다른 글
[서블릿/JSP] TLD(Tag Library Descriptor)란? tld 파일 작성 방법 (0) | 2019.08.09 |
---|---|
[서블릿/JSP] 표현 언어(EL)의 일반객체 및 컬렉션객체 사용법 (0) | 2019.08.07 |
[서블릿/JSP] 표현 언어(EL)의 연산자 규칙 및 사용법. (0) | 2019.08.06 |
[서블릿/JSP] 표현 언어(EL) 기본 사용법 및 자료형 설명 (0) | 2019.08.06 |
[서블릿/JSP] 표현언어(EL)에서 ${}과 #{} 표기법의 차이 (1) | 2019.08.05 |