Java 将结果集从servlet传递到JSP文件。ArrayList类型的属性始终为空

Java 将结果集从servlet传递到JSP文件。ArrayList类型的属性始终为空,java,mysql,jsp,servlets,arraylist,Java,Mysql,Jsp,Servlets,Arraylist,我对创建动态web项目还不熟悉,我不确定自己是否正确理解了整个项目 我正在尝试创建一个简单的web应用程序,用于从mySQL数据库浏览书籍,它只包含一个表:books(id_book,title,author,isbn,description) 我准备了Driver类,我用它从数据库中检索数据并将其从ResultSet转换为ArrayList,BookSelectservlet,它应该将创建的列表传递到JSP文件,最后是bookselectJSP文件,我希望将结果显示在网站上 驱动程序: pub

我对创建动态web项目还不熟悉,我不确定自己是否正确理解了整个项目

我正在尝试创建一个简单的web应用程序,用于从mySQL数据库浏览书籍,它只包含一个表:books(id_book,title,author,isbn,description)

我准备了Driver类,我用它从数据库中检索数据并将其从ResultSet转换为ArrayList,BookSelectservlet,它应该将创建的列表传递到JSP文件,最后是bookselectJSP文件,我希望将结果显示在网站上

驱动程序:

public class Driver {

private ResultSet resultSet;
public ArrayList<Book> resultList;
private Connection myCon;
private Statement myStatement;

public Driver() {
    try {
        this.resultList = new ArrayList<Book>();
        myCon = DriverManager.getConnection("jdbc:mysql://localhost:3306/firstbase","root","myPassword");
        myStatement = myCon.createStatement();
        resultSet = myStatement.executeQuery("select * from books");
        while(resultSet.next()){
            resultList.add(new Book(Integer.parseInt(resultSet.getString(1)),resultSet.getString(2),resultSet.getString(3),resultSet.getString(4),resultSet.getString(5)));
        }

        resultSet.close();
        myStatement.close();
        myCon.close();

    } catch (SQLException e) {
        e.printStackTrace();
    }
}

public ArrayList<Book> getResultList(){
    resultList.forEach(e -> System.out.println("here->" + e + "<-" ));
    return resultList;
}

public ResultSet getResultSet(){
    return this.resultSet;
}
bookselectJSP:(现在我只想用标签显示哪怕一行)

正如我被告知的那样,这不应该是必要的,但事实证明,你知道什么呢



我建议您为这本书创建一个bean类

Class BookBean{
private int bookId;
private String title;
//and so on for all the properties
//add getters and setters
}
现在在驱动程序类中,将ResultSet转换为ArrayList,如下所示

ResultSet re=daoclass.getdata();//used to get result set from DB
List<BookBean> booklist=new ArrayList<BookBean>
while(re.next()){
int id=re.getInt("book_id");
String name=re.getString("name");
//extract all the parameters as above
BookBean bb=new BookBean();
bb.setId(id);
bb.setName(name);
//assign all the parameters to the bean

booklist.add(bb);//adding bean to the list

}
现在,在JSP中,您可以使用JSTL foreach属性访问每本书的数据,如下所示

<c:forEach var="blist" items="${booklist}">
    <p>${blist.id}</p>
    <p>${blist.name}</p>        
</c:forEach>

${blist.id}

${blist.name}


如果您有任何疑问,请发表评论

我建议您为这本书创建一个bean类

Class BookBean{
private int bookId;
private String title;
//and so on for all the properties
//add getters and setters
}
现在在驱动程序类中,将ResultSet转换为ArrayList,如下所示

ResultSet re=daoclass.getdata();//used to get result set from DB
List<BookBean> booklist=new ArrayList<BookBean>
while(re.next()){
int id=re.getInt("book_id");
String name=re.getString("name");
//extract all the parameters as above
BookBean bb=new BookBean();
bb.setId(id);
bb.setName(name);
//assign all the parameters to the bean

booklist.add(bb);//adding bean to the list

}
现在,在JSP中,您可以使用JSTL foreach属性访问每本书的数据,如下所示

<c:forEach var="blist" items="${booklist}">
    <p>${blist.id}</p>
    <p>${blist.name}</p>        
</c:forEach>

${blist.id}

${blist.name}


如果您有任何疑问,请发表评论

谢谢您的回复,我非常感谢您的努力,尽管问题与驱动程序有关,而不是代码本身:)我已在编辑的帖子中留下了解释。没问题,需要加载驱动程序类来创建与数据库的连接,您无需调用DriverManager.registerDriver(),只需调用class.forName(驱动程序类)即可注册驱动程序。感谢您的回复,我非常感谢您的努力,尽管问题与驱动程序有关,而不是代码本身:)我在编辑的帖子中留下了解释。没问题,必须加载驱动程序类才能创建与数据库的连接,您无需调用DriverManager.registerDriver(),只需调用class.forName(驱动程序类)即可注册驱动程序。
<c:forEach var="blist" items="${booklist}">
    <p>${blist.id}</p>
    <p>${blist.name}</p>        
</c:forEach>