pageContext 객체
리턴 타입 | 메소드명 | 설명 |
---|---|---|
ServletRequest | getRequest() | 클라이언트의 요청 정보를 담고 있는 객체를 리턴 한다(request 내장 객체를 리턴 한다.) |
ServletResponse | getResponse() | 요청에 대한 응답 객체를 리턴 한다.(response 내장 객체를 리턴 한다.) |
JspWriter | getOut() | 응답 출력 스트림을 리턴 한다.(out 내장 객체를 리턴 한다.) |
Object | getPage() | 서블릿 인스턴스 객체를 리턴 한다.(page 내장 객체를 리턴 한다.) |
ServletConfig | getServletConfig() | 서블릿의 초기 설정 정보를 담고 있는 객체를 리턴 한다.(config 내장 객체를 리턴 한다.) |
ServletContext | getServletContext() | 서블릿의 실행 환경 정보를 담고 있는 객체를 리턴 한다. (application 내장 객체를 리턴 한다.) |
HttpSession | getSession | 클라이언트의 세션 정보를 담고 있는 객체를 리턴 한다.(session 내장 객체를 리턴 한다.) |
없음 | forward(String url) | 현재 페이지의 요청과 응답에 관한 제어권을 URL로 지정된 주소로 영구적으로 넘긴다. forward된 페이지의 요청 처리가 종료되면 응답도 종료 된다. / URL 은 바뀌지 않으면서 String url로 이동이 발생 |
없음 | include(String url) | 현재 페이지의 요청과 응답에 관한 제어권을 URL로 지정된 주소로 임시로 넘긴다. include된 페이지의 처리가 끝나면 제어권은 다시 원래의 페이지로 돌아온다. 따라서 include 로 지정된 페이지의 내용을 원래 페이지에 삽입하는 효과를 가진다. |
예제
pageContextTest1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setAttribute("id", "lee");
pageContext.forward("pageContextTest2.jsp");
//response.sendRedirect("pageContextTest.jsp");
%>
pageContextTest2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>pageContext Test </title>
</head>
<body>
<%
pageContext.include("pageContextTest3.jsp");
%>
<h2>pageContext의 forward 메소드로 포워딩된 페이지 입니다.</h2>
<%=request.getAttribute("id") %>
</body>
</html>
pageContextTest3.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<h3>include 되는 pageContextTest3.jsp 페이지 입니다.</h3>
<hr>
pageContextTest1.jsp 실행 시 나오는 화면
pageContextTest1 실행 후 개발자 도구를 열어보면 include 된 것을 확인 가능하다.
왜 forward를 쓸까?
request.setAttribute("id", "lee");
선언한 객체를<%=request.getAttribute("id") %>
가져올 수 있다.→ pageContextTest1 에서 만든 request 객체를 Test2에서 사용한다. (Test2 에서 setAttribute를 하지 않았음에도 lee 가 나온 이유)
pageContextTest1.jsp 에서
주석 처리 된 Redirect를 주석 해제 하고 forward 코드를 주석 후 실행 시 화면
좋은 정보 감사합니다