type Exception report
message
description **The server encountered an internal error that prevented it from fulfilling this request.**
exception
java.lang.NullPointerException
cn.edu.lingnan.dao.UserDataDAO.login(UserDataDAO.java:76)
cn.edu.lingnan.test.UserDataTest.loginTest(UserDataTest.java:55)
cn.edu.lingnan.servlet.LoginServlet.doGet(LoginServlet.java:28)
javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
相对应的代码段:
【1】LoginServlet
【1】从页面获取数据
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("网页获取:"+username+password);
//
// 【2】调用后台数据
UserDataTest udt =new UserDataTest();
boolean flag = udt.loginTest(username, password);
【2】
public boolean login(UserDataDTO user){
int a = 0;
boolean flag = true;
String sql ="select * from userdata where name =? and password=? and sigal<>0";
Object[] attribute={user.getName(),user.getPassword()};
rs = exectueQuery(sql,attribute);
try {
while(rs.next()){
a++;
}
if(a>0){
System.out.println("登陆成功");
flag = true;
}
【3】
public boolean loginTest(String name,String password){
boolean flag = true;
udto.setName(name);
udto.setPassword(password);
// udto.setPermissions("员工");
flag = udao.login(udto);
return flag;
}
UserDataDTO udto = new UserDataDTO();
udto.setName(name);
udto.setPassword(password);
这一步实现对象的初始化
Object[] attribute={user.getName(),user.getPassword()}
虽然没用过这种预执行的sql设值方式,但是你的空指针异常应该就是出现在这个地方,看异常提示最终到了 cn.edu.lingnan.dao.UserD ataDAO.login(UserDataDAO.java:76)
看看UserDateDAO的第76行代码应该就是Object[] attribute={user.getName(),user.getPassword()}这一行
应该是user对象为空了,所以获取的name和user的时候就产生空指针异常了
public boolean loginTest(String name,String password){
boolean flag = true;
udto.setName(name);
udto.setPassword(password);
// udto.setPermissions("员工");
flag = udao.login(udto);
return flag;
}
这段代码,udto怎么没看到你初始化?
空指向异常,看看是不是获取的数据值不符合,还是没有获取到相应的数据值(空值)
NullPointerException空指针异常是很容易解决的异常啊,第一:你的后台username,password取到值了吗 第二:你调用loginTest的时候实体udto在哪初始化的,set值的时候把值放进去了吗
LoginTest里面,你的udto没有看到初始化,但是你往里面set值了
空值了 可以对比前后台命名是否一致,或者没有初始化
问题解决了。是我把驱动包放错地方了,犯了低级错误。非常感谢各位的帮忙哈