返回信息流代码:
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)
这是一条镜像帖。来源:北邮人论坛 / java / #15119同步于 2010/7/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
这个空指针错误怎么改,求救~~~
vera8733
2010/7/8镜像同步17 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 wolf521 的大作中提到: 】
: 都已经提示出具体行数了……
: 只不过从你贴的内容无法确定27行对应哪一行
: 另外,这样的登录验证形同虚设
27行对应try模块里的 if(resultset.next()){
46行对应 doGet(request,response);
不知道为什么会错,原来好好的,莫名其妙就空指针了
楼上非正解,即便用户名、密码错误,通用可以用ResultSet的next()返回boolean,只不过是false而已。
你那个db是用PrapareStatement吗?
这个是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吗?
改一下 不要对ResultSet赋null的初值
public ResultSet executeQuery(String query){
try{
ResultSet resultset =statement.executeQuery(query);
}catch(SQLException sqle){
message="executeQuery:"+sqle;
}
return resultset;
}