[서블릿/JSP] 표현 언어(EL)의 내장객체 사용법
이전글
[서블릿/JSP] 표현 언어(EL) 기본 사용법 및 자료형 설명
표현 언어(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>
EL 구문으로 작성된 코드 몇 글자 만으로 요청파라미터와 세션에 바인딩된 속성값을 출력하였습니다.

내장 객체 종류와 설명
앞서 간단히 살펴본 예제와 같이 EL에서 사용할 수 있는 내장객체는 다음 표와 같은것들이 있습니다.
| 분류 | 내장 객체 | 설명 | 예시 |
|---|---|---|---|
| 스코프 | pageScope |
page 영역의 Attribute에 바인딩 된 객체를 참조하는 Map객체 |
${pageScope.속성명} |
requestScope |
request 영역의 Attribute에 바인딩 된 객체를 참조하는 Map객체 |
${requestScope.속성명} |
|
sessionScope |
session 영역의 Attribute에 바인딩 된 객체를 참조하는 Map객체 |
${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
만약 각 스코프별로 같은 name의 속성이 존재하고 특정 스코프객체의 속성값이 필요한 경우 해당 스코프 내장객체변수를 이용하여 속성을 얻어내면 됩니다.
이름은 : ${applicationScope.name}
스코프 속성 참조 테스트
주석을 풀어가며 우선순위를 테스트 해보도록 합니다. 예제 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>
sessionScope가 applicationScope보다 우선순위에 있기때문에 dololak3이 출력됩니다.

다음글
[서블릿/JSP] 표현 언어(EL)의 연산자 규칙 및 사용법.
[서블릿/JSP] 표현언어(EL)에서 ${}과 #{} 표기법의 차이
[서블릿/JSP] 표현 언어(EL)의 일반객체 및 컬렉션객체 사용법
연관글
'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 |
도로락
WriterIT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그