728x90

RequestScope

Requset : 브라우저에 의해 요청이 발생하면 브라우저는 서버에 요청과 관련된 정보를 전송한다.

이를 받은 서버는 요청 정보들을 보관하기 위해 HttpServletRequest 객체를 생성해 정보를 저장한다. 이 객체는 응답 결과가 전송될 때까지 유지되며 사용가능하다.

RequestScope : 요청이 발생해 응답결과를 전송할 떄까지 Request 객체를 사용 가능한데, 이 사용범위를 RequestScope 라고한다.

HttpServletRequest 객체에 데이터나 객체를 저장하고 RequestScope 내에서 사용이 가능하다.

클라이언트의 요청을 받을 떈 HttpServletRequest, Model, ModelAndView, @ModelAttribute("bean1") DataBean1 등 여러 방식으로 받을 수 있으나 그 요청을 다른 곳으로 forward 해준다면 forward 된 곳에선 HttpServletRequest 객체만을 이용해서 전달받을 수 있다. 다른 방식으로 받으면 null값이 된다. 참고로 redirectrequest객체가 소멸되니 전달할 수 없다.

아래 메소드가 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 객체를 주입해야한다.

XmlBean을 설정한 후 byName으로 주입받는 경우에만 request 영역에 자동으로 저장된다.

->     <bean class='kr.co.beans.DataBean2' id='requestBean2' scope='request'/> 이렇게 Bean을 설정하면 request 영역에 자동으로 저장된다.

 

Java 방식은 @RequestScope를 사용,

Xml 방식은 bean을 정의할 떄 scope="request"로 설정한다.

728x90

'프로그래밍 > 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

+ Recent posts