SessionAttributesby TinyBread

@SessionAttributes & SessionStatus

Session?

브라우저를 통해 사용자가 로그인을 하면 그 정보는 로그아웃이 되기 전까지 유지되어야 한다. 그러나 HTTP 요청은 매 요청과 응답이 독립적으로 이루어지기 때문에 사용자의 로그인 정보를 유지하기 위해 Session을 사용한다.

사용방법

@SessionAttributes 사용하지 않고 servlet & jsp 에서 session을 사용하는 방법으로는 request에서 Session객체를 얻어 아래와 같은 방식으로 사용한다.

	// get session attribute
	HttpSession session = request.getSession();
	String sessionScope = (String) session.getAttribute("sessionTest");


	// set session attribute
	HttpSession session = request.getSession();
	session.setAttribute("sessionTest", "session Test!!");



@SessionAttributes, @ModelAttribute 사용하게되면 위와 같이 직접 세션에 저장을 해주는 작업을 하지않아도 된다.

	@SessionAttributes("user")  
	...
	...
	model.addAttribute("user", user);
	...

위와 같은 작업을 통해 “user”라는 이름으로 Model객체에 attribute를 지정하는 것이 있다면 이를 Session에 저장한다.

		@RequestMapping(value = "/sessionCheck", method = RequestMethod.POST)
		public String submit(@ModelAttribute("user") User user) {
			System.out.println("id : " + user.getId());
			System.out.println("pw : " + user.getPasswd());
			return "result";
		}

@ModelAttribute를 이용하여 session에 저장된 값을 파라미터값으로 가져온다. (session에 저장된 값을 꺼내옴)

SessionStatus

더이상 필요없는 세션을 제거해 주기 위한 작업 (SessionStatus스프링 내장 타입)

		@RequestMapping(value = "/logout", method = RequestMethod.POST)
		public String logout(@ModelAttribute User user, SessionStatus sessionStatus) {
			sessionStatus.setComplete();//session 제거  
			return "result";
		}


Published 22 February 2016