본문 바로가기

JSP

SendRedirect와 forward의 차이점

sendredirect는 호출이 되면 브라우저에게 응답을 보내고 이 응답에는

다시 요청을 보낼 새로운 URL이 포함된다.

따라서 요청속성에 저장되어있는 객체도 리다이렉트가 발생되기전에 소멸된다.


1.서버에 http요청

2.서버에서 요청처리

3.sendredirect 메서드가 호출되면

4.새 url을 실어 브라우저에게 응답

5.그 url로 새요청전달

6.처리후 응답


브라우저입장에서 실제 요청을 처리한 url을 알 수 있음.


forward는 브라우저의 입장에서는 내부적으로 어떻게 처리가 되고있는

전혀 알지 못 하며 오로지 최종 처리결과만 보냄.

요청속성에 저장되어있는 객체를 호출된 서블릿이 사용할 수 있다.


1.서버에 http요청

2.서버에서 요청처리

3.forward발생

4.forward된 서블릿이 요청처리

5.응답


브라우저에는 최초 요청한 url이 그대로 남아있음.

만약 서버가 요청을 처리중 response속성에 무언가 객체를 저장한다면

forward시 illegalStatementException이 발생함


리프레시 버튼을 누를시 정확하지 않은 요청이 발생할 수 있음. (요청한 url과 실제 처리한

url이 다를 수 있으므로)