본문 바로가기

기존카테고리/JSP

리다이렉트 방식과 요청디스패치 방식의 차이


- 리다이렉트 방식(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