이전글
표현 언어(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 |