HJoo.log
로그인
HJoo.log
로그인
[Spring #8] redirect와 forward
HJoo
·
2023년 1월 16일
팔로우
0
MegabyteSchool
Spring
개발자취업부트캠프
국비지원교육
내일배움카드
메가바이트스쿨
패스트캠퍼스
0
TodayStudy
목록 보기
46/111
redirect와 forward처리과정 비교
redirect
클라이언트가 url을 요청(request)했을 때 302로 응답(response)했다
300번대는 redirect, 자른 URL로 재요청 하라는 의미
응답에는 body가 없고 헤더만 있다
응답의 헤더에는 재요청할 URL(Location: /../)이 있다
응답을 받은 브라우저(사용자x)는 자동으로 재요청 URL로 요청을 다시 보낸다
브라우저가 자동으로 재요청하는 것은 GET방식으로 진행된다(처음에 클라이언트가 보낸 요청 방식에 상관 없음)
forward
클라이언트가 url을 요청(request)했을 때 자신이 처리하는 것이 아니거나, 일부만 처리하고 넘겨야할 때 다른 jsp로 전달한다
받은 request 그대로 다른 jsp에 전달한다
전달하는 request에는 처음 jsp에서 새로운 내용을 추가할 수 있다(요청 중 일부만 처리)
마지막에 처리한 jsp가 응답을 클라이언트에게 보낸다
request 객체가 model 역할, 처음 요청을 받는 객체가 controller 역할, 이후 요청을 넘겨 받는 객체가 view 역할
Spring에서 처리하는 방법
RedirectView
URL을 요청하면
DispatcherServlet
이 받는다
이 요청을 처리할 수 있는 Controller의 메서드를 호출한다(URL과 맵핑되어 있는)
메서드의 유효성 검사를 통과하지 못했다면 controller는
return "redirect: /../";
를 DispatcherServlet에 전달한다
DispatcherServlet은 반환받은 문자열에 redirect가 포함되어 있기 때문에
RedirectView
에 전달한다
RedirectView는 브라우저에 redirect 정보를 담은 응답을 만들어서 응답한다
브라우저는 응답에 담긴 location으로 재요청을 보낸다
JstlView
URL을 요청하면 DispatcherServlet이 받아서 해당 controller의 메서드를 호출한다
뷰 이름을 반환 받고 뷰 이름 문자열을
InternalResourceViewResolver
에 보낸다
InternalResourceViewResolver가 이 이름을 해석한다(실제로 어떤 파일인지)
문자열의 앞 경로와 뒤에 확장자를 붙여준다
그 이름을 JstlView에 넘겨준다
JstlView가 해당 이름에 해당하는 jsp에게 모델을 넘겨준다
jsp파일은 모델을 가지고 최종 응답을 만들어 브라우저에 응답한다
servlet-context.xml 파일 안에 InternalResourceViewResolver로 붙일 접두사 접미사를 설정할 수 있다
InternalResourceView
forward방식
URL을 요청하면 DispatcherServlet이 받아서 해당 controller의 메서드를 호출한다
메서드가 반환하는 문자열이 forward로 시작한다면 뒤에 있는 주소로 forward하라는 의미
DispatcherServlet이 해당 문자열을
InternalResourceView
에 전달한다
InternalResourceView가 해당 문자열을 호출하고 DispatcherServlet에 알려준다
DispatcherServlet은 다시 요청받은 url에 맵핑되어있는 메서드를 호출한다
결과로 뷰를 반환받았다면 위의 JstlView에 해당하는 과정이 진행된다
HJoo
안녕하세요. Chat JooPT입니다.
팔로우
이전 포스트
[Spring #7] @RequestMapping
다음 포스트
[Spring #9] Cookie
0개의 댓글
댓글 작성