카테고리 없음
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>
예제 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