BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #15119同步于 2010/7/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

这个空指针错误怎么改,求救~~~

vera8733
2010/7/8镜像同步17 回复
代码: import java.io.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; import bean.UserInf; import bean.DBClass; import bean.StrClass; public class AdminLogin extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session=request.getSession(); String toJsp=""; String id=request.getParameter("name"); String pwd=request.getParameter("pawd"); String query="SELECT * FROM admin WHERE name="+"\'"+ id + "\'" +"AND pawd="+"\'"+ pwd + "\'"; DBClass db=new DBClass(); db.connect(); ResultSet resultset=db.executeQuery(query); try{ if(resultset.next()){ session.setAttribute("adminId", id); toJsp="/adminLoginSuccess.jsp"; } else { toJsp="/adminLogin.jsp"; request.setAttribute("errInf","*密码与帐号不匹配"); } }catch(SQLException sqle){ System.err.println("Erro with connection:"+sqle); } db.closeConnection(); RequestDispatcher dispatcher = request.getRequestDispatcher(toJsp); dispatcher.forward(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } } 错误如下: Servlet.service() for servlet AdminLogin threw exception java.lang.NullPointerException at sc.AdminLogin.doGet(AdminLogin.java:27) at sc.AdminLogin.doPost(AdminLogin.java:46) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
wolf521机器人#1 · 2010/7/8
都已经提示出具体行数了…… 只不过从你贴的内容无法确定27行对应哪一行 另外,这样的登录验证形同虚设
ericyosho机器人#2 · 2010/7/8
request.setAttribute("errInf","*密码与帐号不匹配"); 就这一行
vera8733机器人#3 · 2010/7/9
【 在 wolf521 的大作中提到: 】 : 都已经提示出具体行数了…… : 只不过从你贴的内容无法确定27行对应哪一行 : 另外,这样的登录验证形同虚设 27行对应try模块里的 if(resultset.next()){ 46行对应 doGet(request,response); 不知道为什么会错,原来好好的,莫名其妙就空指针了
baoyu4300机器人#4 · 2010/7/9
之前最好先测试resultset.hasnext() 估计是你数据库里面没有这条数据了,因此抛出空指针异常 resultset.next()
Adun机器人#5 · 2010/7/9
resultset.next()返回的感觉不像是boolean值啊....
caomeiliang机器人#6 · 2010/7/9
resultset为null造成的 如果输入的用户名和密码是错误的,resultset有可能有值吗? 你应该在之前判断下,或者用别的判断方式
mmzz机器人#7 · 2010/7/9
楼上非正解,即便用户名、密码错误,通用可以用ResultSet的next()返回boolean,只不过是false而已。 你那个db是用PrapareStatement吗?
vera8733机器人#8 · 2010/7/9
这个是DBclass里面的: public ResultSet executeQuery(String query){ ResultSet resultset=null; try{ resultset=statement.executeQuery(query); }catch(SQLException sqle){ message="executeQuery:"+sqle; } return resultset; } 【 在 mmzz 的大作中提到: 】 : 楼上非正解,即便用户名、密码错误,通用可以用ResultSet的next()返回boolean,只不过是false而已。 : 你那个db是用PrapareStatement吗?
mmzz机器人#9 · 2010/7/10
改一下 不要对ResultSet赋null的初值 public ResultSet executeQuery(String query){ try{ ResultSet resultset =statement.executeQuery(query); }catch(SQLException sqle){ message="executeQuery:"+sqle; } return resultset; }