본문 바로가기
Web/JSP

[JSP] EL(Expression Language)로 기본객체 접근하기

by EricJeong 2019. 7. 22.

EL은 기본 객체의 getter 메서드를 그대로 이용할 수 있습니다.

다만, 일반 표현식에서 사용하는 것 처럼 메서드 형태로 이용하기보다는

변수 이름으로 가져오는 방식을 주로 사용합니다.

 

자세한 사용 방법은 아래 예제를 통해 확인하실 수 있습니다.

 

request header에 접근하는 방법

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>How to get request header?</title>
</head>
<body>
	<h3>헤더에 접근하는 방법</h3>
	HOST : <%=request.getHeader("host") %><br>
	CONNECTION : <%=request.getHeader("connection") %><br>
	
	<h3>헤더에 접근하는 방법(EL)</h3>
	HOST : ${header.host }<br>
	CONNECTION : ${header.connection }<br>
</body>
</html>

 

 

결과 창

 

기본객체에 접근하는 방법

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>How to get request header?</title>
<style>
	td{
		border: 1px solid blue;
		width: 200px;
	}
	*{
		font-size: 14px;
		font-family: 나눔고딕;
	}
</style>
</head>
<body>
<table>
	<tr>
		<td>표현식</td>
		<td>결과값</td>
		<td>EL</td>
		<td>결과값</td>
	</tr>
	<tr>
		<td><\%=request.getContextPath() %></td>
 		<td><%=request.getContextPath() %></td>
 		<td>\${pageContext.request.contextPath }</td>
 		<td>${pageContext.request.contextPath }</td>
 	</tr>
 	<tr>
 		<td><\%=request.getRemoteAddr() %></td>
 		<td><%=request.getRemoteAddr() %></td>
 		<td>\${pageContext.request.remoteAddr }</td>
 		<td>${pageContext.request.remoteAddr }</td>
 	</tr>
 	<tr>
 		<td><\%=application.getRealPath("") %></td>
 		<td><%=application.getRealPath("") %></td>
 		<td>\${pageContext.servletContext.getRealPath('') }</td>
 		<td>${pageContext.servletContext.getRealPath('') }</td>
 	</tr>
</table>
</body>
</html>

 

결과 창

 

 

EL로 Scope에 접근하는 방법

EL로 Scope에 접근할 때에 주의사항은, Scope에 값이 없을 때 NullPointerException대신 ''(공백)을 반환한다는 것입니다.

 

기본적으로 EL로 Scope에 접근하는 형식은 다음과 같습니다.

 

접근할 때 앞쪽의 pageScope, request, session, application은 생략할 수 있습니다.

생략한 상태로 값을 접근할 때에는 pageScope -> request -> session -> application 순서로 값을 체크하게 됩니다.

 

// pageScope에 접근할 때
${pageScope.(저장한 값의 Key)}

// requestScope에 접근할 때
${request.(저장한 값의 Key)}

// sessionScope에 접근할 때
${session.(저장한 값의 Key)}

// applicationScope에 접근할 때
${application.(저장한 값의 Key)}

 

EL로 쿼리스트링 접근 방법

Ex URL : http://localhost/devEricServers/el/expressionLanguage.jsp?mem_id=a001&mem_pass=asdfasd

위 URL에는 GET형식으로 mem_id와 mem_pass의 값을 넘겨받을 수 있습니다.

 

EL에서는 위와 같은 파라미터 값을 'param'을 통해 다음과 같이 접근할 수 있습니다.

 

ID : ${param.mem_id}<br>
PASS : ${param.mem_pass}<br>

 

EL로 배열, 컬랙션 접근 방법

 

EL로 접근한 값이 배열인 경우 인덱스로 접근이 가능하고, Map일 경우에는 Key값을 통해 접근할 수 있습니다.

arr에서 0번째 인덱스 값 꺼내기 : ${arr[0]}<br>
myMap에서 myKey로 매핑된 값 꺼내기 : ${myMap['myKey']<br>

 

EL로 NULL 비교방법

 

EL에서는 null값을 일반 수식(value == null)을 통해서도 비교할 수 있지만

EL이 가지고 있는 'empty', 'not empty'를 주로 이용합니다.

 

NULL 비교 예제

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	pageContext.setAttribute("myValue","Hello Eric!");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
	td{
	border : 1px solid blue;
	font-size: 20px;
	font-family: 나눔고딕;	
	width: 150px;
	}
</style>
</head>
<body>
	<table>
		<tr>
			<td>Key</td>
			<td>Value</td>
			<td>EL</td>
			<td>is Null?</td>
			<td>EL</td>
			<td>is Not Null?</td>
		</tr>
		<tr>
			<td>myValue</td>
			<td>${myValue}</td>
			<td>\${empty myValue}</td>
			<td>${empty myValue}</td>
			<td>\${not empty myValue}</td>
			<td>${not empty myValue}</td>
		</tr>
		<tr>
			<td>nullValue</td>
			<td>${nullValue}</td>
			<td>\${empty nullValue}</td>
			<td>${empty nullValue}</td>
			<td>\${not empty nullValue}</td>
			<td>${not empty nullValue}</td>
		</tr>
	</table>
</body>
</html>

 

결과 창

 

nullValue를 키로 넘긴 값은 NULL이기 때문에, 공백 문자가 온 것을 확인할 수 있습니다.

댓글