【发布时间】:2017-09-30 12:47:59
【问题描述】:
我是创建动态 Web 项目的新手,我不确定我是否正确掌握了整个事情的想法。
我正在尝试创建一个简单的网络应用程序,用于从 mySQL 数据库中浏览书籍,它只包含一个表:Books(id_book, title, author, isbn, description)。
我已经准备好了 Driver 类,用于从数据库中检索数据并将其从 ResultSet 转换为 ArrayList<.book>、BookSelect servlet,这是应该的将创建的列表传递给 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;
}
图书选择
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
RequestDispatcher rd = getServletContext().getRequestDispatcher("/bookselectJSP.jsp");
Driver myDriver = new Driver();
//myDriver.getResultList().add(new Book(1, "aa", "aa", "aa", "aa"));
request.setAttribute("resultList", myDriver.getResultList());
rd.forward(request, response);
}
bookselectJSP:(现在我只是想用标签显示一行)
<h1 id="titleBar">List of your books</h1>
<%
ArrayList<Book> rows = (ArrayList<Book>) request.getAttribute("resultList");
%>
<label><%=rows.get(0).toString()%></label>
整个问题是,当我在 Driver 类中添加 main 方法并运行它时,一切似乎都运行良好。我得到数据,将其转换为 ArrayList,然后我可以从该列表中打印结果。 但是一旦我尝试从 servlet 类访问它,它总是为空。
错误信息: This is an error message
奇怪的是,当我在 servlet 的列表中添加一些东西(servlet 服务方法中的注释代码)时,它正在被传递。 从现在开始我完全不知道如何进行,我完全迷路了,请帮助。
************************************解决********** ******************************
问题是tomcat找不到合适的驱动程序,我觉得它很奇怪,因为我不仅把它放在WEB-INF/lib中,而且放在$CATALINA_HOME/lib中,所有配置都正确。 无论如何,在开始连接之前添加以下行有帮助:
DriverManager.registerDriver(new com.mysql.jdbc.Driver ());
据我所知,这不应该是必要的,但你知道吗,事实证明 - 它是:)
【问题讨论】:
标签: java mysql jsp servlets arraylist