RequestScope
Requset : 브라우저에 의해 요청이 발생하면 브라우저는 서버에 요청과 관련된 정보를 전송한다.
이를 받은 서버는 요청 정보들을 보관하기 위해 HttpServletRequest 객체를 생성해 정보를 저장한다. 이 객체는 응답 결과가 전송될 때까지 유지되며 사용가능하다.
RequestScope : 요청이 발생해 응답결과를 전송할 떄까지 Request 객체를 사용 가능한데, 이 사용범위를 RequestScope 라고한다.
HttpServletRequest 객체에 데이터나 객체를 저장하고 RequestScope 내에서 사용이 가능하다.
클라이언트의 요청을 받을 떈 HttpServletRequest, Model, ModelAndView, @ModelAttribute("bean1") DataBean1 등 여러 방식으로 받을 수 있으나 그 요청을 다른 곳으로 forward 해준다면 forward 된 곳에선 HttpServletRequest 객체만을 이용해서 전달받을 수 있다. 다른 방식으로 받으면 null값이 된다. 참고로 redirect는 request객체가 소멸되니 전달할 수 없다.
아래 메소드가 forward 받은 mapping 예시이다.
@GetMapping("/result1")
public String result1(HttpServletRequest request) {
String data1 = (String)request.getAttribute("data1"); return "result1";
}
RequestScope 빈 주입
Bean을 정의할 때 request scope로 정의하면 요청이 발생할 때마다 Bean 객체가 생성되어 자동으로 주입된다.
하지만 주입된 Bean 객체가 request 영역에 저장되는 것은 아니다.
따라서 Model 객체에 Bean 객체를 주입해야한다.
Xml로 Bean을 설정한 후 byName으로 주입받는 경우에만 request 영역에 자동으로 저장된다.
-> <bean class='kr.co.beans.DataBean2' id='requestBean2' scope='request'/> 이렇게 Bean을 설정하면 request 영역에 자동으로 저장된다.
Java 방식은 @RequestScope를 사용,
Xml 방식은 bean을 정의할 떄 scope="request"로 설정한다.
'프로그래밍 > Spring' 카테고리의 다른 글
[Spring] Application Scope (0) | 2020.04.02 |
---|---|
[Spring] Session Scope (0) | 2020.04.02 |
[Spring] redirect & forward (0) | 2020.04.01 |
[Spring] form 태그 (0) | 2020.04.01 |
[Spring] ViewResolver & 커맨드 객체 (0) | 2020.04.01 |