JAVA. 리다이렉트와 포워드
힘들다 대전사업 ㅠㅠ 오랜만에 MVC 생명주기를 얘기 하다,, 내가 너무 부족함을 느낌..
리다이렉트와 포워드
특정 URL 접속시 리다이렉트 또는 포워드가 일어나게 되면 작업중인 페이지가 전환이 된다. 리다이렉트와 포워드는 페이지가 전환되는점에선 비슷하지만 페이지를 전환하는 주체가 다르다는 차이가 존재한다. 이 차이점이 동작에 큰 영향을 주므로 그 차이를 알아보자,
- 페이지 전환주체
- 리다이렉트(클라이언트) 클라이언트가 주체가 되어 페이지를 전환하는 방법은 접속한 URL이 아닌 다른 URL 로 직접 접속하는 방법 밖에 없다.
- 포워드(서버) 서버가 전환추체가 되면 URL 주소가 바뀌지 않고도 서버 내부의 동작을 통해 다른 응답을 클라이언트에 내려줄 수 있게 된다.
리다이렉트
리다이렉트(Redirect)는 말그대로 Re-Direct 의 의미로써 ‘URL을 다시 가리킨다’ 라는 뜻을 가진다. 서버에서 클라이언트에서 요청한 URL에 대한 응답에서 다른 URL 로 재접속 하라고 명령을 보내는 것을 말한다. 리다이렉트가 일어나면 URL 주소가 변경되면서 다시 접속 되는 것을 확인할 수 있다. 브라우저에서 Redirect 하라는 300번대 코드가 서버로 부터 오면 리다이렉트를 해야하는 URL 로 다시 요청을 보낸다.
포워드란
클라이언트가 한번 더 요청을 보내도록 하는 리다이렉트와는 다르게, 포워드는 서버 내부에서 일어나는 호출이다. 클라이언트의 URL에 대한 요청이 들어오면 해당 URL 이 다른 URL 이 어디로 포워딩 된것인지 확인될경우 서버에서 포워딩된 URL 의 리소스를 확인하여 클라이언트에 응답한다.
리다이렉트와 포워드의 사용
사용자의 요청 정보가 변경되는 리다이렉트와 요청정보는 그대로 유지한체 서버 내부의 동작만 바뀌는 포워드는 적절히 사용되어야 한다.
- 리다이렉트는 클라이언트의 요청에 의해 서버의 DB에 변화가 생기는 작업에 사용된다.
- 포워드는 특정 URL 에 대해 외부에 공개되지 말아야 하는 부분을 가리는데 사용하거나 조회를 위해 사용된다.
- 스프링의 경우 /WEB-INF 에 있는 view 에 대한 정보들이 외부에 직접 공개되지 말아야 할 때 내부에서 포워딩을 통해 /WEB-INF 경로를 가리킨다.