ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JSP - 포워딩과 리다이렉트 (forwarding, redirect)
    JSP 2020. 6. 23. 21:33

    포워딩과 리다이렉트(forward, redirect) 

     

    포워딩(fowarding)과 리다이렉트(redirect)는 jsp에서 다른 페이지로 이동하는 페이지 전환 기능이다.

     

    둘의 가장 큰 차이점은 페이지 이동 방식에 있다.

     

     

    1. 포워딩(fowarding)

     

    웹 컨테이너(Web Container) 차원에서 페이지 이동만 있는 것이다.  실제로 클라이언트(브라우저)는 다른 페이지로

     

    이동을 했는지를 알 수가 없다. 그렇기 때문에 웹 브라우저에는 최초에 호출한 URL이 표시되며 이동한 페이지의

     

    URL 정보는 볼 수 없다.  또한, 동일한 웹 컨테이너에 있는 페이지로만 이동을 할 수 있다.

     

    포워딩은 클라이언트와 통신없이 서버에서만 처리되는 것이기 때문에 리다이렉트보다 나은 성능을 보여준다.

     

    그리고 현재 실행중인 페이지와 포워딩에 의해 호출될 페이지는 request와 response 객체를 공유한다.

     

    즉, 객체를 요청에 담고 해당 요청을 사용할 다음 자원에 전송한다는 뜻이다.

     

    따라서 사용자가 최초로 요청한 요청정보는 다음 URL에서도 유효하다.

     

     

     포워딩 처리 방법

    // * 컨텍스트 루트|패스가 배제된 서블릿 패스로 작성되어야 함
        
    RequestDispatcher dispatcher = request.getRequestDispatcher("/02/" + action);
    	
    //forward(HttpServletRequest : bloodTypeResult.jsp 리다이렉트 요청시 생성)
        
    //		  HttpServletREsponse : bloodTypeResult.jsp 리다이렉트 요청시 생성)
        
    dispatcher.forward(request, response);

     


    2. 리다이렉트(redirect)

     

    웹 컨테이너(Web Container)는 sendRedirect() 메서드가 호출되어 리다이렉트 명령이 들어오면 웹 브라우저에게

     

    다른 페이지로 이동하라고 명령한다. 이 명령에는 브라우저가 웹 컨테이너의 응답을 받을 후 다시 요청을 보낼

     

    새로운 URL을 포함한다. 그러면 웹 브라우저는 URL을 지시된 주소로 바꾸고 그 주소로 이동한다.

     

    다른 웹 컨테이너에 있는 주소로 이동이 가능하며 새로운 페이지에서는 request와 response객체가 새롭게 생성된다.

     

    리다이렉트는 추가적으로 발생한 처리 때문에 포워딩보다는 느리다. 

     

    중요한 것은 마지막으로 수행하는 작업은 새로운 요청에 의한 것이고, 이것을 클라이언트가 알고 있기 때문에

     

    브라우저창의 주소가 처음 요청한 주소가 아닌 다시 요청을 보낼 새로운 주소값으로 변한다.

     

    간단히 말해, 최초 요청을 받은 첫 번째 URL에서 클라이언트에 redirect할 두번째 URL을 리턴하고, 클라이언트는

     

    전혀 새로운 요청을 생성하여 두 번째 URL에 다시 요청을 보낸다. 따라서 처음 보냈던 요청정보는 더이상

     

    유효하지 않다.

     

    리다이렉트 처리 방법

    리다이렉트 응답 제어
    
    response.sendRedirect(" ");

     * 리다이렉트는 파라미터 안에 컨텍스트 루트|패스가 포함되어야 함


    포워딩과 리다이렉트로 작동하는 작동 구조 

    요청과 응답ㅇㅇ.xlsx
    0.04MB

     

    댓글

Designed by Tistory.