创建session保存登录后的信息
我写在了dao层,不知道可不可以package hibernate_po;import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import model.Student;import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;public class LoginDao {
private int s=0;
private HttpServletRequest request;
public String check(String email,String password){


Session session=null;
Transaction tx=null;

try{
System.out.println("congig");
Configuration cfg = new Configuration().configure();
SessionFactory factory = cfg.buildSessionFactory();
System.out.println("session");
session = factory.openSession();
tx = session.beginTransaction();
System.out.println("transaction");
Query query = session.createQuery("from Student where email = :s_email " +
                                      "and password = :s_password")
.setString("s_email", email)
.setString("s_password", password); 
Student student=(Student)query.uniqueResult();

if(student!=null)
{
s=1;
    
HttpSession hs= request.getSession();
hs.setAttribute("id",student.getId());
System.out.println((String)hs.getAttribute("id"));

}
else s=2; tx.commit();

}catch(Exception e){

e.printStackTrace();
tx.rollback();

}finally{
HibernateUtils.closeSession(session);

}

if(s==1)
return "success";
else if(s==2)
return "input";
else return "error";

}
}
exception是java.lang.NullPointerException
at hibernate_po.LoginDao.check(LoginDao.java:40)
at hibernate_po.doManage.main(doManage.java:13)
是空的。请问我改写在哪怎么写啊?

解决方案 »

  1.   


    private HttpServletRequest request;……HttpSession hs= request.getSession();呃你还是先整点基础的吧。走还不会,就想跑了。
      

  2.   

    session一般是写在Struts的action里面的!
      

  3.   

    exception是java.lang.NullPointerException
    at hibernate_po.LoginDao.check(LoginDao.java:40)
    at hibernate_po.doManage.main(doManage.java:13)
    已经告诉你行数了  自己好好找找错!
    其实很多错误只要你花点意思去理解 去寻找 其实根本就难不倒你