JSP

[JSP] EL : Expression Language

shb 2022. 4. 6. 18:02

EL (Expression Language) 표현언어 ?

EL(Expression Language: 표현언어)란, 표현식 또는 액션 태그를 대신해서 ‘값’을 표현하는 언어입니다. 
Java 도 아니고, JSP 도 아니지만, JSP를 보완하는 스크립트 언어입니다.

<%= value %>   ->   ${value}

표현식(익스페레션)        EL

 

EL사용 이점:
자바코드로 나타내기 번거로운 값(특히 속성값) 표현 단순화
액션태그, JSTL 등과의 조합에서도 코딩 간결.

 

EL 의 기본구문
${식}
- ‘식’ 부분에는 EL이 정의한 문법에 따라 값을 표현하는 식이 온다. (액션태그 또는 커스텀태그의 속성 값, 표현식)
- JSP의 스크립트 요소(스크립트릿, 표현식, 선언부)를 제외한 나머지 부분에서 사용될 수 있다.

 

EL 에서 사용가능한 연산자
산술 : +, -, *, / %
관계형 : ==, != <, >, <=, >=
조건 : a? b : c
논리 : &&, ||

 

2. 액션태그로 사용되는 EL
EL로 스크릿트릿의 Java변수값 표현은 안되나, 액션태그 등의 값은 출력 가능.
<jsp:getProperty name="member" property="name"/>
                               ↓
                     ${member.name}

-> member.getName() 값을 표현하게 된다. 단, 그 결과가 null 이면 표현하지 않는다

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="dto" class="com.lec.beans.WriteDTO" scope="page" />
<jsp:setProperty name="dto" property="uid" value="123"/>
<jsp:setProperty name="dto" property="subject" value="제목입니다"/>
<jsp:setProperty name="dto" property="name" value="작성자입니다"/>    
    
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>EL - Bean</title>
</head>
<body>
	uid : <%= dto.getUid() %><br>
	제목 : <%= dto.getSubject() %><br>
	작성자 : <%= dto.getName() %><br>
	내용 : <%= dto.getContent() %><br>
	<hr>
	
	uid : <jsp:getProperty name="dto" property="uid"/><br>
	제목 : <jsp:getProperty name="dto" property="subject"/><br>
	작성자 : <jsp:getProperty name="dto" property="name"/><br>
	내용 : <jsp:getProperty name="dto" property="content"/><br>
	<hr>
	
	uid : ${dto.uid }<br> <%-- dto 객체의 getUid() 값 --%>
	제목 : ${ dto.subject }<br>
	작성자 : ${ dto.name }<br>
	내용 : ${dto.content }<br>	<%-- 값이 null 이면 표현안함 --%>
	dto : ${dto }<br>  <%-- dto 객체의 toString() 값 --%>
	regdate : ${dto.regDate }<br> 
	xxx : ${dto.xxx }<br> <%-- dto.getXxx() 값--%>
	<%-- 해당 getter 가 없으면
		PropertyNotFoundException 발생
	 --%>
	 
	 <%
	 request.setAttribute("aaa", 100);
	 session.setAttribute("aaa", 100);
	 pageContext.setAttribute("aaa", 100);
	 application.setAttribute("aaa", 100);
	 %>
	 
	 <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</body>
</html>

 

3. EL 의  내장 객체 
EL 도 11개의 기본 내장 객체를 제공한다.
값이 존재하지 않을 경우 null을 출력하지 않고 아무것도 출력하지 않는다.

 

 pageContext  : JSP의 page 기본 객체와 동일하다. 
 pageScope : pageContext 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체 
 requestScope : request 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체 
 sessionScope : session 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체 
 applicationScope : application 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체 
 param : 요청 파라미터의 <파라미터이름, 값> 매핑을 저장한 Map 객체, 타입은 String (request.getParameter(이름)의 결과와 동일)
 paramValues : 요청 파라미터의 <파라미터이름, 값 배열>매핑을 저장한 Map 객체, 타입은 String[] (request.getParameterValues(이름)의 결과와 동일)
 header : 요청 정보의 <헤더이름, 값> 매핑을 저장한 Map 객체 (request.getHeader(이름)의 결과와 동일)
 headerValues : 요청 정보의 <헤더이름, 값 배열> 매핑을 저장한 Map 객체 (request.getHeaders(이름)의 결과와 동일)
 cookie : <쿠키 이름, Cookie> 매핑을 저장한 Map 객체 (request.getCookies()로 구한 Cookie 배열로 부터 매핑을 생성) 
 initParam : 초기화 파라미터의<이름, 값> 매핑을 저장한 Map 객체 (application.getInitParameter(이름)의 결과와 동일) 

 

${member} => request.getAttribute("member");
${param.name} => request.getParameter("name");
${paramValues.name} 
     => request.getParameterValues("name");
${paramValues.name[0]} 
     => request.getParameterValues("name")[0];

저장 객체의 attribute에 자동 접근하는데 자동검색 순위는 
page → request → session → application 순이다.

'JSP' 카테고리의 다른 글

[JSP] Authentication - 회원가입  (0) 2022.04.07
[JSP] JSTL(JSP Standard Tag Library)  (0) 2022.04.06
[JSP] MVC model2  (0) 2022.04.06
[JSP] DAO, DTO  (0) 2022.04.06
[JSP] JBDC  (0) 2022.04.06