[JSP] EL : Expression Language
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 |
댓글