struts2和hibernate做的项目,在Action里编写如下代码:
                public String updatePassword() {
String repassword = admin.getAdmin_repassword();
String admin_name = (String) request.getSession().getAttribute("admin_name");
sql = "from Admin where admin_name = '" + admin_name + "'";
objectDao = new ObjectDao<Admin>();
Admin admin = objectDao.queryFrom(sql);
admin.setAdmin_password(repassword);
String result = "管理员修改密码失败!";
if (objectDao.updateT(admin)) {
result = "管理员修改密码成功!请您重新登录";
}
request.setAttribute("result", result);
return SUCCESS;
}
请问为什么与数据库连接时出现了空指针问题,是不是String admin_name = (String) request.getSession().getAttribute("admin_name");获取JSP页面的session对象时出错?请大家帮忙解决一下谢谢了。

解决方案 »

  1.   

    没必要这样request.getSession().getAttribute("admin_name");
    直接request.getParameter("admin_name");
      

  2.   

    String admin_name = (String) request.getSession().getAttribute("admin_name");
    写成request.getParameter("admin_name");页面传过来的值不是在session里
    用session取,必须是你setAttribute的值才能取
      

  3.   

    楼主首先可以通过debug模式进行跟踪,然后查看具体是哪个地方出现了null值,然后再具体进行分析原因。
      

  4.   

    debug你的程序 看执行到哪行的时候出错了。然后再分析到底是什么原因。
      

  5.   

    Structs2好像不能直接取到request对象吧?而且你都用框架了,为什么还用request,session的,直接从jsp页面取不到吗?就像取密码那样,直接get多好
      

  6.   

    小弟不才,我想问一下 sql = "from Admin where admin_name = '" + admin_name + "'";
    这句话能执行吗?他们都说空指针是最容易解决的问题
      

  7.   

    objectDao = new ObjectDao<Admin>();
    这里的dao的原因吧 楼主new 了一个新的Dao 就不是项目里的控制事务的Dao了 所以报null指针错误
      

  8.   

    应该是这句的问题,if (objectDao.updateT(admin)) {...
    你没从session中取到值,是不是你已经注销了,又运行其他功能?
      

  9.   

    不是吧,什么是struts2不能直接取到request对象这句话有错误啊。什么直接用get啊admin.getAdmin_password()?
      

  10.   

    这个Dao是项目里的,用来与Hibernate建立连接的
      

  11.   

    把这句话:
    sql = "from Admin where admin_name = '" + admin_name + "'";改成:
    sql = "from Admin a where a.admin_name = '" + admin_name + "'";