728x90
RequestScope
- 새로운 요청이 발생해 응답결과가 브라우저로 전달 될 때 까지 요청 정보가 담겨있는 Request 객체를 사용할 수 있습니다.
- 이러한 사용 범위를 RequestScope라고 부릅니다.
- HttpServletRequest 객체에는 서버 개발자가 필요에 의해 데이터나 객체를 저장 할 수 있고 ReuqestScope 내에서 사용이 가능합니다.
@Controller
public class TestController{
@GetMapping("/test")
public String test(HttpServletRequest request){
request.setAttribtue("data1","문자열1");
return "forward:/test2"; //redirect 사용시 소멸 되기에 밑에 출력은 null이 된다.
}
@GetMapping("/test2")
public String test(HttpServletRequest request){
//Model model
//model.addAttribute("data2","문자열2"); model 로 전송해도 request 영역에 저장됨.
String data1 = (String)request.getAttribtue("data1");
System.out.println(data1); //문자열1
return "test2";
}
}
test2.jsp
<h3>data1 : ${requestScope.data1} </h3> <!-- forward 시 "문자열1" 전송 됨 -->
<!-- redirect 시 "null" 전송 됨 -->
Model을 통한 전송
@Controller
public class TestController{
@GetMapping("/test")
public String test(Model model){
model.addAttribtue("data1","문자열1");
return "forward:/test2"; //model 로 넣으면 request 영역에 들어가기 때문에
}
@GetMapping("/test2")
public String test(HttpServletRequest request){
//HttpServletRequest request 로 받아야 한다.
String data1 = (String)request.getAttribtue("data1");
System.out.println(data1);
return "test2";
}
}
ModelAndView로 전송
@Controller
public class TestController{
@GetMapping("/test")
public ModelAndView test(ModelAndView mv){
mv.addObject("data1","문자열1");
mv.setViewName("forward:/test2");
return mv; //ModelAndView 로 넣으면 request 영역에 들어가기 때문에
}
@GetMapping("/test2")
public String test(HttpServletRequest request){
//그래서 request 영역이여서 request로 받아야한다.
String data1 = (String)request.getAttribtue("data1");
System.out.println(data1);
return "test2";
}
}
객체를 만들어서 전송
@Controller
public class TestController{
@GetMapping("/test")
public String test(Model model){
MemberDTO member = new MemberDTO();
member.setName("홍길동");
member.setId("hong"):
model.addAttribute("member1",member);
return "forward:/test2";
}
@GetMapping("/test2")
public String test(HttpServletRequest request){
MemberDTO member1 = (MemberDTO)request.getAttribute("member1");
System.out.println(member1.getName); //홍길동
System.out.println(member1.getId); //hong
return "test2";
}
}
test2.jsp
<h3>member1.name : ${requestScope.member1.name} </h3>
<h3>member1.id : ${requestScope.member1.id} </h3>
@ModelAttribute 사용시
@Controller
public class TestController{
@GetMapping("/test")
public String test(@ModelAttribute memberDTO member){
member.setName("홍길동");
member.setId("hong"):
return "forward:/test2";
}
@GetMapping("/test2")
public String test(HttpServletRequest request){
//이 경우 에도 request 로 받아야한다.
MemberDTO member1 = (MemberDTO)request.getAttribute("member");
System.out.println(member1.getName); //홍길동
System.out.println(member1.getId); //hong
return "test2";
}
}
728x90
'Back-End > Spring(Boot)' 카테고리의 다른 글
스프링 Session (0) | 2021.03.06 |
---|---|
스프링 Request Scope 빈 주입 (0) | 2021.03.06 |
스프링 Redirect / Forward (0) | 2021.03.06 |
스프링 Form 커맨드 태그 (0) | 2021.03.05 |
커맨드 객체란? (0) | 2021.03.05 |