サーブレットでSQLの中身をArraylistに格納ができません。
解決したいこと
プログラミング初心者です。
サーブレットでSQLの中をArraylistに格納したいのですが格納されません。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException , IOException {
// データベースに接続するための情報
String url = "jdbc:mysql://localhost:3306/booklist";
String user = "user";
String password = "pass";
// 本のタイトルを格納するList
List<String> books = new ArrayList<>();
System.out.println(books);
// データベースに接続する
try {
Class.forName("com.mysql.cj.jdbc.Driver");
try (Connection con = DriverManager.getConnection(url, user, password);
Statement st = con.createStatement();) {
// SQLを実行して、テーブルから本のタイトルを取得する
ResultSet res = st.executeQuery("SELECT title FROM books_list");
System.out.println(res);
// 取得した件数分繰り返す
while(res.next()) {
System.out.println(res.next());
// リストに本のタイトルを追加
books.add(res.getString("title"));
System.out.println(books);
}
} catch(SQLException e) {
e.printStackTrace();
}
} catch(ClassNotFoundException e) {
e.printStackTrace();
}
// リクエストスコープへオブジェクト設定する
request.setAttribute("books", books);
// 次の画面に遷移
request.getRequestDispatcher("/WEB-INF/jsp/books_list.jsp").forward(request, response);
}
Arraylistに格納したtitleを表示するjsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.List" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>本の名前</title>
</head>
<body>
<% List<String> books = (List<String>)request.getAttribute("books"); %>
<p>本のタイトル一覧</p>
<% for(String title: books) { %>
<%= title %><br>
<% } %>
</body>
</html>
エラー表示は出ていません。
ただ、System.out.println(books);で確認すると[]しか表示されないのでデータを受け取れてないかもしれません。
### 自分で試したこと
SQLの接続が悪い子もと思い試してみましたが接続はできているのでArraylistだとは思うのですが....
0 likes