본문 바로가기
개발/웹

forward vs redirect

by 로그인시러 2016. 11. 23.

특정 페이지로 이동하는 방법은 크게 2가지.


  1. forward 와 redirect 의 차이
    1. forward
      • request, response 객체도 넘김
      • url 안바뀜, 클라이언트(브라우저)는 모르게 서버에서만 일어난일
    2. redirect
      • request, response 새로 생성. 데이터 유지 안됨
      • url 바뀜. 호출은 2번 이뤄짐

  2. forward 방법
    1. pageContext.forward(url);
    2. <jsp:forward page="url" />
    3. RequestDispatcher rd = request.getRequestDispatcher(url);
      rd.forward(request, response);
    4. 1번과 2번 차이
    5. 2번과 3번 차이
      • Both are same. When <jsp:forward> is translated to servlet then requestdispatcher is used to forward the request.

  3. redirect 방법
    1. response.sendRedirect(url);
    2. request parameter가 유지가 안되므로 유지하고자 할경우
      1. response.sendRedirect("result.jsp?id=1") 과 같이 찍으면 parameter 를 넘길 수 있다.

  4. 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


http://installed.tistory.com/entry/8-JSP-%ED%8A%B9%EC%A0%95%ED%8E%98%EC%9D%B4%EC%A7%80%EB%A1%9C-%EC%9D%B4%EB%8F%99%EB%B0%A9%EB%B2%95


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

댓글