Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 JSF HttpSession登录传递参数?_Java_Hibernate_Jsf_Jsf 2_Primefaces - Fatal编程技术网

Java JSF HttpSession登录传递参数?

Java JSF HttpSession登录传递参数?,java,hibernate,jsf,jsf-2,primefaces,Java,Hibernate,Jsf,Jsf 2,Primefaces,我有使用Hibernate+JSF2.0的登录表单,我的代码运行良好,但我的问题是登录后如何显示用户配置文件,如名字、姓氏等。我的朋友告诉我应该使用HttpSession,但我不知道如何使用它。希望有人给我推荐最好的方法。这是我的密码: login.xhtml loginBean.java public class loginBean { private Users username; private UsersDao userdao; /** Creates a

我有使用Hibernate+JSF2.0的登录表单,我的代码运行良好,但我的问题是登录后如何显示用户配置文件,如名字、姓氏等。我的朋友告诉我应该使用HttpSession,但我不知道如何使用它。希望有人给我推荐最好的方法。这是我的密码:

login.xhtml


loginBean.java

public class loginBean {

    private Users username;
    private UsersDao userdao;

    /** Creates a new instance of loginBean */
    public loginBean() {
        userdao = new UsersDao();
        username = new Users();
    }

    public Users getUsername() {
        return username;
    }

    public void setUsername(Users username) {
        this.username = username;
    }

    public String login(){
        RequestContext context = RequestContext.getCurrentInstance();
        FacesMessage msg;
        boolean loggedIn;

        username = userdao.login(username);
        if(username != null) {
            loggedIn = true;
            FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("username", username.getPassword());
            return "index";
        } else {
            loggedIn = false;
            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Login Error", "Invalid credentials");
            if(this.username == null){
                this.username = new Users();
            }
            FacesContext.getCurrentInstance().addMessage(null, msg);
            return null;
        }
    }

    public String logout(){
        RequestContext context = RequestContext.getCurrentInstance();
        FacesContext facescontext = FacesContext.getCurrentInstance();

        HttpSession sesion = (HttpSession) facescontext.getExternalContext().getSession(false);
        sesion.invalidate();

        return "logout";
    }

}
您有两个选择:

  • 保留
    LoginBean
    ,并在需要的地方注入它。 记住,您可以使用 注释。已存储记录的用户信息 您可以从这里将其检索到您的
    LoginBean
    。您也可以通过以下方式从您的任何视图中引用它:

    {loginBean.userName}

  • 将您的
    LoginBean
    更改为,并让它仅管理与登录相关的视图。然后将一个
    @SessionScoped
    bean注入到这个bean中,该bean将被称为
    LoginInfo
    。当登录执行时,创建您的
    LoginInfo
    bean,该bean可以从同一会话中的其余bean访问

  • 没有必要使用。JSF提供了
    @SessionScoped
    托管bean,以避免自己在其中注入值

    另请参见:

      • 您有两种选择:

      • 保留
        LoginBean
        ,并在需要的地方注入它。 记住,您可以使用 注释。已存储记录的用户信息 您可以从这里将其检索到您的
        LoginBean
        。您也可以通过以下方式从您的任何视图中引用它:

        {loginBean.userName}

      • 将您的
        LoginBean
        更改为,并让它仅管理与登录相关的视图。然后将一个
        @SessionScoped
        bean注入到这个bean中,该bean将被称为
        LoginInfo
        。当登录执行时,创建您的
        LoginInfo
        bean,该bean可以从同一会话中的其余bean访问

      • 没有必要使用。JSF提供了
        @SessionScoped
        托管bean,以避免自己在其中注入值

        另请参见:

          • 您有两种选择:

          • 保留
            LoginBean
            ,并在需要的地方注入它。 记住,您可以使用 注释。已存储记录的用户信息 您可以从这里将其检索到您的
            LoginBean
            。您也可以通过以下方式从您的任何视图中引用它:

            {loginBean.userName}

          • 将您的
            LoginBean
            更改为,并让它仅管理与登录相关的视图。然后将一个
            @SessionScoped
            bean注入到这个bean中,该bean将被称为
            LoginInfo
            。当登录执行时,创建您的
            LoginInfo
            bean,该bean可以从同一会话中的其余bean访问

          • 没有必要使用。JSF提供了
            @SessionScoped
            托管bean,以避免自己在其中注入值

            另请参见:

              • 您有两种选择:

              • 保留
                LoginBean
                ,并在需要的地方注入它。 记住,您可以使用 注释。已存储记录的用户信息 您可以从这里将其检索到您的
                LoginBean
                。您也可以通过以下方式从您的任何视图中引用它:

                {loginBean.userName}

              • 将您的
                LoginBean
                更改为,并让它仅管理与登录相关的视图。然后将一个
                @SessionScoped
                bean注入到这个bean中,该bean将被称为
                LoginInfo
                。当登录执行时,创建您的
                LoginInfo
                bean,该bean可以从同一会话中的其余bean访问

              • 没有必要使用。JSF提供了
                @SessionScoped
                托管bean,以避免自己在其中注入值

                另请参见:



                您的
                登录域是哪个范围?
                ?我建议使用DTO检索DAO中的用户信息。我不知道它是什么?你能给我举个例子吗?为什么这个类的实例表示一个名为
                Users
                的单个用户,却用复数形式表示?为什么要调用表示整个用户实例的属性
                username
                ?使用
                私人用户
                {loginBean.user.username}
                或者更好的
                {loginBean.user.name}
                。代码应该是自文档化的。为什么这是错误的?如果您想打印登录用户的用户名,只需使用
                #{loginBean.username.username}
                (我们要指出的是,您的代码绝对不是自我记录的;请修复您糟糕且令人困惑的类/变量名)您的
                登录域是哪个范围?
                ?我建议使用DTO检索DAO中的用户信息。我不知道它是什么?你能给我举个例子吗?为什么这个类的实例表示一个名为
                Users
                的单个用户,却用复数形式表示?为什么要调用表示整个用户实例的属性
                username
                ?使用
                私人用户
                {loginBean.user.username}
                或者更好的
                {loginBean.user.name}
                。代码应该是自文档化的。为什么这是错误的?如果您想打印登录用户的用户名,只需使用
                #{loginBean.username.username}
                (我们要指出的是,您的代码绝对不是自我记录的;请修复您糟糕且令人困惑的类/变量名)您的
                登录域是哪个范围?
                ?我建议使用DTO检索DAO中的用户信息。我不知道它是什么?你能给我举个例子吗?为什么这个类的实例表示一个名为
                Users
                的单个用户,却用复数形式表示?为什么要调用表示整个用户inst的属性