카테고리 없음

JSP EL 표현식

하와이블루 2022. 12. 11. 10:09
728x90

 

 

EL(Expression Language) 표현식은 JavaBeans의 프로퍼티, 값 등을 액션태그, 스크립트 태그를 사용하는 것 보다 쉽고 간결하게 사용할 수 있도록하는 기술로 기존에 스크립트 태그의 <%= ... %> 태그에서 ${ ... } 로 변환하여 간결하게 표현이 가능하다.

 

 

 

 

 

1. EL 표기법

request,  response, session, application 영역값을 저장하거나 출력할 수 있다.

${   } : get 기능을 수행(JSP가 실행될 시 즉시 반영)

#{   } : set 기능을 수행(시스템에서 필요하다고 판단될 시 값을 사용)

 

<%
	request.setAttribute("userid", "이순신");
%>
<p>el requestScope : ${requestScope.userid}</p> // 이순신

${   } 를 사용하여 request에 저장된 userid의 값을 가져온다.

 

 

 

 

 

2. JSP 페이지에서 내장객체를 지원

내장객체  설명
pageContext  JSP PageContext 객체
servletContext ServletContext 객체
pageScope  pageContext에 등록된 데이터의 이름과 값을 저장하고 있는 객체(현재 페이지)
requestScope  HttpServletRequest에 등록된 데이터의 이름과 값을 저장하고 있는 객체(전달 받은 값을 저장)
sessionScope  HttpSession에 등록된 데이터의 이름과 값을 저장하고 있는 객체(session객체에 접근)
applicationScope  ServletContext에 등록된 데이터의 이름과 값을 저장하고 있는 객체(전역변수)
param  QueryString의 이름과 값을 저장하고 있는 객체(매개변수)
paramValues  같은 이름으로 전달된 질의 문자열의 이름과 값들을 저정하고 있는 객체(배열형태 매개변수)
header  요청정보 헤더의 정보를 이름과 값으로 저장하고 있는 객체(HTTP 헤더의 값)
headerValues  요청정보 헤더의 정보들을 이름과 값들을 저장하고 있는 객체(배열형태 HTTP 헤더의 값)
cookie  요청을 보낸 클라이언트의 쿠기 이름과 값을 저장하고 있는 객체(cookie객체에 조회)
initParam  웹 애플리케이션에 저장한 초기 파라미터의 이름과 값을 저장하고 있는 객체

 

 

 

 

 

3. 리터럴 데이터, 다양한 연산결과 출력

// 리터럴 표현식
문자열 : ${"string"}
문자열 : ${'string'}
정수 : ${5}
부동소수점 : ${1.01}
Boolean : ${true}
null : ${null} // "" 빈 문자열 출력


// 산술연산자
${10 + 2}
${10 - 2}
${10 * 2}
${10 div 2} // 나누기
${10 mod 2} // 나머지


// 비교연산자
${10 eq 2} // 같다
${10 ne 2} // 다르다
${10 gt 2} // 크다
${10 lt 2} // 작다
${10 ge 2} // 크거나 같다
${10 le 2} // 작거나 같다


// 논리연산자
${true and true} // and
${true or true} // or
${not true} // !

 

 

 

 

 


 

 

 

 

 

예제 1) 내장객체, 연산 결과 출력

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	pageContext.setAttribute("userid", "pageContext 영역의 변수");
	request.setAttribute("userid", "request 영역의 변수");
	session.setAttribute("userid", "session 영역의 변수");
	application.setAttribute("userid", "application 영역의 변수");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>el(표현 언어)</title>
</head>
<body>
	<h2>el(표현언어)</h2>
	<p><%=pageContext.getAttribute("userid")%></p>
	<p><%=request.getAttribute("userid")%></p>
	<p><%=session.getAttribute("userid")%></p>
	<p><%=application.getAttribute("userid")%></p>
	<hr>
	
	<p>el default : ${userid}(pageContext)</p>
	<p>el pageScope : ${pageScope.userid}</p>
	<p>el requestScope : ${requestScope.userid}</p>
	<p>el sessionScope : ${sessionScope.userid}</p>
	<p>el application : ${applicationScope.userid}</p>
	<hr>
	
	<p>덧셈 : ${10+20}</p>	
	<p>뺄셈 : ${20-10}</p>	
	<p>곱셈 : ${10*20}</p>	
	<p>나누기 : ${10 div 20}</p>
	<p>나머지 : ${35 mod 20}</p>	
	<hr>
    
	<p>같다 : ${10 eq 10}</p>	
	<p>다르다 : ${10 ne 10}</p>
	<p>작다 : ${10 lt 10}</p>	
	<p>크다 : ${10 gt 10}</p>	
	<p>작거나 같다 : ${10 le 10}</p>	
	<p>크거나 같다 : ${10 ge 10}</p>	
</body>
</html>

 

el 표현식

 

 

 

 

 


 

 

 

 

 

예제 2) 자바 클래스 이용하여 데이터 출력

package com.abc.el;

public class Eltest {
	public String str = "el의 문자열 변수";

	public String getStr() {
		return str;
	}

	public void setStr(String str) {
		this.str = str;
	}
	
	public int sum(int num1, int num2) {
		return num1 + num2;
	}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="test" class="com.abc.el.Eltest"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>자바 클래스를 활용한 el 문법</title>
</head>
<body>
	<h2>자바 클래스를 활용한 el 문법</h2>
	<p>test.getStr() : ${test.getStr()}</p>
	<p>test.setStr("Hello El!") ${test.setStr("Hello El!")}</p>
	<p>test.getStr() : ${test.getStr()}</p>
	<p>test.sum(10, 5) : ${test.sum(10, 5)}</p>
</body>
</html>

 

 

 

 

 

 

 

 

728x90