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