user1562262
user1562262

Reputation: 95

Using session attributes in spring MVC

I am developing a web application using spring MVC. I just want a simple example of how to do session management in this. I have seen lot of forums but I am not able to get a clear picture of this

My requirement is

I have an object, which I would like to be accessible in all controllers and JSP's I would like to set that in the controller and get that in JSP

I am looking for something like

    Session.setAtribute(); 

Could you please let me know a very simple instance . Thank you

Upvotes: 0

Views: 5553

Answers (2)

sinuhepop
sinuhepop

Reputation: 20297

There are different ways of accessing servlet session in Spring MVC. But I think this one is the one that best suits your problem. You can create a session scoped bean, which holds your desired info:

@Component("myObjectHolder")
@Scope(WebApplicationContext.SCOPE_SESSION)
public class MyObjectHolderImpl implements MyObjectHolder {

    private long userId;
    private String username;
    private Theme theme;

    // Getters & Setter
}

Then, you can access to it from other beans:

@Controller
public class MyController {

    @Autowired private MyObjectHolder myObjectHolder;

    @RequestMapping
    public ModelAndView switchTheme(String themeId) {
        ...
        Theme newTheme = themeService.get(themeId);
        myObjectHolder.setTheme(newTheme);      
        ...
    }

}

You can access directly from your view too, but you must configure it:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    ...
    <property name="exposedContextBeanNames" value="myObjectHolder" />
</bean>

And in your JSP:

Hi ${myObjectHolder.username}, you switched 
application theme to ${myObjectHolder.theme.name}

Upvotes: 2

Tomasz Nurkiewicz
Tomasz Nurkiewicz

Reputation: 340708

The simplest approach is to access HttpSession directly by injecting it into your handler method:

@RequestMapping("/page")           
public ModelAndView page(HttpSession session) {           
    session.getAttribute("foo");
}

Upvotes: 1

Related Questions