Spring @SessionAttribute how to retrieve the session object in same controller

java, spring, spring-mvc

Solution

`@SessionAttributes` annotation are used on the class level to :

- Mark a model attribute should be persisted to HttpSession after handler methods are executed

- Populate your model with previously saved object from HttpSession before handler methods are executed -- if one do exists

So you can use it alongside your `@ModelAttribute` annotation like in this example:

@Controller
@RequestMapping("/counter")
@SessionAttributes("mycounter")
public class CounterController {

  // Checks if there's a model attribute 'mycounter', if not create a new one.
  // Since 'mycounter' is labelled as session attribute it will be persisted to
  // HttpSession
  @RequestMapping(method = GET)
  public String get(Model model) {
    if(!model.containsAttribute("mycounter")) {
      model.addAttribute("mycounter", new MyCounter(0));
    }
    return "counter";
  }

  // Obtain 'mycounter' object for this user's session and increment it
  @RequestMapping(method = POST)
  public String post(@ModelAttribute("mycounter") MyCounter myCounter) {
    myCounter.increment();
    return "redirect:/counter";
  }
}

Also don't forget common noobie pitfall: make sure you make your session objects Serializable.

Problem

I am using Spring 3.2.0 MVC. In that I have to store one object to session. Currently I am using HttpSession set and get attribute to store and retrieve the value. It returns only the String not Object. I want to use @SessionAttribute when I tried it sets the object in session but I could not retrieve the session object ``` @RequestMapping(value = "/sample-login", method = RequestMethod.POST) public String getLoginClient(HttpServletRequest request,ModelMap modelMap) { String userName = request.getParameter("userName"); String password = request.getParameter("password"); User user = sample.createClient(userName, password); modelMap.addAttribute("userObject", user); return "user"; } @RequestMapping(value = "/user-byName", method = RequestMethod.GET) public @ResponseBody String getUserByName(HttpServletRequest request,@ModelAttribute User user) { String fas= user.toString(); return fas; } ``` Both methods are in same controller. How would I use this to retrieve the object?

Original source

Related problems