一个空指针问题

十歌 2018-09-11 08:17:09
错误:
java.lang.NullPointerException
at CompanyProject.Servlet.LoginServlet.doPost(LoginServlet.java:39)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)


LoginServlet源码
if((rsEmployee = rsEmployeeServiceImp.SelectByAdmin(admin)) !=null)
{
if(rsEmployeeServiceImp.SelectByAdmin(admin) .getPaw().equals(password))
{
// request.getSession().setAttribute("admin", admin);
// request.getSession().setAttribute("id", String.valueOf(rsEmployee.getId()));
response.sendRedirect("index.jsp");
}else{
pw.print("<script language='javascript'>alert('密码错误重新输入');window.location.href='login.jsp';</script>");
response.sendRedirect("login.jsp");
}
}else{
pw.print("<script language='javascript'>alert('账户不存在');window.location.href='login.jsp';</script>");
}
...全文
524 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
verejava 2018-09-14
  • 打赏
  • 举报
回复
用户管理 之 jquery ajax 登录 保存用户到 session

http://www.verejava.com/?id=17829736458816
隐语者 2018-09-13
  • 打赏
  • 举报
回复
引用 11 楼 qq_40794696 的回复:
[quote=引用 8 楼 q631890839 的回复:] [quote=引用 5 楼 qq_40794696 的回复:] rsEmployeeServiceImp.SelectByAdmin(admin) .getPaw().equals(password) 换成 password.equals(rsEmployeeServiceImp.SelectByAdmin(admin) .getPaw()) 这样可以避免空指针直接报异常,
万分感谢 这样调试之后发现正确了 但我有个疑问 我是用if判断了的啊 如果返回的对象为NULL的话 应该不会执行 密码是否正确的比较啊 应该会直接执行else中的语句啊 为什么程序会走到这个if中 抛出空指针问题呢?[/quote] 它能够执行到 if((rsEmployee = rsEmployeeServiceImp.SelectByAdmin(admin)) !=null)里面去,那可以确定rsEmployeeServiceImp.SelectByAdmin(admin)这个方法返回值肯定不是null对象,你用rsEmployee去获取返回的对象也成功了,没有报类型转换异常,那只有可能是你的getPaw()返回的密码在数据库里面是一个null值!null是没有equals()方法的![/quote] 或者你SelectByAdmin()方法里面根本没有执行setPaw()这个操作对paw这个变量进行赋值,导致返回的对象getPaw()是一个null
隐语者 2018-09-13
  • 打赏
  • 举报
回复
引用 8 楼 q631890839 的回复:
[quote=引用 5 楼 qq_40794696 的回复:] rsEmployeeServiceImp.SelectByAdmin(admin) .getPaw().equals(password) 换成 password.equals(rsEmployeeServiceImp.SelectByAdmin(admin) .getPaw()) 这样可以避免空指针直接报异常,
万分感谢 这样调试之后发现正确了 但我有个疑问 我是用if判断了的啊 如果返回的对象为NULL的话 应该不会执行 密码是否正确的比较啊 应该会直接执行else中的语句啊 为什么程序会走到这个if中 抛出空指针问题呢?[/quote] 它能够执行到 if((rsEmployee = rsEmployeeServiceImp.SelectByAdmin(admin)) !=null)里面去,那可以确定rsEmployeeServiceImp.SelectByAdmin(admin)这个方法返回值肯定不是null对象,你用rsEmployee去获取返回的对象也成功了,没有报类型转换异常,那只有可能是你的getPaw()返回的密码在数据库里面是一个null值!null是没有equals()方法的!
gaojun15173 2018-09-13
  • 打赏
  • 举报
回复
如果你的rsEmployee不是null 我猜是你的rsEmployee.getPaw()为null 调用别的方法你就不判断一下对象本身是不是null吗
预见-遇见 2018-09-12
  • 打赏
  • 举报
回复
吧rsEmployee = rsEmployeeServiceImp.SelectByAdmin(admin)) !=null 换位null != rsEmployee = rsEmployeeServiceImp.SelectByAdmin(admin)) 试试
田小瘦 2018-09-12
  • 打赏
  • 举报
回复
断点看看是哪个对象是空的,猜是rsEmployeeServiceImp对象是空的,你断点看看 这个service你注入了吗
潘少博 2018-09-12
  • 打赏
  • 举报
回复
很简单,打个断点,看看rsEmployeeServiceImp是不是空,如果不是,再看看rsEmployeeServiceImp.SelectByAdmin(admin)这句话获得结果是不是空,以此类推
十歌 2018-09-12
  • 打赏
  • 举报
回复
引用 7 楼 yugehasaki666 的回复:


看着就难受,两次调用同一个方法,查询两次数据库。就不能把他提出去,返回一个变量叫rsEmployee 吗?
如果改成rsEmployee .getPaw(),还是空指针,再看别的问题,我说的不一定能解决,但是你这代码写的真让人难受


。。我开始是用rsEmployee 装的 后来调试空指针问题的时候尝试这样写会不会避免空指针
十歌 2018-09-12
  • 打赏
  • 举报
回复
引用 5 楼 qq_40794696 的回复:
rsEmployeeServiceImp.SelectByAdmin(admin) .getPaw().equals(password)
换成
password.equals(rsEmployeeServiceImp.SelectByAdmin(admin) .getPaw())
这样可以避免空指针直接报异常,


万分感谢 这样调试之后发现正确了 但我有个疑问 我是用if判断了的啊 如果返回的对象为NULL的话 应该不会执行 密码是否正确的比较啊 应该会直接执行else中的语句啊 为什么程序会走到这个if中 抛出空指针问题呢?
宇哥hasaki丶 2018-09-12
  • 打赏
  • 举报
回复


看着就难受,两次调用同一个方法,查询两次数据库。就不能把他提出去,返回一个变量叫rsEmployee 吗?
如果改成rsEmployee .getPaw(),还是空指针,再看别的问题,我说的不一定能解决,但是你这代码写的真让人难受


mtian2020 2018-09-12
  • 打赏
  • 举报
回复
明显是rsEmployeeServiceImp.SelectByAdmin(admin) .getPaw()这个空了,就是你查询的这个用户密码为空
隐语者 2018-09-12
  • 打赏
  • 举报
回复
rsEmployeeServiceImp.SelectByAdmin(admin) .getPaw().equals(password) 换成 password.equals(rsEmployeeServiceImp.SelectByAdmin(admin) .getPaw()) 这样可以避免空指针直接报异常,
十歌 2018-09-11
  • 打赏
  • 举报
回复
if(rsEmployeeServiceImp.SelectByAdmin(admin) .getPaw().equals(password)) 这是第39行错误的地方

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧