Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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
Java 在Spring中存储bean实例_Java_Spring_Tomcat_Spring Mvc_Spring Webflow - Fatal编程技术网

Java 在Spring中存储bean实例

Java 在Spring中存储bean实例,java,spring,tomcat,spring-mvc,spring-webflow,Java,Spring,Tomcat,Spring Mvc,Spring Webflow,我的web应用程序中有一个身份验证方法,它从另一个应用程序获取http参数。我从数据库加载用户并将其存储在Springbean中。在我的登录控制器中,它是实例化的,但当我将它注入另一个控制器时,它会丢失其属性,当我想要访问我的用户时,我会得到“null”。如何使bean的属性在所有其他控制器中可用?我不想使用静态属性。。。我试图使bean“会话范围”,但它不起作用 苏尔滨: @Service @SessionScoped public class SessionUserBean {

我的web应用程序中有一个身份验证方法,它从另一个应用程序获取http参数。我从数据库加载用户并将其存储在Springbean中。在我的登录控制器中,它是实例化的,但当我将它注入另一个控制器时,它会丢失其属性,当我想要访问我的用户时,我会得到“null”。如何使bean的属性在所有其他控制器中可用?我不想使用静态属性。。。我试图使bean“会话范围”,但它不起作用

苏尔滨:

    @Service
@SessionScoped
public class SessionUserBean {

    public Dolgozo user;

    public Boolean userIsDolgozo;
    public Boolean userIsIranyito;
    public Boolean userIsVezeto;
    public Boolean userIsOsztalyVezeto;


    public void setUser(Dolgozo user) {
        this.user = user;
    }

    public Dolgozo getUser() {
        return user;
    }
}
我设置用户属性的值:

@Autowired
    private SessionUser sessionUser;
    @Autowired
    private SessionUserBean user;

    @Autowired
    private HttpServletRequest request;

    @RequestMapping("index.htm")
    public String doLogin(@RequestParam String token) {


        if (login.isUserAuthanticated(token)) {

            user.setUser(sessionUser.getDolgozo()); 

            return "sikeresBelepes";
        }

        return "sikertelenBelepes";
    }
这就是我想使用它的地方:

@Autowired
    private SessionUserBean user;

    public void setUp() {
        employees = drp.findByCsoportID(user.getUser().getCsoportid().getId());
    }
真是一团糟

为什么不使用?它通过设置一组过滤器自动为您管理。您可以在应用程序的任何位置访问用户信息

如果否,则必须在代码中的某个位置设置用户会话,而不能将其自动关联。像这样:

@RequestMapping("index.htm")
public String doLogin(@RequestParam String token) {
    if (login.isUserAuthanticated(token)) {
        user.setUser(sessionUser.getDolgozo()); 
        return "sikeresBelepes";

       session.addAttribute("securityUser", user);
    }

    return "sikertelenBelepes";
}

然后使用
getAttribute()

从会话中获取它。我可以在安全上下文中存储用户信息,但是如果我有10个用户,他们同时使用系统,我如何识别每个用户?我的意见是,我可以通过他们自己的会议来识别他们。通过允许一个bean成为会话bean,我成功地做到了这一点。它几乎可以工作,但仍然存在问题。有些情况下,应用程序会把用户搞得一团糟,允许简单用户查看和控制东西,这是管理员应该看到的。如果您有10个用户,那么每个用户将有10个不同的会话。Spring非常适合多用户应用程序。没有任何问题。在您的情况下,您应该检查自己的代码。