Request, RequestScope ?
* Client에 의해 새로운 요청이 발생되면 브라우저는 서버로 요청정보를 전달한다.
* 서버에는 HttpServletRequest객체를 생성 후 요청에 관한 정보를 담아놓는다, HttpServletRequest 객체는 Client에 요청에관하여 응답결과가 브라우저로 전송될 때까지 유지 및 사용이 가능하다.
* Client에 의해 새로운 요청이 발생해 응답결과가 브라우저로 전달되기까지 즉,
"Request 객체를 사용할 수 있는 유효한 범위 == RequestScope" 이다.
* HttpServletRequest 객체는 RequestScope (요청사용범위) 내 에서 활용이 가능하다.
RequestScope Exercise..
1. TestReqScopeController 컨트롤러 생성
* Client에 의해 새로운 요청이 발생해 응답결과가 브라우저로 전달되기까지 즉,
"Request 객체를 사용할 수 있는 유효한 범위 == RequestScope" 이다.
* Redirect사용시, Client는 서버로부터 응답결과로 전달받은 주소로 다시요청(Request) --> HttpServletRequest 객체가 새로생성 되므로, RequestScope 범위에서 벗어난다. 따라서 기존, Request영역에 저장된 데이터 초기화 되며 사용이 불가능하다. (Request영역에 setAttribute로 저장된 "sample" 조회시 Null 값으로 확인되어진다... )
* Forward사용시, 서버상의 흐름이동으로 RequestScope 벗어나지 않아, 기존, Request영역에 저장된 데이터 사용가능.
(Request영역에 setAttribute로 저장된 "sample" 조회시 이전 설정했던 jwj 조회... )
* Model객체 또한 Request영역에 저장되므로 HttpServletRequest 객체로부터 저장된 데이터를 사용해야 한다.
(Model.getAttribute()로 조회시 Null --> Request영역에 저장되므로 HttpServletRequest.getAttribute())
2. TestReqScopeController 컨트롤러 수정
* ModelAndView객체 또한 Request영역에 저장되므로 HttpServletRequest 객체로부터 저장된 데이터를 사용해야 한다.
* Model객체에 저장한, DTO객체 또한 Request영역에 저장되므로, HttpServletRequest.getAttribute("DTO저장이름")으로 DTO객체를 Request영역에서 얻어 사용한다.
* @ModelAttribute로 선언한 객체 또한 Request영역에 저장된다, HttpServletRequest.getAttribute("클래스 사용이름") 으로 사용한다. @ModelAttribute는 사용할 이름을 지정하지 않을시. 자동으로 클래스의 맨 앞글자만, 소문자로서 사용이름이 지정된다("Cf. MyInfoDto클래스 --> myInfoDto"), 사용이름 지정시 @ModelAttribute("사용이름")으로 지정한다.
'SpringMVC' 카테고리의 다른 글
[SpringMVC] SessionScope(1) (0) | 2021.09.20 |
---|---|
[SpringMVC] RequestScope Bean(2) (0) | 2021.09.14 |
[SpringMVC] Server응답 처리방식(Redirect, Forward) (0) | 2021.09.08 |
[SpringMVC] Server응답 처리방식(Request, Model, ModelAndView) (0) | 2021.09.05 |
[SpringMVC] 파라미터 처리방식 (2) (0) | 2021.09.01 |