back/Web

JSP(redirect + forward + include)

devel0per 2022. 10. 6. 12:24

Web Page의 이동방식에는 3가지 방법이 있다.

  • redirect
  • forward
  • include

3가지의 이동방식의 차이점을 알아보자 

우선, 3가지의 이동방식을 살펴보기 전에 우리는 내장 객체에 대한 부분을 알고 넘어가야한다.

이 3가지의 방법들은 모두 JSP의 내장 객체 메소드로 존재하고 있기 때문이다.

 

redirect는 클라이언트의 요청에 대한 HTTP 응답을 나타내는 객체인 response의 메소드이고

forwardinclude는 다른 내장 객체를 얻어내거나 현재 페이지의 요청과 응답의 제어권을 다른 페이지로 넘겨주는데 사용하는 pageContext 객체의 메소드이다.


redirect
: 지정된 URL로 요청을 재전송한다.

 

<% response.sendRedirect("이동할 페이지.jsp"); %>

redirect 방법으로 이동한 페이지는 이전 페이지와 전혀 다른 데이터를 공유하거나 주고받는 것이 없다.

실제로 데이터를 공유할 수도 없다. redirect 하게 되면 이동할 페이지로 요청과 응답 객체를 새로 생성하여 전송하기 때문이다. redirect는 페이지를 재요청하는 것이며, URL을 보면 리다이렉트 시 해당 jsp 파일의 이름으로 변경되어 있을 것이다.

 


 

 

forward
: URL로 제어권을 영구적으로 넘긴다.

  1. jsp 액션 태그 사용 : <jsp:forward page = " 페이지명 ">
  2. 내장 객체 사용 : <% pageContext.forward("페이지명"); %>
  3. 서블릿 RequestDispatcher 사용 : RequestDispatcher dispatcher = request.getRequestDispatcher(forward.getPath()); dispatcher.forward(request, response);

forward는 현재 페이지의 요청과 응답에 관한 제어권을 URL로 지정된 주소(매개변수)로 영구적으로넘긴다.

포워드된 페이지의 요청 처리가 종료 되면 응답도 종료 된다.

리다이렉트처럼 페이지 재요청이 아닌 메소드를 호출하는 것과 같다.

그리고 서버가 자동으로 이동 시켜줌으로써 URL이 그대로이며 데이터만 옮겨진다.(=데이터 공유, 유지)

 

 


 

Include
: Include된 페이지의 처리가 끝나면 제어권은 원래의 페이지로 돌아온다.

마지막으로 include는 영어로 '포함하다' 뜻을 가지고 있는데 jsp에서도 영어뜻과 비슷한 역할을 하고 있다.

include는 해당 URL로 포워드처럼 제어권을 넘기지만 영구적으로 넘기는 것이 아니라

include된 페이지의 처리가 끝나면 다시 제어권은 원래의 페이지로 돌아온다.

include된 페이지의 내용을 원래 페이지에 삽입하는 것과 같다.


 

출처)

 

[ JSP ] redirect + forward + include 파헤치기

블로그에는 뜬끔없이 올리는 JSP지만 6개월전에 학교에서 수업을 들었는데 다 까먹어서 다시 공부하고 있다. 😅 중요한 부분이지만 항상 햇갈려하는 페이지 이동 부분이다. 총 redirect,  forward

do-dam.tistory.com