수업(국비지원)/JSP

[JSP] EL(표현식),JSTL - EL(Expression Language) 표현언어

byeolsub 2023. 4. 18. 23:51
EL(Expression Language) 
    : JSP에서 사용가능한 새로운 스크립트 언어
    : 자바 빈의 프로퍼티, 값을 JSP의 표현식 <%= %>이나 
      액션 태그 jsp:useBean를 사용하는 것 보다 쉽고 간결하게 꺼낼 수 있게 하는 기술
      (간단한 구문 때문에 표현식 대신 사용)
    : JSP에서 Java 코드를 분리하고, Java 코드보다 Java 구성 요소에 더 쉽게 액세스할 수 있다.

💡 static 메소드를 호출할 수도 있는데 JSP에서는 주로 서블릿 보관소 (JspContext, ServletRequest, HttpSession, ServletContext)에서 값을 꺼낼 때 사용.

 


EL의 주요 기능
   : JSP의 네가지 기본 객체가 제공하는 영역의 속성 사용
   : 집합 객체에 대한 접근 방법 제공
   : 수치 연산, 관계 연산, 논리 연산자 제공
   : 자바 클래스 메서드 호출 기능 제공 
   : 표현언어만의 기본 객체 제공

 

EL 데이터 타입
    : Boolean 타입 - true와 false
    : 정수 타입 - 0~9로 이루어진 정수값.
    : 실수 타입 - 0~9로 이루어져 있으며, 소수점('.')을 사용할 수 있고, 3.24e3과 같이 
      지수형으로 표현가능  
    : 문자열 타입 - 따옴표(' 또는 ")로 둘러싼 문자열
      작은 따옴표 사용시, 값에 포함된 작은 따옴표는 \\'로 입력
      \\기호 자체는 \\\\로 표시
    : null 타입

${ }
- JSP가 실행될 때 즉시 반영된다. (Immediate evaluation)
- 객체 프로퍼티 값을 꺼낼때 주로 사용

#{ }
- 시스템에서 필요하다고 판단될 때 그 값을 사용한다. (Deferred evaluation)
- 사용자 입력값을 객체의 프로퍼티에 담는 용도로 주로 사용
- JSP 템플릿 텍스트에서는 사용 불가

**스크립트 요소(스크립트릿, 표현식, 선언부)를 제외한 나머지 부분에서 사용**
  • 객체 설명 코드
pageContext JSP의 PageContext 객체  
servletContext ServletContext 객체 ${pageContext.servletContext.객체명}
session HttpSession 객체 ${pageContext.session.객체명}
request ServletRequest 객체 ${pageContext.request.객체명}
response ServletResponse 객체  
param 요청 매개변수의 값 조회 ${param.매개변수명}
paramValues 요청 매개변수의 값 배열 조회 ${paramValues.매개변수명}
header HTTP 헤더의 값 조회 ${header.헤더명}
headerValues HTTP 헤더의 값 배열 조회 ${headerValues.헤더명}
cookie 쿠키 값 조회 ${cookie.쿠키명}
initParam 컨텍스트 초기화 매개변수의 값 조회 ${initParam.매개변수명}
pageScope page 보관소의 값 조회 ${pageScope.객체명}
requestScope request 보관소의 값 조회 ${requestScope.객체명}
sessionScope session 보관소의 값 조회 ${sessionScope.객체명}
applicationScope application 보관소의 값 조회 ${applicationScope.객체명}

 

📌 elForm.jsp

<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- /jsp3/src/main/webapp/el/elForm.jsp --%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL(표현언어)</title>
</head>
<body>
<%
	session.setAttribute("test","session test 속성");
	session.setAttribute("today",new Date());
%>
<form action="elex1.jsp" method="post">
이름 : <input type="text" name="name" value="홍길동">
<input type="submit"value="전송">
</form>
</body>
</html>

💡

  ${tel} : 영역담당 객체에 저장된 속성 중 이름이 tel인 속성의 값을 출력.

  ${test} : 영역담당 객체에 저장된 속성 중 이름이 test인 속성의 값을 출력.

 

1.pageContext에 등록된 속성 중 test인 속성의 값을 출력.

2. 1번이 없는 경우 request에 등록된 속성 중 test인 속성의 값을 출력.

3. 1번,2번이 없는 경우 session에 등록된 속성 중 test인 속성의 값을 출력.

4. 1번,2번,3번이 없는 경우 application에 등록된 속성 중 test인 속성의 값을 출력.

5. 모든 영역 객체에 test 라는 속성이 없는 경우 빈 문자열 출력. null 아님.


📌 elex1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- /jsp3/src/main/webapp/el/elex1.jsp --%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>elForm.jsp 의 결과 화면</title>
</head>
<body>
<%
	request.setCharacterEncoding("UTF-8");
	String tel = "010-1111-2222";
	pageContext.setAttribute("test","pageContext객체의 test속성");
	pageContext.setAttribute("tel",tel);
%>
<h3>JSP스크립트를 이용하여 파라미터와 속성값 출력</h3>
pageContext test 속성값 :<%= pageContext.getAttribute("test") %><br>
session test 속성값 : <%= session.getAttribute("test")%><br>
today 속성값 : <%= session.getAttribute("today") %><br>
name 파라미터값 : <%=request.getAttribute("name") %><br>
tel 변수값 : <%= tel %><br>
없는 속성값 : <%= pageContext.getAttribute("noAttr") %><br>
없는 파라미터값 : <%= request.getParameter("noParam") %><br>
<hr>
<h3>JSP의 EL을 이용하여 파라미터와 속성값 출력</h3>
<%-- pageScope : pageContext 객체의 속성객체 --%>
pageContext test 속성값 :${pageScope.test}<br>
<%-- sessionScope : sessionScope 객체의 속성객체 --%>
session test 속성값 : ${sessionScope.test}<br>
today 속성값 :  ${sessionScope.today}<br>
today 속성값 :  ${today}<br>
<%-- Param : 파라미터 객체 Param. 파라미터명 --%>
name 파라미터값 : ${Param.name} <br>
tel 변수값 : EL로는 표현 불가 <br>
tel 속성값 : ${tel} <br>
test 속성값 : ${test}<br>
없는 속성값 : ${pageScope.noAttr} <br>
없는 파라미터값 :${Param.noParam} <br>
</body>
</html>