특정 페이지로 이동하는 방법은 크게 2가지.
- forward 와 redirect 의 차이
- forward
- request, response 객체도 넘김
- url 안바뀜, 클라이언트(브라우저)는 모르게 서버에서만 일어난일
- redirect
- request, response 새로 생성. 데이터 유지 안됨
- url 바뀜. 호출은 2번 이뤄짐
- forward 방법
- pageContext.forward(url);
- <jsp:forward page="url" />
- RequestDispatcher rd = request.getRequestDispatcher(url);
rd.forward(request, response); - 1번과 2번 차이
- we can use RequestDispacher in Servlet as well as Jsp
but PageContext we can use in only jsp. - 2번과 3번 차이
- Both are same. When <jsp:forward> is translated to servlet then requestdispatcher is used to forward the request.
- redirect 방법
- response.sendRedirect(url);
- request parameter가 유지가 안되므로 유지하고자 할경우
- response.sendRedirect("result.jsp?id=1") 과 같이 찍으면 parameter 를 넘길 수 있다.
- forward 와 redirect 의 활용 예제
<% String id=request.getParameter("id"); String pwd=request.getParameter("pwd"); if(id.equals("song") && pwd.equals("1234")){ session.setAttribute("id", id); response.sendRedirect("../main.jsp"); }else{ //request에 오류메시지 담기. request.setAttribute("errMsg", "아이디 또는 비밀번호가 일치하지 않아요."); RequestDispatcher rd = request.getRequestDispatcher("login.jsp"); rd.forward(request, response); // or pageContext.forward("login.jsp"); } %>
참조)
http://ysssb.tistory.com/entry/forward%EC%99%80-redirect%EC%9D%98-%EC%B0%A8%EC%9D%B4
https://coderanch.com/t/490614/java/Difference-jsp-RequestDispatcher
https://coderanch.com/t/442867/java/difference-forwarding-PageContext-RequestDispatcher
'개발 > 웹' 카테고리의 다른 글
[SPRING-BOOT] controller junit test (0) | 2016.11.29 |
---|---|
server, jsp, servlet version 확인 (0) | 2016.11.23 |
include directive vs include action tag (0) | 2016.11.23 |
charset 과 pageEncoding (0) | 2016.11.22 |
jsp/jstl 자료 정리 잘됀 곳 (0) | 2016.11.18 |
댓글