0

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

我的要求是

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

我正在寻找类似的东西

    Session.setAtribute(); 

你能告诉我一个非常简单的例子吗?谢谢

4

2 回答 2

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}
于 2012-08-01T16:44:34.957 回答
1

最简单的方法是HttpSession通过将其注入您的处理程序方法来直接访问:

@RequestMapping("/page")           
public ModelAndView page(HttpSession session) {           
    session.getAttribute("foo");
}
于 2012-08-01T16:38:39.440 回答