我正在开发一个简单的项目云,其中注册用户登录后可以下载和上传文件。
我正在使用 Eclipse Java EE、JSF 和 Hibernate 进行开发。
在我的项目中,我可以登录用户,如果数据正确,我会打开用户菜单,但无法弄清楚在哪里存储有关登录用户的信息。所以session的概念还不太清楚。我已经阅读了一些有关 Hibernate 和会话的内容,但我还不明白。我需要至少保留当前登录用户的用户名,使用什么对象?哪里?你可以帮帮我吗?谢谢
@ManagedBean
@SessionScoped
public class Login {
private String userId;
private String password;
public Login() {}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String loginUser (){
SessionHandler s = new SessionHandler();
Session sessione = s.getDb();
sessione.beginTransaction();
Query query = sessione.createQuery( "Select password from Utenti where username= :id" );
System.out.println("Qui lo prende: " + this.getUserId());
query.setParameter("id", userId);
System.out.println("tag debug");
List<Utenti> res= query.list();
if(password.equals(res.get(0))){
this.setUserId(userId);
return "first";
}
else
return "noaccess";
}
我需要在 TreeBean 中使用 userid 。这是我的 TreeBean:
@ManagedBean
@SessionScoped
public class TreeBean {
@ManagedProperty(value="#{login.userId}")
private String user;
private TreeNode root;
private TreeNode selectedNode;
private Session db;
public Session getDb() {
return db;
}
public void setDb(Session db) {
this.db = db;
}
public void setUser(String user) {
this.user = user;
}
public String getUser(){
return user;
}
public TreeBean() {
root=new DefaultTreeNode("Root", null);
System.out.println("Prova"+ user);
recursive(0, root);
}
在 .xhtml 文件中可以毫无问题地读取用户 ID。为什么?
谢谢
您需要创建一个会话范围的 ManagedBean。登录时,您在该 ManagedBean 中设置用户对象(从数据库获取)。然后,您将能够通过所有应用程序访问它。
另一种方法是直接在会话中设置用户对象:
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
Map<String, Object> sessionMap = externalContext.getSessionMap();
进而:
sessionMap.put("attributeName", whateverYouWantToSaveInSession);
但我会选择第一种方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)