개발자 미니민의 개발스터디

[spring] @SessionAttributes 세션

by mini_min
[spring] @SessionAttributes 세션

✔️ @SessionAttributes

: Model 객체를 세션에 저장하고 사용하기 위한 애노테이션 (@ModelAttribute 과 이름이 동일해야한다!)

: 클래스 레벨에서 선언 가능하다.

: 지속적으로 값을 유지시키거나 여러 단계로 submit 되는 폼을 구현할 때 사용한다.

: double submit 방지- 브라우저 뒤로가기 안된다.

 

👩‍💻 ex12 예제

- @ModelAttribute  객체와 이름이 동일해야한다. (user 라는 이름으로 세션에 저장)

@SessionAttributes("user")
@Controller("ex12.userController")
@RequestMapping("/ex12/*")
public class UserController {

//세션에 유저라는 이름으로 저장. User의 객체가 저장.
	@ModelAttribute("user")
	public User command() {
		return new User();
	}

}

 

- @ModelAttribute("user") User user //user 를 받아버림

✨ sessionStatus.setComplete(); : 세션에 있는 내용 지우기

: 세션에 있는 내용은 지워야한다.

@PostMapping("step1")
	public String step1(
			@ModelAttribute("user") User user //user 를 받아버림
			) {
		return "ex12/step2";
}
	
@PostMapping("step2")
public String step2(
        @ModelAttribute("user") User user, 
        SessionStatus sessionStatus, 
        Model model
        ) {

    String s = "이름:"+user.getName()+"<br>"
            + "이메일:"+user.getEmail()+"<br>"
            + "아이디:"+user.getId()+"<br>"
            + "패스워드:"+user.getPwd()+"<br>"
            + "전화번호:"+user.getTel();

    sessionStatus.setComplete(); // 세션에 저장된 내용 지우기!
                                //세션에 있는 내용은 지워야한다.

    model.addAttribute("message", s);

    return "ex12/complete";
}

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기