Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在servlet类和jsp.file之间传递属性时如何解决空指针异常_Java_Mysql_Jsp_Servlets_Attributes - Fatal编程技术网

Java 在servlet类和jsp.file之间传递属性时如何解决空指针异常

Java 在servlet类和jsp.file之间传递属性时如何解决空指针异常,java,mysql,jsp,servlets,attributes,Java,Mysql,Jsp,Servlets,Attributes,运行userList.jsp时,我不断收到NullPointerException错误: 我试图输出用户对象数组列表的大小: <%-- Document : userList Created on : 13-Mar-2019, 22:08:54 Author : sonia --%> <%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%&

运行
userList.jsp
时,我不断收到
NullPointerException
错误:

我试图输出用户对象数组列表的大小:

<%-- 
    Document   : userList
    Created on : 13-Mar-2019, 22:08:54
    Author     : sonia
--%>

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="com.mycompany.gartisweb.domain.User"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<% ArrayList users = (ArrayList)request.getAttribute("users"); %>
<!DOCTYPE html>
<html>
    <head>

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>List of Users</title>
    </head>
    <body>

                <% users.size(); %>

    </body>
</html>
UserDao类中的findAllUsers()函数:

 @Override
public ArrayList<User> findAllUsers() {
    ArrayList<User> userList = new ArrayList<>();
    Connection con;
    con = DBConnection.createConnection();
    Statement statement = null;
    ResultSet rs;
    try {
        con.setAutoCommit(false);
        statement = con.createStatement();
        rs = statement.executeQuery("SELECT * FROM user");
        while (rs.next()) {
           User user = new User();

            user.setId(rs.getInt(1));
            user.setEmail(rs.getString(2));
            user.setPassword(rs.getString(3));
            user.setFirstName(rs.getString(4));
            user.setSurName(rs.getString(5));
            user.setRole(rs.getString(6));
            userList.add(user);
        }
    } catch (SQLException e) {
        throw new RuntimeException(e);
    } finally {

        if (con != null) {
            try {
                con.close();
            } catch (SQLException ex) {
                throw new RuntimeException(ex);

            }
        }
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException ex) {
                throw new RuntimeException(ex);

            }
        }
    }

    return userList;
}
@覆盖
公共数组列表findAllUsers(){
ArrayList userList=新的ArrayList();
连接con;
con=DBConnection.createConnection();
Statement=null;
结果集rs;
试一试{
con.setAutoCommit(假);
statement=con.createStatement();
rs=语句.executeQuery(“从用户选择*);
while(rs.next()){
用户=新用户();
user.setId(rs.getInt(1));
user.setEmail(rs.getString(2));
user.setPassword(rs.getString(3));
user.setFirstName(rs.getString(4));
user.setSurName(rs.getString(5));
user.setRole(rs.getString(6));
添加(用户);
}
}捕获(SQLE异常){
抛出新的运行时异常(e);
}最后{
如果(con!=null){
试一试{
con.close();
}catch(SQLException-ex){
抛出新的运行时异常(ex);
}
}
if(语句!=null){
试一试{
语句。close();
}catch(SQLException-ex){
抛出新的运行时异常(ex);
}
}
}
返回用户列表;
}

我在代码中找不到错误,有人能解释一下我如何解决这个问题吗?

这是因为您直接使用
http://.../userList.jsp
URL。使用映射到
UserListServlet
的URL,以便servlet可以设置变量并执行转发


您可能还想执行
来显示用户计数。

如果
服务
方法在一次尝试中,它是带有异常的catch,并且在内部catch,则保留整个代码。您可以打印堆栈跟踪,它将显示异常发生的行号。确定我已执行此操作,但是现在arraylist的大小仍然没有显示出来(参见上面的屏幕截图)…@SoniaMathews而不是

 @Override
public ArrayList<User> findAllUsers() {
    ArrayList<User> userList = new ArrayList<>();
    Connection con;
    con = DBConnection.createConnection();
    Statement statement = null;
    ResultSet rs;
    try {
        con.setAutoCommit(false);
        statement = con.createStatement();
        rs = statement.executeQuery("SELECT * FROM user");
        while (rs.next()) {
           User user = new User();

            user.setId(rs.getInt(1));
            user.setEmail(rs.getString(2));
            user.setPassword(rs.getString(3));
            user.setFirstName(rs.getString(4));
            user.setSurName(rs.getString(5));
            user.setRole(rs.getString(6));
            userList.add(user);
        }
    } catch (SQLException e) {
        throw new RuntimeException(e);
    } finally {

        if (con != null) {
            try {
                con.close();
            } catch (SQLException ex) {
                throw new RuntimeException(ex);

            }
        }
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException ex) {
                throw new RuntimeException(ex);

            }
        }
    }

    return userList;
}