- 리다이렉트 방식(HttpServletResponse) : 사용자가 보기에는 한번이지만 내부적으로 요청과 응답이 두번 일어난다.
웹브라우저가 응답을 받아서 다시 요청
응답코드와 헤더값 추가작업 필요하다.
response.sendRedirect("url");
- 요청디스패치 방식(RequestDispatcher)
서블릿 또는 JSP에서 요청을 받은 후 다른 콤포넌트로 요청을 위함할 수 있다.
위임할 때 요청객체(request)를 동일하게 전달(forward())할 수 있다.
redirect.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setAttribute("aa", "abcd");
request.setAttribute("xy", "1234");
response.sendRedirect("RequestObj");
%>
</body>
</html>
-------------------------------------------------------------------------------------------------
RequestObj.java
package jsp_practice;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class RequestObj
*/
@WebServlet("/RequestObj")
public class RequestObj extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public RequestObj() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet");
actionDo(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost");
actionDo(request, response);
}
protected void actionDo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("actionDo");
String aa = (String)request.getAttribute("aa");
String xy = (String)request.getAttribute("xy");
System.out.println("aa:"+aa);
System.out.println("xy:"+xy);
System.out.println("---------------------------------");
}
}
--------------------------------------------------------------------------------------------------------
dispatchObj.java
import java.io.IOException;
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;
/**
* Servlet implementation class dispatchObj
*/
@WebServlet("/dispatchObj")
public class dispatchObj extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public dispatchObj() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet");
actionDo(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost");
actionDo(request, response);
}
protected void actionDo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("actionDo");
request.setAttribute("aa", "abcde");
request.setAttribute("xy", "12345");
RequestDispatcher dispatcher = request.getRequestDispatcher("/dispatch.jsp");
dispatcher.forward(request, response);
}
}
-------------------------------------------------------------------------------------------------
dispatch.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<hr/>
dispatch 방식
<hr/>
aa: <%=request.getAttribute("aa") %> <br/>
xy: <%=request.getAttribute("xy") %>
</body>
</html>
'기존카테고리 > JSP' 카테고리의 다른 글
데이터베이스 생성: 오라클 시퀀스 설정 (0) | 2017.06.21 |
---|---|
MVC 패턴 (0) | 2017.06.21 |
Command 패턴 (0) | 2017.06.21 |
FrontController 패턴 (0) | 2017.06.15 |
공지사항 - 파일 쓰기, 읽기 (0) | 2017.06.13 |