Web Java变量重置

我使用Java中的Ajax创建了Hibernate和Struts 2的网站。 基本上,当我创建时,修改任何本地内容(在.java中),比如将值赋给int ,在下次检查时为null 。 每次都会发生这种情况

这是struts.xml我的大部分页面都以这种方式出价:

  /MyAccount.jsp  

客户端只是一个实现了CRUD的bin类:

 public class Client extends ActionSupport { private static final long serialVersionUID = 1L; private Long idClient; private String login; private String password; private String nom; private String prenom; private String adresse; private String ville; private int cPostal; private String email; private Set panier = new HashSet(0); // private static final Logger logger = Logger.getLogger(Client.class.getName()); public static Client logIn(String login, String password) { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); String qstr = "SELECT * FROM client"; Query query = session.createSQLQuery(qstr).addEntity(Client.class); List list = (List)query.list(); Iterator it = list.iterator(); while (it.hasNext()) { Client client = it.next(); if (client.getLogin().compareTo(login) == 0 && client.getPassword().compareTo(password) == 0) return client; } return null; } 

LogInObject

 public class LogInObject extends ActionSupport { private static final long serialVersionUID = 1L; private Long loggedInId; private String login; private String password; private String confirmPassword; private String error; public Client client; public String login() { Client client = null; if ((client = Client.read(Client.logIn(this.login, this.password).getIdClient())) != null) { this.client = client; return SUCCESS; } this.login = ""; this.password = ""; this.error = "Bad login or password"; return ERROR; } public String show() { System.out.println(this.getClient().getIdClient()); return SUCCESS; } 

最后主要课程:

 public class MainActionObject extends ActionSupport { private static final long serialVersionUID = 1L; private boolean logged; private String search; List listProduit; LogInObject loginObject; public String login() { if (this.loginObject.login() == SUCCESS) { this.setLogged(true); return SUCCESS; } return ERROR; } } 

所以loginobjectshow()打印在初始化时从SQL库中读取的客户端的ID我将它打印到.jsp页面所有信息,然后它就不再存在了。 即使我以任何可能的方式备份id。 我知道CRUD的意思,所以不要告诉我它是正常的。

好的,您的操作需要extends ActionSupport implements ServletRequestAware

当您的客户端成功登录时

 public String login() { ... getServletRequest().getSession().setAttribute("idClient", client.getIdClient()); public String show() { System.out.println(getServletRequest().getSession().getAttribute("idClient"));