본문 바로가기
Java

[JSP] forward 와 sendRedirect의 차이

by bkuk 2023. 1. 24.

간단하게 요약하면,

forward는 request(요청) 이고, sendRedirect는 response(응답)이다.

 

forward나 sendRedirect는 주로 컨트롤러나 index 페이지에서 사용된다.

String strPath = "/WEB-INF/view/list.jsp";
Request dispatcher = request.getRequestDispatcher( strPath );
dispatcher.forward( request, response );

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

String strPath = "/WEB-INF/view/list.jsp";
response.sendRedirect( strPath );

 

우선, request가 forward 되는 상황을 이해해보자. 요청자가 던진 request가 계속해서 뻣어나가는게 forwar이다.

하지만, 이 요청은 WAS 내부에서만을 한정한다.

 

 

그럼 반대로 response를 던진다는 의미는,

우선 HTTP 통신은 클라이언트가 request 하면 그에 대한 응답 reponse을 주는 것이 무조건인데,

 

근데 이게 아니라, 자기가 일을 끝냈다고 옆으로 response로 던진다.

어떤 의미이나면.. 나는 일을 다 끝냈어. 너가 할일이 있으면 너가 해.라고 하면서 url도 바뀌는 것이다.

따라서, request 값은 없다.

 

sendRedirect는 직접적으로 WEB-INF/view/list.jsp 를 호출하는 것과 같아서, 만약 이렇게 요청을 하면 페이지를 찾을 수 없다는 에러가 발생한다.

 

 

댓글