Java JSF HttpSession登录传递参数?
我有使用Hibernate+JSF2.0的登录表单,我的代码运行良好,但我的问题是登录后如何显示用户配置文件,如名字、姓氏等。我的朋友告诉我应该使用HttpSession,但我不知道如何使用它。希望有人给我推荐最好的方法。这是我的密码: login.xhtmlJava 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
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访问@SessionScoped
托管bean,以避免自己在其中注入值
另请参见:
- 保留
,并在需要的地方注入它。 记住,您可以使用 注释。已存储记录的用户信息 您可以从这里将其检索到您的LoginBean
。您也可以通过以下方式从您的任何视图中引用它:LoginBean
{loginBean.userName}
- 将您的
更改为,并让它仅管理与登录相关的视图。然后将一个LoginBean
bean注入到这个bean中,该bean将被称为@SessionScoped
。当登录执行时,创建您的LoginInfo
bean,该bean可以从同一会话中的其余bean访问LoginInfo
没有必要使用。JSF提供了
- 您有两种选择:
@SessionScoped
托管bean,以避免自己在其中注入值
另请参见:
- 保留
,并在需要的地方注入它。 记住,您可以使用 注释。已存储记录的用户信息 您可以从这里将其检索到您的LoginBean
。您也可以通过以下方式从您的任何视图中引用它:LoginBean
{loginBean.userName}
- 将您的
更改为,并让它仅管理与登录相关的视图。然后将一个LoginBean
bean注入到这个bean中,该bean将被称为@SessionScoped
。当登录执行时,创建您的LoginInfo
bean,该bean可以从同一会话中的其余bean访问LoginInfo
没有必要使用。JSF提供了
- 您有两种选择:
@SessionScoped
托管bean,以避免自己在其中注入值
另请参见:
- 保留
,并在需要的地方注入它。 记住,您可以使用 注释。已存储记录的用户信息 您可以从这里将其检索到您的LoginBean
。您也可以通过以下方式从您的任何视图中引用它:LoginBean
{loginBean.userName}
- 将您的
更改为,并让它仅管理与登录相关的视图。然后将一个LoginBean
bean注入到这个bean中,该bean将被称为@SessionScoped
。当登录执行时,创建您的LoginInfo
bean,该bean可以从同一会话中的其余bean访问LoginInfo
没有必要使用。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的属性