• 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값...넘기는 문제..|작성자 올리브 

 

'java,jsp' 카테고리의 다른 글

java mapping  (0) 2014.12.03
@ 어노테이션  (0) 2014.12.03
Redirect와 Forward의 차이점  (0) 2014.12.02
getInstance() 란 무엇인가  (0) 2014.12.02
반복문 for, whil, do-while 문  (0) 2014.12.02
request.setAttribute() 와 request.getAttribute()  (0) 2014.12.02
Posted by 밀키수

댓글을 달아 주세요