在SpringMVC中使用会话属性
我正在使用SpringMVC开发一个web应用程序。我只想举一个简单的例子,说明如何在这个系统中进行会话管理。我看过很多论坛,但我不能得到一个清晰的图片 我的要求是 我有一个对象,我希望在所有控制器和JSP的I中都可以访问它 希望在控制器中设置它,并在JSP中获取它 我在找像这样的东西在SpringMVC中使用会话属性,spring,jsp,session,Spring,Jsp,Session,我正在使用SpringMVC开发一个web应用程序。我只想举一个简单的例子,说明如何在这个系统中进行会话管理。我看过很多论坛,但我不能得到一个清晰的图片 我的要求是 我有一个对象,我希望在所有控制器和JSP的I中都可以访问它 希望在控制器中设置它,并在JSP中获取它 我在找像这样的东西 Session.setAtribute(); 你能告诉我一个很简单的例子吗。谢谢最简单的方法是通过将HttpSession注入处理程序方法直接访问它: @RequestMapping("/page")
Session.setAtribute();
你能告诉我一个很简单的例子吗。谢谢最简单的方法是通过将
HttpSession
注入处理程序方法直接访问它:
@RequestMapping("/page")
public ModelAndView page(HttpSession session) {
session.getAttribute("foo");
}
最简单的方法是通过将HttpSession注入处理程序方法直接访问它:
@RequestMapping("/page")
public ModelAndView page(HttpSession session) {
session.getAttribute("foo");
}
在SpringMVC中有不同的访问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>
在SpringMVC中有不同的访问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>
谢谢你的答复。。我只想知道,比如,我必须在设置会话的控制器中注入HttpSession会话,还是只在获取会话的控制器中注入HttpSession会话和HttpSession会话session@user1562262:需要时随时注入
HttpSession
:-)。另外,请阅读更多内容,在Spring MVC中有更方便的方法访问HTTP会话属性,但需要预先进行一些设置。感谢您的回复。。我只想知道,比如,我必须在设置会话的控制器中注入HttpSession会话,还是只在获取会话的控制器中注入HttpSession会话和HttpSession会话session@user1562262:需要时随时注入HttpSession
:-)。还请阅读更多内容,在Spring MVC中有更方便的方式访问HTTP会话属性,但需要预先进行一些设置。感谢您的回复。因此MyObjectHolderImpl是我设置Seision对象的地方,我可以从任何地方获取它,。。因为我不需要多次设置会话对象,我只需要在My@user1562262:否,您可能并不真正需要访问会话对象。您可以在MyObjectHolder中保存所需的信息(如用户id、名称、主题、首选项…)。我会更新我的答案。谢谢你的回复。所以MyObjectHolderImpl是我设置seesion对象的地方,我可以从任何地方获得它,。。因为我不需要多次设置会话对象,我只需要在My@user1562262:否,您可能并不真正需要访问会话对象。您可以在MyObjectHolder中保存所需的信息(如用户id、名称、主题、首选项…)。我会更新我的答案。