wrkbrs
[JSP] Redirect와 Forward의 차이점 본문
• 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 [위글위글]
'JSP' 카테고리의 다른 글
[JSP] uri 경로 가져오는 메소드 (0) | 2018.11.07 |
---|---|
[JSP] MVC 패턴 (model2) 게시판 완료 (0) | 2018.11.01 |
[JSP] Parameter(파라미터) 와 attribute(속성)의 차이 (0) | 2018.10.31 |
[JSP] java to jsp 파라메터 전송 주고 받기 .. (1) | 2018.10.31 |
[JSP] request.setAttribute(), request.getParameter() (2) | 2018.10.31 |