有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在会话中设置对象并在所有控制器中使用它?

我有一个主控制器,作为Spring MVC 4.0.3应用程序的入口点。其想法是从数据库中加载用户一次,以及其配置文件(首选项),然后在会话中设置它们,以便在整个应用程序中轻松重复使用

我是Spring MVC的新手,我来自Struts 1.3.5,我在其中做了以下工作:

<bean define id="currentUser" name="currentUser"
             type="my.entity.bean" scope="session" />

我使用Thymeleaf作为前端(视图)

有没有任何自动接线的可能性,这样它就可以自动连接到所有控制器,而不必到处带一些样板代码

谢谢你的帮助


共 (1) 个答案

  1. # 1 楼答案

    定义一个作用域为“session”的CurrentUserSpringbean,并将其注入所有控制器中:

    @Component
    @Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
    public class CurrentUser {
    
        private UserInformation userInformation;
    
        public void setUserInformation(UserInformation userInformation) {
            this.userInformation = userInformation;
        }
    
        public UserInformation getUserInformation() {
            return userInformation;
        }
    }
    

    “入口点”控制器将设置用户信息,其他控制器将获取该信息

    不过,要注意“入口点”。用户应该能够为任何页面添加书签,并在不通过入口点控制器的情况下访问您的webapp。身份验证过滤器或拦截器是一个更好的主意