pageContext
, pageScope
, requestScope
, sessionScope
, applicationScope
, param
, paramValues
마우스 우클릭 Properties
Project Facets -> Runtimes
체크박스 선택 후 Apply -> Apply and Close!
${...}
내에 표현식으로 표현한다.
- ElTest.java
package com.koit.web.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("/eltest") public class ElTest extends HttpServlet{ @Override protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { //request 영역에 객체 저장 arg0.setAttribute("result", "짝수"); String[] names = {"abc", "def"}; arg0.setAttribute("names", names); Map<String, Object> notice = new HashMap(); notice.put("id", 1); notice.put("title", "el study"); arg0.setAttribute("notice", notice); //경로에 있는 파일경로로 요청을 전달, 보낸다. RequestDispatcher dispatcher = arg0.getRequestDispatcher("/el/el_test.jsp"); dispatcher.forward(arg0, arg1); } }
- el_test.jsp
<%@ 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 : 현재 페이지 내에 저장 pageContext.setAttribute("data", data); %> ${data }</br> ${10 + 20 }</br> ${10 > 3 }</br> <!-- Servlet에서 넘어온 result출력! --> <!-- request영역에 저장된 값 가져옴 --> <%=request.getAttribute("result") %>입니다.</br> ${result }입니다.</br> ${names[0] }</br> ${names[1] }</br> <!-- // 변수명."key"값 --> ${notice.id }<br> ${notice.title }</br> </body> </html>
현재 jsp파일에서 pageConText 로 페이지에 저장되어 있는 값은 "data"인데, "result"라는 이름으로 다른 값을 저장해보자
이미 Servlet 자바 파일에서 "result"라는 키값으로 넘어온 값이 아래에 출력이 되어있다.
하지만 페이지에도 result라는 키값이 저장된 후에는 어떤 값이 출력이 될까? -> 범위가 작은 page부터 값을 찾아 출력하게 된다.
그러므로 요청에 저장되어 있던 result를 꺼낸 값은 "짝수입니다."이고,
페이지에 저장된 result만 출력하면 pageResult가 출력되는 것이다.
이 태그 코드를 EL문으로 변경할 수 있다.