EL = Expression Language
EL은 header, request, session, application과 같은 객체의 값을 편리하게 가져올 수 있도록 JSP에서 제공하는 기능입니다. EL은 JSP페이지 내에서 어느 위치에서든 사용할 수 있습니다.
예) 로그인여부 판단 및 포워딩처리
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:choose>
<c:when test="${sessionScope.userid eq null}">
<jsp:forward page="/memberLogin"/>
</c:when>
<c:otherwise>
<jsp:forward page="/index"/>
</c:otherwise>
</c:choose>
sessionScope에 있는 값 중 userid를 가져와서 null여부를 검사합니다. 로그인이 되어있다면 null이 아니므로, 초기화면으로 가고, 로그인 되어있지 않은 경우 로그인페이지로 이동합니다. JSTL과 EL이 함께 사용된 예시입니다.
위처럼, JSTL코드 내부에서도 사용할 수 있고, HTML페이지 어디에서든 필요한 곳에 사용할 수 있습니다. EL을 사용할 때는 ${[변수명 또는 수식]}과 같은 형태로 사용합니다.
EL 내장객체
저는 내장객체를 두가지로 분류하였습니다. Scope가 접미사로 붙어있는 내장객체는, 변수의 사용범위에 따라 나누어 놓은 것입니다. 붙어있지 않은 param, header등의 내장객체는 요청과 관련되어 있습니다.
사용범위에 따른 내장객체
내장객체 | 설명 |
pageContext | JSP 내장 객체 pageContext와 같습니다. |
pageScope | pageContext에 등록된 데이터의 이름과 값을 저장하고 있는 map객체 |
requestScope | HttpServletRequest에 등록된 데이터의 이름과 값을 저장하고 있는 map객체 |
sessionScope | HttpSession에 등록된 데이터의 이름과 값을 저장하고 있는 map객체 |
applicationScope | ServletContext에 등록된 데이터의 이름과 값을 저장하고 있는 map 객체 |
요청과 관련된 내장객체
내장객체 | 설명 |
param | QueryString의 이름과 값을 저장하고 있는 map객체 |
paramValues | 같은 이름으로 전달된 질의 문자열의 이름과 값들을 저정하고 있는 map 객체 |
header | 요청정보 헤더의 정보를 이름과 값으로 저장하고 있는 map객체 |
headerValues | 요청정보 헤더의 정보들을 이름과 값들을 저장하고 있는 map객체 |
cookie | 요청을 보낸 클라이언트의 쿠기 이름과 값을 저장하고 있는 map객체 |
initParam | 웹 애플리케이션에 저장한 초기 파라미터의 이름과 값을 저장하고 있는 map 객체 |
임의의 객체 EL로 사용하기
내장객체 뿐만아니라, 사용자가 JSP 화면에 표현하고 싶은 값을 EL로 표현할 수 있습니다. request, session, application 이 세가지의 객체에 값을 넣어줌으로서 사용할 수 있는데요. 넣는 방법과 사용하는 방법을 알아보겠습니다.
값 세팅하기
//동일한 요청에 의해 실행되는 페이지 간에 정보를 유지하기 위해 HttServletRequest 객체에 등록 합니다.
request.setAttribute("member", member);
//클라이언트 단위로 정보를 유지하고자 할 때 HttpSession 객체에 등록합니다.
session.setAttribute("member", member);
//웹 애플리케이션 단위로 정보를 유지하고자 할 때 ServletContext객체에 등록합니다.
application.setAttribute("member", member);
setAttribute를 이용하여 호출시 사용할 명칭과 값을 지정해줍니다.
<더 알고가기>
값 저장범위
- page : 선언한 해당 내에서만 사용할 수 있음.
- request : 사용자가 요청하여 응답할 때 까지 사용할 수 있음 ( forward, include 시에도 값이 유지됨 )
- session : 사용자가 사이트를 벗어나거나 브라우저가 종료될 때 까지 사용
- application : 전역변수로 사용
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원입력 정보</title>
</head>
<body>
<p>아이디 : ${member.userId}</p>
<p>이메일 : ${member.email}</p>
<p>이메일 수신여부 :${member.emailAgree}</p>
<p>핸드폰 : ${member.hp_1}-${member.hp_2}</p>
</body>
</html>
JSP페이지에서 불러서 사용할 때는, 설정한 객체의 명칭을 이용하여 호출하고, 멤버변수 값은 ".[멤버변수명]"을 사용하여 가져옵니다.
참조글 목록
https://velog.io/@ye050425/JSP-Expression-Language-EL-%EB%82%B4%EC%9A%A9-%EC%A0%95%EB%A6%AC
https://opentutorials.org/module/3569/21228
https://victorydntmd.tistory.com/155
댓글