在spring MVC中使用会话属性

时间:2012-08-01 16:32:23

标签: spring jsp session

我正在使用spring MVC开发一个Web应用程序。我只想要一个如何在此进行会话管理的简单示例。我见过很多论坛,但我无法清楚地了解这个

我的要求是

我有一个对象,我想在所有控制器和JSP的I中访问它 想在控制器中设置它并在JSP中获取

我正在寻找像

这样的东西
    Session.setAtribute(); 

请你告诉我一个非常简单的例子。谢谢

2 个答案:

答案 0 :(得分:2)

在Spring MVC中有不同的访问servlet会话的方法。但我认为这一个最适合你的问题。您可以创建一个会话范围的bean,它可以保存您想要的信息:

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

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

    // Getters & Setter
}

然后,您可以从其他bean访问它:

@Controller
public class MyController {

    @Autowired private MyObjectHolder myObjectHolder;

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

}

您也可以直接从视图访问,但必须对其进行配置:

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

在你的JSP中:

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

答案 1 :(得分:1)

最简单的方法是直接通过将HttpSession注入到处理程序方法中来访问@RequestMapping("/page") public ModelAndView page(HttpSession session) { session.getAttribute("foo"); }

{{1}}