Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SpringMVC中使用会话属性_Spring_Jsp_Session - Fatal编程技术网

在SpringMVC中使用会话属性

在SpringMVC中使用会话属性,spring,jsp,session,Spring,Jsp,Session,我正在使用SpringMVC开发一个web应用程序。我只想举一个简单的例子,说明如何在这个系统中进行会话管理。我看过很多论坛,但我不能得到一个清晰的图片 我的要求是 我有一个对象,我希望在所有控制器和JSP的I中都可以访问它 希望在控制器中设置它,并在JSP中获取它 我在找像这样的东西 Session.setAtribute(); 你能告诉我一个很简单的例子吗。谢谢最简单的方法是通过将HttpSession注入处理程序方法直接访问它: @RequestMapping("/page")

我正在使用SpringMVC开发一个web应用程序。我只想举一个简单的例子,说明如何在这个系统中进行会话管理。我看过很多论坛,但我不能得到一个清晰的图片

我的要求是

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

我在找像这样的东西

    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、名称、主题、首选项…)。我会更新我的答案。