Witam,
Napisałem prostą stronę, która dodaje książki do bazy a następnie je wyświetla w tabeli.
Problem polega w tym, że dane są dobrze pobierane z bazy (tzn. gdy są w arrayliscie wszystko jest OK), natomiast gdy chcę je wyświetlić na stronie to zawsze wyświetla mi tyle wierszy w tabeli ile jest w bazie, ale wszystkie wiersze są takie same jak wiersz ostatni w bazie. Nie wiem czemu tak się dzieje i nie potrafię znaleźć problemu. Dopiero się tego uczę, więc zapewne popełniłem jakiś błahy błąd.
Tutaj mój index.jsp który wyświetla dane:
...
<h1>Spis ksiazek dostepnych w bazie:</h1>
<%
BookDAO bookDAO = new BookDAO();
request.setAttribute("books", bookDAO.loadBooks());
%>
<table border=1>
<c:forEach var="book" items="${books}">
<tr>
<td>${book.name}</td>
<td>${book.year}</td>
<td>${book.describe}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
Tutaj metoda loadBooks() z klasy BookDAO:
public ArrayList<BookData> loadBooks()
{
ArrayList<BookData> arrayBooks = new ArrayList<BookData>();
BookData book = new BookData();
try{
Class.forName(DBDRIVER).newInstance();
conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
state = conn.createStatement();
rs = state.executeQuery("SELECT * from books");
while(rs.next())
{
book.setName(rs.getString(2));
book.setYear(Integer.parseInt(rs.getString(3)));
book.setDescribe(rs.getString(4));
arrayBooks.add(book);
}
state.close();
conn.close();
}catch (SQLException | InstantiationException | IllegalAccessException | ClassNotFoundException e)
{
e.printStackTrace();
}
return arrayBooks;
}
Mój web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>BooksProject</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>