EL문이란?
Expression Language로서 값을 간결하고 간편하게 출력할 수 있도록 해주는 언어이다.
<%= %>, out.println( )과 같은 자바코드를 더이상 사용하지 않고 좀 더 간편하게 출력을 지원하기 위한 도구이다.
EL구문
${....} 내에 표현식으로 표현한다.
범위
set attribute를 통해 데이터를 세팅하고 get을 통해 데이터를 획득하는데 attribute로 값을 꺼내고 빼내는데 값을 찾을 때 작은 범위에서 큰 범위( page > request > session > application)로 찾는다.
EL연산자
- 산술연산자: +, -, *, /(div), %(mod)
- 논리연산자: &&(and), ||(or), !(not)
- 비교연산자: ==(eq), !=(ne), <(lt), >(gt), <=(le), >=(ge)
- empty연산자: 값이 null이거나 공백 문자인지를 판단하는 연산자로 ${empty ""} => true리턴/ ${empty null} => true 리턴/ ${empty data} => data값이 없으면 true리턴 즉, 값이 없을 때만 true를 리턴한다.
- 조건연산자: a? b: c , a 조건이 만족하면 b를 리턴하고 만족하지 않으면 c를 리턴
사용방법-기본
*el_test1.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String data = "hello";
%>
${data }
</body>
</html>
|
cs |
*el_test2.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String data = "hello";
pageContext.setAttribute("data", data);
%>
${data} //data
\${data} : ${data } //${data} : ${data }
</body>
</html>
|
cs |
el_test1을 보면 일반 자바 변수로 등록된 값을 그대로 사용하였는데 EL은 jsp에서 제공하는 그 값을 편안하게 가져다쓰기 위한 식이다. 순수 자바언어를 가져다 쓰기 위해 만들어진 것이 아니다.
jsp에서 제공해주는 기능이기때문에 jsp의 기본 목적인 동적 웹페이지 구현을 위하여 웹에서 저장해주는 PageContext를 통해 data라고 하는 value값을 저장을 해야만 ${data}로 간편하게 표현이 가능하다. 그렇기에 el_test2처럼 pageContext를 통해서 값을 가져와야만한다.
16행은 일반 data의 문자열을 출력하는 방법
17행은 문자열 그대로를 출력하는 방법이다.
사용방법-응용
*el_test.jsp
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
27
28
29
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%=request.getAttribute("result") %><br>
${result }<br>
<hr> ${names[0] }<br>
${names[1] }<br>
<hr> ${notice.id }<br>
${notice.title }<br>
<hr>
${param.num }<br>
<hr>
${param.num >= 3}<br>
${param.num ge 3}<br>
<hr>
${empty param.num}<br>
${not empty param.num}<br>
<hr>
${empty param.num ? '값이 비어있습니다.' : param.num}<br>
</body>
</html>
|
cs |
*MyServlet.java
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
27
28
29
30
31
32
33
34
35
|
package com.koreait.servlet;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/myservlet")
public class MyServlet extends HttpServlet{
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException { arg0.setAttribute("result","success");
String[] names= {"ksk","abc"};
arg0.setAttribute("names",names);
Map<String, Object> notice = new HashMap<String,Object>();
notice.put("id", 1);
notice.put("title","el학습");
arg0.setAttribute("notice", notice);
RequestDispatcher dispatcher = arg0.getRequestDispatcher("/EL/el_test.jsp");
dispatcher.forward(arg0, arg1);
}
}
|
cs |
point1)
위는 MyServlet이고 밑은 el_test.jsp의 코드이다.
밑의 코드는 주황색 박스에 있는 값을 꺼내온 코드로 빨간박스는 우리가 jsp태그를 활용하여 가져왔던 옛날방법이고 분홍박스는 EL문을 활용하여 데이터를 가지고 온 방법이다.
point2)
첫번째는 Myservlet.java/ 두번째는 el_test.jsp/ 세번째는 결과값이다.
arg0.setAttribute를 통해서 names라는 키값으로 "ksk"와 "abc"라는 value값을 배열로서 set할 수 있었고 이를 EL문으로 간편하게 꺼내어 출력 할 수 있다.
point3)
역시 첫번째는 Myservlet.java/ 두번째는 el_test.jsp/ 세번째는 결과값이다.HashMap에 put을 통해서 key id값에 1이라는 value를 title이라는 id값에 el학습이라는 value값을 넣어주었고 이를 Attribute에 set해준 상황이다.
그리고 그 데이터를 "객체.key값" 이라는 데이터를 가져와 1과 el학습이라는 특정 valuer값을 꺼내왔다.
point4)
첫번째는 el_test.jsp 두번째는 출력문 세번째는 출력주소와 파라미터이다.
- ${param.num}: num=9로 "9"라는 파라미터값을 보낸 것을 캐치하여 9를 출력
- ${param.num>=3}: 9는 3보다 크니 true를 출력/ 이를 ge로 대체 가능
- ${empty param.num}: 파라미터가 empty가 아니니까 false/ not empty는 반대개념으로 true
- ${empty param.num ? '값이 비어있습니다.' : param.num}: EL문의 삼항연산자로 9 라는 파라미터가 ㄴ머어갔으니 param.num을 따라서 9를 출력, 만약 파라미터를 넘기지 않으면 '값이 비어있습니다'라는 문자열 출력
'국비필기노트 > jsp' 카테고리의 다른 글
jsp_DB 변천사 (0) | 2022.06.15 |
---|---|
jsp_JSTL (0) | 2022.06.15 |
jsp_Mybatis (0) | 2022.06.14 |
jsp_DBCP (0) | 2022.06.14 |
jsp_아이디중복체크 (0) | 2022.06.14 |