wrkbrs

[JSP] Redirect와 Forward의 차이점 본문

JSP

[JSP] Redirect와 Forward의 차이점

zcarc 2018. 10. 31. 22:12

• Forward와 Redirect의 차이

JSP/Servlet에는 현재 작업중인 페이지에서 다른 페이지로 이동하는 두 가지 방식의 페이지 전환 기능이 있다. 하나는 Forward이고 하나는 Redirect이다.



둘 다 다른 웹 페이지로 이동하지만 행동 양태가 다르다.


 




 


 


 


 • Redirect : Web Container는 Redirect 명령이 들어오면 웹 브라우저에게 다른 페이지로 이동하라고 명령을 내린다. 그러면 웹 브라우저는 URL을 지시된 주소로 바꾸고 그 주소로 이동한다. 다른 웹 컨테이너에 있는 주소로 이동이 가능하다. 새로운 페이지에서는 request와 response객체가 새롭게 생성된다.


 


• Forward : Web Container 차원에서 페이지 이동만 있다. 실제로 웹 브라우저는 다른 페이지로 이동했음을 알 수 없다. 그렇기 때문에, 웹 브라우저에는 최초에 호출한 URL이 표시되고 이동한 페이지의 URL 정보는 볼 수 없다. 동일한 웹 컨테이너에 있는 페이지로만 이동할 수 있다. 현재 실행중인 페이지와 Forwad에 의해 호출될 페이지는 request와 response 객체를 공유


 


 


1. forward


RequestDispatcher dispatcher = request.getRequestDispatcher(url);

dispatcher.forward(request, response);



이런식으로 되구요...



 


2. sendRedirect


response.sendRedirect(url);


일케됩니다.




 


둘의 차이를 말씀드리면...


dispatcher.forward(request, response); 에서 보시는 바와같이 이녀석은 

request 의 Attribute를 실어나를 수 있습니다.

(ex : request.setAttribute("test","테스트"); )



 


반면에 sendRedirect이넘으로 파라미터를 넘기는 방법은 get 방식처럼

url?test=테스트 이렇게만 가능하죠 ^^;



 


1. 

test1.jsp

<%

String [] arr = {"테스트1","테스트2","테스트3"};


request.setAttribute("test",arr);

RequestDispatcher dispatcher = request.getRequestDispatcher("test.jsp");

dispatcher.forward(request, response);


%>



test.jsp

<%

String [] arr = (String[])request.getAttribute("test");

for(int i=0;i<arr.length;i++){

out.println(arr[i]+"<br>");

}

%>




 


2. sendRedirect


test1.jsp

<%

response.sendRedirect("test.jsp?test=테스트");


%>



test.jsp

<%

out.println(request.getParameter("test"));

%>


출처 : 'forward와 sendredirect 예제' - 네이버 지식iN

[출처] 자바 - ReDirect() 사용시 request, response값...넘기는 문제..|작성자 올리브 




출처: http://selectwiggle.tistory.com/25 [위글위글]