1. @SessionAttributes & @ModelAttribute
- @SessionAttributes 파라미터로 지정된 이름과 같은 이름이 @ModelAttribute에 지정되어 있을 경우 메소드가 반환하는 값은 세션에 저장된다.
- 아래의 예제는 세션에 값을 초기화 하는 목적으로 사용되었다. (User 객체가 "user"라는 이름으로 세션에 저장됨)
@SessionAttributes("user")
public class LoginController{
@ModelAttribute("user")
public User setUpUserForm(){
return new User();
}
}
- @SessionAttributes의 파라미터와 같은 이름이 @ModelAttribute에 있을 경우 세션에 있는 객체를 가져온 후, 클라이언트로 전송받은 값을 설정한다.
@Controller
@SessionAttributes("user")
public class LoginController{
...
@PostMapping("/dologin")
public String doLogin(@ModelAttribute("user") User user, Model model){
...
}
}
- 메소드에 @SessionAttribute가 있을 경우 파라미터로 지정된 이름으로 등록된 세션 정보를 읽어와서 변수에 할당한다.
@GetMapping("/info")
public String userInfo(@SessionAttribute("user" User user)){
...
...
return "user";
}
- SessionStatus는 컨트롤러 메소드의 파라미터로 사용할 수 있는 스프링 내장 타입이다. 이 오브젝트를 이용하면 현재 컨트롤러의 @SessionAttributes에 의해 저장된 오브젝트를 제거할 수 있다.
@Controller
@SessionAttributes("user")
public class UserController{
...
@RequestMapping(value = "/user/add", method = RequestMethod.POST)
public String submit(@ModelAttribute("user") User user, SessionStatus sessionStatus){
...
sessionStatus.setComplete():
...
}
}
- modelAttribute 속성으로 지정된 이름의 객체를 세션에서 읽어와서 form 태그로 설정된 태그에 값을 설정한다.
<form:form action="login" method = "post" modelAttribute="user">
Email : <form:imput path="email" /> <br>
Password : <form:password path = "password"/> <br>
<button type = "submit">Login</button>
<form:form>
참조 URL
'Java > Spring' 카테고리의 다른 글
아큐먼트 리졸버란? (1) | 2020.07.17 |
---|---|
인터셉터(Interceptor)란? (0) | 2020.07.17 |
DispatcherServlet, MVC 설정 (0) | 2020.07.14 |
Spring JDBC (0) | 2020.07.12 |
Spring IoC/DI 컨테이너 (0) | 2020.07.11 |