java - Etat HTTP 500 - NullPointerException

标签 java mysql servlets nullpointerexception

我在尝试显示来自 MySql 数据库的用户表时收到上述错误消息。 如您所见,错误是由第 33 行的 DisplayUsersServlet 生成的,这是以下代码:ArrayList arr = userDb.selectUsers();

java.lang.NullPointerException
        user.DisplayUsersServlet.doGet(DisplayUsersServlet.java:33)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:728)






Here are my classes:

打包业务;

import java.io.Serializable;

public class User implements Serializable
{
    private String firstName;
    private String lastName;
    private String emailAddress;

    public User()
    {
        firstName = "";
        lastName = "";
        emailAddress = "";
    }

    public User(String first, String last, String email)
    {
        firstName = first;
        lastName = last;
        emailAddress = email;
    }

    public void setFirstName(String f)
    {
        firstName = f;
    }
    public String getFirstName()
    { 
        return firstName; 
    }

    public void setLastName(String l)
    {
        lastName = l;
    }

    public String getLastName()
    { 
        return lastName; 
    }

    public void setEmailAddress(String e)
    {
        emailAddress = e;
    }

    public String getEmailAddress()
    { 
        return emailAddress; 
    }
}

Servlet类

package user;

import java.io.*;

import javax.servlet.*;
import javax.servlet.http.*;

import java.util.ArrayList;

import business.User;
import data.UserDB;

public class DisplayUsersServlet extends HttpServlet {


    private static final long serialVersionUID = 1L;

    UserDB userDb;

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // TODO: get an ArrayList of User objects from the database

        ArrayList<User> arr = userDb.selectUsers();

        HttpSession session = request.getSession();
        // TODO: set the ArrayList of User objects as a session attribute
        session.setAttribute("users", arr);

        String url = "/users.jsp";
        RequestDispatcher dispatcher = getServletContext()
                .getRequestDispatcher(url);
        dispatcher.forward(request, response);
    }

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

package data;

import java.sql.*;
import java.util.ArrayList;

import business.User;

public class UserDB

{



    // TODO: add code that returns an ArrayList of User objects
            // that corresponds with the rows in the User table
    public ArrayList<User> selectUsers() {

        ConnectionPool pool = ConnectionPool.getInstance();
        Connection connection = pool.getConnection();
        PreparedStatement ps = null;
        ResultSet rs = null;


        String query = "select * from User";
        ArrayList<User> arrUsr = new ArrayList<>();

        try {
            ps = connection.prepareStatement(query);
            rs = ps.executeQuery();
            User user = null;
            while (rs.next()) {

                user = resultSetRowToUsers(rs);

                if (user.getFirstName()!=null)

                    arrUsr.add(resultSetRowToUsers(rs));
            }




        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return arrUsr;


    }


     public User resultSetRowToUsers(ResultSet resultSet) throws SQLException {

        //User user = new User();
        return new User(resultSet.getString(1), resultSet.getString(2),
                resultSet.getString(3));

    }

}    

打印 StackTrace(Eclipse 控制台)

Jul 11, 2013 2:12:53 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: "Servlet.service()" for servlet DisplayUsersServlet has generated an exception
java.lang.NullPointerException
    at user.DisplayUsersServlet.doGet(DisplayUsersServlet.java:33)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

最佳答案

userDb需要初始化吗?

关于java - Etat HTTP 500 - NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17593568/

相关文章:

java - neo4j finish() 无法识别

java - 如何接受自定义的Socket?

mysql - 无法使用客户端 mysql CL 工具连接到 Google Cloud SQL 实例

javascript - DELETE 请求时参数为 NULL

具有自签名证书的 Java SSL 连接,无需将完整的 keystore 复制到客户端

java - 在哪里放置不同测试类的通用设置代码?

java - 配对游戏中如何将花色应用到牌上?

mysql - MySQL中键、主键、唯一键和索引的区别

mysql - 具有连接和多个分组依据的 SQL 查询

mysql - 检索时字符串之间的投票框(☐)类型符号