Spring MVC - RequestScope
2020. 9. 11. 19:28ㆍJava/Spring
반응형
Request
- 브라우저에 의해 새로운 요청이 발생하면 브라우저는 서버에 요청에 관련된 정보를 전송하게 된다.
- 이를 받은 서버는 브라우저가 보낸 요청 정보들을 보관하기 위해 HttpServletRequest 객체를 생성해 요청 정보들을 담아 두게 된다.
- 요청 정보가 담겨 있는 HttpServletRequest 객체는 응답결과가 브라우저로 전송될 때까지 유지되며 사용이 가능하다.
RequestScope
- 새로운 요청이 발생해 응답결과가 브라우저로 전달 될 때 까지 요청 정보가 담겨 있는 Request 객체를 사용할 수 있다.
- 이러한 사용 범위를 RequestScope라고 부른다.
- HttpServletRequest 객체에는 서버 개발자가 필요에 의해 데이터나 객체를 저장할 수 있고 RequestScope 내에서 사용이 가능하다.
Model, ModelView는 전송 데이터를 request 객체에 저장하게 된다. 다라서 forward를 하더라도 받는 쪽에서 Model이나 ModelView로 받으면 값을 받을 수 없다.
@Controller
public class TestController {
@GetMapping("/test1")
public String test1(Model model) {
model.addAttribute("data2","문자열 2");
return "forward:/result";
}
@GetMapping("/result")
public String result1(Model model) {
String data2 =(String)model.getAttribute("data2");
System.out.println(data2);
return "result";
}
}
따라서 request객체를 통해서 받아야 한다.
위 코드를 아래와 같이 수정한다.
@Controller
public class TestController {
@GetMapping("/test1")
public String test1(Model model) {
model.addAttribute("data2","문자열 2");
return "forward:/result";
}
@GetMapping("/result")
public String result1(HttpServletRequest request) {
String data2 =(String)request.getAttribute("data2");
System.out.println(data2);
return "result";
}
}
ModelAttribute의 경우도 다음과 같이 request객체로 받아와야 한다.
@GetMapping("/test2")
public String test2(@ModelAttribute("bean1") Databean1 bean) {
bean.setData1("문자열2");
bean.setData2("문자열3");
return "forward:/result2";
}
@GetMapping("/result2")
public String result2(HttpServletRequest request) {
Databean1 bean = (Databean1)request.getAttribute("bean1");
System.out.println(bean.getData1());
System.out.println(bean.getData2());
return "result";
}
위와 같이 가져온 객체를 request를 통해서 전달하게 되고 그 객체를 request에서 받아와 사용해야한다.
반응형
'Java > Spring' 카테고리의 다른 글
Spring MVC - SessionScope (0) | 2020.09.13 |
---|---|
Spring MVC - RequestScope 빈 주입 (0) | 2020.09.11 |
Spring MVC - Redirect, Forward (0) | 2020.09.10 |
Spring MVC - Form 커스텀 태그 요소(select,checkbox,radio) (0) | 2020.09.09 |
Spring MVC - Form 커스텀 태그 요소(1) (0) | 2020.09.09 |