본문 바로가기
개발관련/JSP

EL 사용법 / request, session 등에 있는 값을 jsp에서 간편하게 사용해보자.

by joa-yo 2020. 2. 26.
반응형

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

 

[JSP] Expression Language (EL) 내용 정리

Expression Language (EL) Java Bean component에 저장된 데이터 접근 가능성, request, application, session 같은 다른 객체를 간소화 한 것 implicit objects, operators and reserve words등 Syntax: Implicit Objects Implicit Object...

velog.io

https://opentutorials.org/module/3569/21228

 

EL(Expression Language) - JSP/서블릿 흝어 보기

EL(Expression language)란? EL은 Expression language의 약자로 JSP 2.0 스펙에 추가된 개념이다. 원래는 JSTL 1.0 규약에 소개된 내용으로 자바 코들르 대신해 실행시간에 태그의 속성 값을 지정하는 역활을 했었습니다. 초기의 EL은 JSTL의 액션 태그에서만 작동하는 문제가 있었는데, JSP 2.0 부터는 JSP 컨테이너가 EL 표현식을 해석할 수 있게 도어 표준 액션 태그, 커스텀 태그, 템플릿 데이터와 같이

opentutorials.org

https://victorydntmd.tistory.com/155

 

[JSP/Servlet] 객체 범위 ( Scope )

1. 객체 범위 종류 웹 애플리케이션에는 4개의 객체 범위가 존재합니다. page 영역 한 번의 클라이언트 요청이 오면, 하나의 JSP 페이지가 응답됩니다. page 영역은 이 때 하나의 JSP 페이지 내에서만 객체를 공유..

victorydntmd.tistory.com

 

반응형

댓글