// EL(Expression Language)
- 저장 객체에서 값을 추출해서 출력하는 표현식
- 표현식 또는 액션 태그를 대신해서 값을 표현하는 언어
Controller | View |
request.setAttribute("cnt", 30) | <%=request.getAttribute("cnt")%> → ${cnt} |
List list = new ArrayList(){"1", "test"}; request.setAttribute("list", list); |
<%=((List)request.getAttribute("list")).get(0)%> → ${list[0]} |
Map n = new HashMap("title", "제목") request.setAttribute("n", n); |
<%=((Map)request.getAttribute("n")).get("title")%> → ${n.title} |
package com.sorrel012.web;
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("/spag")
public class Spag extends HttpServlet{
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int num = 0;
String num_ = request.getParameter("n");
if(num_ != null && !num_.equals("")) {
num = Integer.valueOf(num_);
}
String result;
if(num%2 != 0) {
result = "홀수";
}
else {
result = "짝수";
}
request.setAttribute("result", result);
String[] names = {"sorrel", "hanee"};
request.setAttribute("names", names);
Map<String, Object> notice = new HashMap<String, Object>();
notice.put("id", 1);
notice.put("title", "EL");
request.setAttribute("notice", notice);
RequestDispatcher dispatcher
= request.getRequestDispatcher("spag.jsp");
dispatcher.forward(request, response);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> spaghetti </title>
</head>
<body>
${result}입니다.<br>
${names[0]}<br>
${names[1]}<br>
${notice.title}
</body>
</html>
// EL의 내장 객체
- 저장 객체에서 값을 추출하는 순서: page -> request -> session -> application
- 모든 저장소를 뒤지지 않고 특정 저장소에서만 값을 꺼내고 싶을 때 사용하는 한정사 : Scope
~ pageScope : page 객체를 참조하는 객체
~ requestScope : request 객체를 참조하는 객체
~ sessionScope : session 객체를 참조하는 객체
~ applicationScope : application 객체를 참조하는 객체
~ param : 요청 파라미터를 참조하는 객체
~ paramValues : 요청 파라미터(배열)를 참조하는 객체
~ initParam : 초기화 파라미터를 참조하는 객체
~ cookie : cookie 객체를 참조하는 객체
- EL에서는 메서드를 호출하는 방식으로는 사용할 수 없다.
~ <%=pageContext.getRequest().getMethod()%> → ${pageContext.request.method}
package com.sorrel012.web;
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("/spag")
public class Spag extends HttpServlet{
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int num = 0;
String num_ = request.getParameter("n");
if(num_ != null && !num_.equals("")) {
num = Integer.valueOf(num_);
}
String result;
if(num%2 != 0) {
result = "홀수";
}
else {
result = "짝수";
}
request.setAttribute("result", result);
String[] names = {"sorrel", "hanee"};
request.setAttribute("names", names);
Map<String, Object> notice = new HashMap<String, Object>();
notice.put("id", 1);
notice.put("title", "EL");
request.setAttribute("notice", notice);
RequestDispatcher dispatcher
= request.getRequestDispatcher("spag.jsp");
dispatcher.forward(request, response);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> spaghetti </title>
</head>
<%
pageContext.setAttribute("result", "hello");
%>
<body>
${requestScope.result}입니다.<br>
${names[0]}<br>
${names[1]}<br>
${notice.title}
</body>
</html>
package com.sorrel012.web;
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("/spag")
public class Spag extends HttpServlet{
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int num = 0;
String num_ = request.getParameter("n");
if(num_ != null && !num_.equals("")) {
num = Integer.valueOf(num_);
}
String result;
if(num%2 != 0) {
result = "홀수";
}
else {
result = "짝수";
}
request.setAttribute("result", result);
String[] names = {"sorrel", "hanee"};
request.setAttribute("names", names);
Map<String, Object> notice = new HashMap<String, Object>();
notice.put("id", 1);
notice.put("title", "EL");
request.setAttribute("notice", notice);
RequestDispatcher dispatcher
= request.getRequestDispatcher("spag.jsp");
dispatcher.forward(request, response);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> spaghetti </title>
</head>
<%
pageContext.setAttribute("result", "hello");
%>
<body>
${requestScope.result}입니다.<br>
${names[0]}<br>
${names[1]}<br>
${notice.title}<br>
${param.n}<br>
${header.accept}
</body>
</html>
// EL 연산자
[]
()
not ! empty
* / div % mod
+ -
< lt > gt <= le >= ge
== eq != ne
&& and
|| or
? :
EL | Result |
${1 > (4/2)} | false |
${4.0 >= 3} | true |
${100.0 == 100} | true |
${(10*100 ne 100)} | false |
${'a' < 'b'} | true |
${'hip' gt 'hit'} | false |
${4 > 3} | true |
${1.2E4 + 1.4} | 12001.4 |
${3 div 4} | 0.75 |
${10 mod 4} | 2 |
package com.sorrel012.web;
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("/spag")
public class Spag extends HttpServlet{
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int num = 0;
String num_ = request.getParameter("n");
if(num_ != null && !num_.equals("")) {
num = Integer.valueOf(num_);
}
String result;
if(num%2 != 0) {
result = "홀수";
}
else {
result = "짝수";
}
request.setAttribute("result", result);
String[] names = {"sorrel", "hanee"};
request.setAttribute("names", names);
Map<String, Object> notice = new HashMap<String, Object>();
notice.put("id", 1);
notice.put("title", "EL");
request.setAttribute("notice", notice);
RequestDispatcher dispatcher
= request.getRequestDispatcher("spag.jsp");
dispatcher.forward(request, response);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> spaghetti </title>
</head>
<%
pageContext.setAttribute("result", "hello");
%>
<body>
<%-- ${requestScope.result}입니다.<br>
${names[0]}<br>
${names[1]}<br>
${notice.title}<br>
${header.accept}<br>
${param.n gt 3}<br>
${empty param.n? '값이 비어 있습니다.' : '값이 비어 있지 않습니다.'}<br> --%>
${param.n / 2}<br>
</body>
</html>
'서버 > Servlet-JSP' 카테고리의 다른 글
[Servlet-JSP] 포워딩(Forwarding) (0) | 2023.02.05 |
---|---|
[Servlet-JSP] URL 패턴, FrontController 패턴, Command 패턴 (0) | 2023.01.29 |
[Servlet-JSP] 파일 업로드, 다운로드 (0) | 2023.01.20 |
[Servlet-JSP] DAO, DTO, lombok (0) | 2023.01.20 |
[Servlet-JSP] 입력 데이터 - 상태 유지 (0) | 2023.01.16 |