我正在开发一个使用spring MVC的web应用程序。我只想要一个简单的例子来说明如何在此进行会话管理。我已经看到了很多的论坛,但我不能够得到这个在春天使用会话属性MVC
清晰的照片我的要求是
我有一个对象,我想在所有的控制器访问和JSP的我 想设置在控制器并获得在JSP
我在寻找类似
Session.setAtribute();
能否请你让我知道一个很简单的例子。谢谢
我正在开发一个使用spring MVC的web应用程序。我只想要一个简单的例子来说明如何在此进行会话管理。我已经看到了很多的论坛,但我不能够得到这个在春天使用会话属性MVC
清晰的照片我的要求是
我有一个对象,我想在所有的控制器访问和JSP的我 想设置在控制器并获得在JSP
我在寻找类似
Session.setAtribute();
能否请你让我知道一个很简单的例子。谢谢
最简单的方法就是直接通过将其注入你的处理方法访问HttpSession
:
@RequestMapping("/page")
public ModelAndView page(HttpSession session) {
session.getAttribute("foo");
}
有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
}
然后,您可以从其他豆类访问它:
@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}
谢谢您的回复。因此,MyObjectHolderImpl是我设置我的seesion对象的地方,我可以从任何地方得到它,..我必须多次设置会话对象,我只需要将它设置为一次controlldersin我的 – user1562262 2012-08-01 16:49:38
@ user1562262:不,您可能不需要访问会话对象。您可以在MyObjectHolder中保存所需的信息(如用户标识,名称,主题,首选项...)。我会更新我的答案。 – sinuhepop 2012-08-01 16:55:08
谢谢你的回复..我只想知道,我是否必须在设置会话的控制器中注入HttpSession会话,或者仅在获得会话的控制器中注入HttpSession会话 – user1562262 2012-08-01 16:40:58
@ user1562262:无论何时注入'HttpSession'需要它 :-)。另外再读一点,在Spring MVC中访问HTTP会话属性有更方便的方法,但需要预先设置一些设置。 – 2012-08-01 16:42:57