Java

sendRedirect와 forward 차이

유호야 2020. 12. 6. 14:20
반응형

What is difference between sendRedirect and forward?
sendRedirect와 forward의 차이점은 무엇입니까? 

The main important difference between the forward() and sendRedirect() method is that in case of forward(), redirect happens at server end and not visible to client, but in case of sendRedirect(), redirection happens at client end and it's visible to client.
forward()와 sendRedirect() 방법의 주요 차이점은 전달()의 경우 리디렉션이 서버 끝에서 발생하고 클라이언트는 보이지 않지만 sendRedirect()의 경우 리디렉션이 클라이언트 끝에서 발생하여 클라이언트가 볼 수 있다는 것입니다.


 

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

A. forward와 redirect의 차이

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

B. forward 방법
          1. pageContext.forward(url);
          2. <jsp:forward page = "url" />
          3. RequestDispatcher rd = request.getRequestDispatcher(url);
               rd.forward(request, response);
          4. 1번과 2번 차이
                 we can use RequestDispatcher in Servlet as well as jsp
                 but PageContext we can use in only jsp.
          5. 2번과 3번 차이
                  Both are same.
                  When <jsp:forward> is translated to servlet then requestdispatcher is used to forward the request.
C. redirect 방법
            1. response.sendRedirect(url);
            2. request parameter가 유지가 안되므로 유지하고자 할 경우
                       1) response.sendRedirect("result.jsp?id=1")과 같이 찍으면 parameter를 넘길 수 있다.
D. forward와 redirect의 활용 예제

<%
String id = request.getParamaeter("id");
String pw = request.getParameter("pw");

if(id.equals("song") && pw.equals("1234")){
	session.setAttribute("id", id):
    response.sendRedirect("../main.jsp");
} else {
	//request에 오류메세지 담기
    request.setAttribute("errMsg", "아이디 혹은 비밀번호가 일치하지 않습니다.");
    RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
    //or pageContext.forward("login.jsp");
}
%>

 

 

반응형