数据库连接时总是空指针异常?测试表单信息无误,就是查询数据库时出错

java.lang.NullPointerException
at com.Users.LoginServlet.doPost(LoginServlet.java:58)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:154)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:106)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:173)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:274)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:514)
at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:527)
at com.caucho.util.ThreadPool.run(ThreadPool.java:449)
at java.lang.Thread.run(Unknown Source)

源代码:
package com.Users;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.Service.LoginService;

/**

  • 登录控制层 : LoginServlet
  • 将用户个人信息保存到 Session范围内
  • 根据status对页面进行分别显示
  • @author daichen
    *
    /
    public class LoginServlet extends HttpServlet
    {
    private static final long serialVersionUID = 1L;
    /

    • 注入 LoginService 服务 */ private LoginService loginService;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException
    {
    doGet(req,res);
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
    request.setCharacterEncoding("GBK");
    response.setCharacterEncoding("GBK");
    User user = null;
    // 获取表单提交的登录信息
    String userId = null;
    String password = null;
    userId = request.getParameter("userId");
    password = request.getParameter("password");
    // 先判断用户信息是否否为空
    if(userId == null || "".equals(userId) || password == null || "".equals(password))
    {
    // 用户信息有误 , 回到 login.jsp 页面
    response.getWriter().println("

    对不起,你输入的信息有误 .请重新确认!

    ");
    return;
    }
    else
    {
    // 到数据表 user 中查找该用户 , 返回一个 User 对象
    System.out.println(userId+" "+password);
        user = loginService.userLogin(userId,password);
    
        // 并对查询到的结果进行处理
    
        if(user != null)
        {
            // 获取请求域的session对象
            HttpSession session = request.getSession();
            // 对三种权限分开添加到  Session 域中 
            if(user.getStatus() == 0){
                session.setAttribute("geneUser", user);
            }
            if(user.getStatus() == 1){
                session.setAttribute("admin", user);
            }
            if(user.getStatus() == 2){
                session.setAttribute("superAdmin", user);
            }
            // 成功获取到用户信息 , 转到   index.jsp
            RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/jsp/index.jsp");
            rd.forward(request, response);
            return;
        } 
        else
        {
            // 查询没有该用户 , 转到  login.jsp
            response.getWriter().print("<h3><font color='#f00'>对不起,你还未注册用户 </h3></font>"
                    + userId + "<h3><font color='#f00'>请先前去注册!</h3></font>");
            RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/jsp/register.jsp");
            rd.forward(request, response);
            return;
        }
    }
    

    }
    }

4个回答

打断点 oginServlet.doPost(LoginServlet.java:58) 你看下这个class的58行

niaonao
niaonao 回复qq_31414433: user = loginService.userLogin(userId,password);这一句?,loginService这个对象在前面并没有创建,所以为空啊,得实例化该对象创建一个该对象
3 年多之前 回复
qq_31414433
2进制 这个class的58行就是一个调用service的语句,调试说:loginService 为null ,
3 年多之前 回复
qq_31414433
2进制 嗯,谢谢啦
3 年多之前 回复

at com.Users.LoginServlet.doPost(LoginServlet.java:58)
该文件类中第58行报的错误
空指针异常一般不是大问题,你看看这一行有几个对象,判断下那个对象是空对象,
看看该对象为什么为空是否被实例化,
如果是接收其他地方传来的数据,检测一下上一步是否传过来,是否接收到这个对象。
一步一步检测找到哪里是导致对象变空对象的原因。

qq_31414433
2进制 恩恩,谢谢啦,我们也是这学期才开始学习的,好多都不懂
3 年多之前 回复

看有没有进行null的判断

qq_31414433
2进制 对 null的判断???,出错的语句是调用 loginService的地方,就这一条
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问