본문 바로가기

[JSP] EL : Expression Language

인포꿀팁 발행일 : 2020-10-26

EL : Expression Language

스크립트 요소의 사용없이 JSP 페이지에 값을 표현할 수 있는 태그 기반의 스크립트 언어이다.

표현 언어는 JSP의 스크립트 요소(스크립트 릿, 표현식, 선언부)를 제외한 나머지에 사용될 수 있다.

 

기능

  • JSP의 네가지 기본 객체가 제공하는 영역의 속성을 사용한다.
  • page, request, session, application에 binding된 attribute나 attribute의 프로퍼티 값을 출력한다.
  • 수치 연산자, 관계 연산자, 논리 연산자 등의 EL연산자 제공
  • 자바 클래스의 메소드 호출 기능도 제공한다.
  • EL 의 내장객체를 제공한다.

 

표현 형식

${ expression }

 

자주쓰이는 EL 내장 객체

EL 내장객체 타입 설명
param Map request 파라미터 값을 얻어오는데 사용하며 단일 값을 반환한다.
(request.getParameter() 메소드)
paramValues Map request 파라미터 값을 얻어오는데 사용하며, 배열로 반환한다.
(request.getParameterValues() 메소드)
pageContext pageContext 현재 페이지를 위한 javax.sevlet.jsp.pageContext.JSP 페이지의 환경 정보

예제로 EL 알아보기>>

예제1) 서버에 입력받은 데이터 EL로 처리해보기

1) 먼저 서버에 간단히 이름과 나이를 input 태그를 통해 입력받아 post 방식으로 전송한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page trimDirectiveWhitespaces="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="ex2_ok.jsp" method="post">
    <p> 이름 : <input type="text" name="name"> </p>
    <p> 나이 : <input type="text" name="age"> </p>
    <p><button type="submit">확인</button> </p>
</form>
</body>
</html>a
cs

 

2) 입력받아 서버에 전송된 데이터를 utf-8로 인코딩을 하고 받은 나이 파라미터를 이용해 성인/미성년자의 구분을 해주는 변수에 값을 던저준다. 그리고 attribute로 세팅한다. 이후 jsp:forward를 통해 작업처리된 데이터를 result 페이지에 전송한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page trimDirectiveWhitespaces="true" %>
<%
    request.setCharacterEncoding("utf-8");
    
    int age = Integer.parseInt(request.getParameter("age"));
    String state="성인";
    if(age<19){
        state="미성년자";
    }
    
    request.setAttribute("state", state);
%>
<!-- 포워딩 : request, response 객체가 그대로 넘어감 -->
<jsp:forward page="ex2_result.jsp"/>
cs

 

3)전송 받은 데이터를  utf-8 로 인코딩한후  EL의 표현방식인 ${ } 을 통해 파라미터값과 attribute값을 받아 출력한다.

여기서 파라미터 값은 param이라는 EL의 내장객체를 이용하여 출력한다. 이외 Attribute는 해당 변수명을 입력해 출력한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page trimDirectiveWhitespaces="true" %>
<%
    request.setCharacterEncoding("utf-8");
 
    
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>EL을 사용하는  경우</h3>
 
<p>parameter...</p>
<p>name :${param.name}</p><!-- param: EL의 내장객체로 파라미터를 나타냄 -->
<p>age: ${param.age}</p>
<p>tel: ${param.ntel}</p> 
 
<p>attribute...</p>
<p>state: ${state}</p><!-- EL은 ATTRIBUTE를 처리시 사용함-->
<p>msg :${msg}</p> 
</body>
</html>
cs

 

예제2) 입력받은 데이터를 자바 DTO 클래스를 연동하여  EL로 불러오기

1) 먼저 서버에 간단히 이름과 나이를 input 태그를 통해 입력받아 post 방식으로 전송한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page trimDirectiveWhitespaces="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>EL을 사용하는경우</h3>
<form action="ex4_ok.jsp" method="post">
<p>이름 : <input type="text" name="name"> </p>
<p> 내용 :<textarea rows="2" cols="30" name="content"></textarea> </p>
<p><button type="submit">보내기</button> </p>
</form>
</body>
</html>
cs

2)입력받은 데이터를 미리 생성한 GuestDTO 객체를 생성하여 해당 인스턴스변수에 대입을 한다.

필요한 변수값을 모두 SET했다면 result 페이지로 forward 해준다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<%@page import="java.util.Calendar"%>
<%@page import="com.guest.GuestDTO"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page trimDirectiveWhitespaces="true" %>
<%
    request.setCharacterEncoding("utf-8");
    
    GuestDTO dto = new GuestDTO();
    
    dto.setNum(1);
    dto.setName(request.getParameter("name"));
    dto.setContent(request.getParameter("content"));
    dto.setCreated(String.format("%tF", Calendar.getInstance()));
    
    request.setAttribute("dto", dto);
    
%>
 
<jsp:forward page="ex4_result.jsp"/>
cs

3) 포워드된 데이터를 받아 utf-8로 인코딩 이후  EL언어를 통해 출력한다.

이때 해당 파라미터들이 DTO 객체의 변수로 있기 때문에 출력시에 객체명.변수명 으로 호출한다.

dto.num/dto.name ....

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<%@page import="com.guest.GuestDTO"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page trimDirectiveWhitespaces="true" %>
<%
    request.setCharacterEncoding("utf-8");
    
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>EL을 사용하는 경우</h3>
<p>번호: ${dto.num} </p>
<p>이름:${dto.name}</p>
<p>내용:${dto.content}</p>
<p>날짜:${dto.created}</p>
</body>
</html>
cs

 

'Web > JSP&SERVLET' 카테고리의 다른 글

[Servlet] 서블릿 이란?  (0) 2020.11.06
[WEB] URL과 URI  (0) 2020.10.28
[WEB] HTTP 와 HTTPS  (0) 2020.10.28
[WEB] 웹 어플리케이션 이란?  (0) 2020.10.28
[JSP] JSTL : JSP Standard Tag Library  (0) 2020.10.26

댓글