質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

1回答

5205閲覧

データベースからデータの一覧表示をさせたい

iiko24

総合スコア0

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2020/05/25 12:17

編集2020/05/25 23:39
コード ```### 前提・実現したいこと データベースからデータを取得し、一覧で表示させたい ### 発生している問題・エラーメッセージ

Caused by: javax.el.PropertyNotFoundException: Property 'PublicationDate' not found on type jp.co.sss.book.bean.BookUser
上記エラーコードと共にログイン画面から一覧表示まで遷移しない

### 該当のソースコード ```DAO package jp.co.sss.book.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import jp.co.sss.book.bean.BookUser; /** * ユーザ情報テーブル用DAO * * @author system_shared */ public class BookUserDAO { /** * ユーザIDとパスワードが一致するユーザ情報を検索 * * @param userId * ユーザID * @param password * パスワード * @return ユーザ情報 * @throws SQLException * データベース操作失敗時に送出 */ public static BookUser findByUserIDAndPassword(String userId, String password) throws SQLException { BookUser bookUser = null; // データベースへ接続 Connection connection = DBManager.getConnection(); // SQLの準備 PreparedStatement preparedStatement = connection .prepareStatement("SELECT * FROM book_user WHERE book_user_id = ? AND password = ?"); preparedStatement.setString(1, userId); preparedStatement.setString(2, password); // SQLの実行 ResultSet rs = preparedStatement.executeQuery(); // 検索結果をJavaBeansに保存 if (rs.next()) { bookUser = new BookUser(); bookUser.setBookUserId(rs.getInt("book_user_id")); bookUser.setBookUserName(rs.getString("book_user_name")); bookUser.setPassword(rs.getString("password")); } // データベースとの接続を切断 DBManager.close(preparedStatement, connection); return bookUser; } public static List<BookUser> findAll() { Connection connection = null; PreparedStatement preparedStatement = null; List<BookUser> bookList = new ArrayList<BookUser>(); try { connection = DBManager.getConnection(); preparedStatement = connection.prepareStatement("SELECT * FROM book b INNER JOIN genre g ON b.genre_id = g.genre_id"); // SQLの実行 ResultSet rs = preparedStatement.executeQuery(); while (rs.next()) { // 書籍テーブルからデータの取得 BookUser bookUser = new BookUser(); bookUser.setBookId(rs.getInt("book_id")); bookUser.setBookName(rs.getString("book_name")); bookUser.setAuthor(rs.getString("author")); bookUser.setPublicationDate(rs.getDate("publication_date")); bookUser.setStock(rs.getInt("stock")); // ジャンルテーブルからデータを取得 BookUser book = new BookUser(); book.setGenreId(rs.getInt("genre_id")); book.setGenreName(rs.getString("genre_name")); bookList.add(bookUser); } }catch (SQLException e) { e.printStackTrace(); }finally { DBManager.close(preparedStatement,connection); } return bookList; } public static BookUser findById(String genreId) { Connection connection = null; PreparedStatement preparedStatement = null; BookUser genre = null; try { connection = DBManager.getConnection(); preparedStatement = connection.prepareStatement("SELECT * FROM genre WHERE genre_id = ?"); preparedStatement.setString(1, genreId); // SQLの実行 ResultSet rs = preparedStatement.executeQuery(); while (rs.next()) { genre = new BookUser(); genre.setGenreId(rs.getInt("genre_id")); genre.setGenreName(rs.getString("genrename")); } }catch (SQLException e) { e.printStackTrace(); }finally { DBManager.close(preparedStatement,connection); } return genre; } }

jsp

1<%@ page contentType="text/html; charset=UTF-8"%> 2<!DOCTYPE html> 3<html> 4<head> 5<meta charset="UTF-8"> 6<link href="css/style.css" rel="stylesheet" type="text/css" /> 7<title>ログイン画面</title> 8</head> 9<body> 10 <header> 11 <h3>書籍一覧システム</h3> 12 </header> 13 <div id="main"> 14 <p>ユーザーIDとパスワードを入力してください。</p> 15 <p class="error">${errMessage}</p> 16 <form action="<%=request.getContextPath()%>/login" method="post"> 17 ユーザーID:<input type="text" name="bookUserId"><br> 18 パスワード:<input type="password" name="password"><br> 19 <input type="submit" value="ログイン"> 20 </form> 21 </div> 22 <%@ include file="footer.jsp"%> 23</body> 24</html> 25

jsp

1<%@ page contentType="text/html; charset=UTF-8"%> 2<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<link href="css/style.css" rel="stylesheet" type="text/css" /> 8<title>ログイン画面</title> 9</head> 10<body> 11 <%@ include file="../header.jsp"%> 12 <div id="main"> 13 書籍一覧画面 14 15 <form action="" method="post"> 16 <div style="display: inline-flex"> 17 書籍名:<input type="text" name="bookName" /> <input type="submit" 18 value="検索" /> ジャンル名:<select> 19 <option value="文学">文学</option> 20 <option value="経済">経済</option> 21 </select> <input type="submit" value="検索" /> 22 </div> 23 </form> 24 25 <table> 26 <tr> 27 <th>書籍ID</th> 28 <th>書籍名</th> 29 <th>著者</th> 30 <th>発行日</th> 31 <th>在庫</th> 32 <th>ジャンル名</th> 33 </tr> 34 <c:forEach var="bookUser" items="${bookList}"> 35 <tr> 36 <td>${bookUser.bookId}</td> 37 <td>${bookUser.bookName}</td> 38 <td>${bookUser.author}</td> 39 <td>${bookUser.PublicationDate}</td> 40 <td>${bookUser.stock}</td> 41 <td>${bookUser.genre.genreId}</td> 42 43 </tr> 44 </c:forEach> 45 </table> 46 47 48 49 </div> 50 51 <%@ include file="../footer.jsp"%> 52</body> 53</html>

servlet

1package jp.co.sss.book.servlet; 2 3import java.util.List; 4 5import javax.servlet.annotation.WebServlet; 6import javax.servlet.http.HttpServlet; 7import javax.servlet.http.HttpServletRequest; 8import javax.servlet.http.HttpServletResponse; 9 10import jp.co.sss.book.bean.BookUser; 11import jp.co.sss.book.dao.BookUserDAO; 12 13/** 14 * ログイン用サーブレット 15 * 16 * @author system_shared 17 */ 18@WebServlet(urlPatterns = { "/login" }) 19public class Login extends HttpServlet { 20 public void doPost(HttpServletRequest request, HttpServletResponse response) { 21 // ログイン処理 22 try { 23 String bookUserId = request.getParameter("bookUserId"); 24 String password = request.getParameter("password"); 25 26 BookUser bookUser = BookUserDAO.findByUserIDAndPassword(bookUserId, password); 27 28 if (bookUser != null) { 29 List<BookUser> bookList = BookUserDAO.findAll(); 30 request.setAttribute("bookList", bookList); 31 // TODO 下記コードを、書籍一覧表示用のサーブレットにフォワードするように編集してください。 32 request.getRequestDispatcher("/select/list.jsp").forward(request, response); 33 } else { 34 request.setAttribute("errMessage", "ユーザID、またはパスワードが間違っています。"); 35 request.getRequestDispatcher("/index.jsp").forward(request, response); 36 } 37 38 } catch (Exception e) { 39 e.printStackTrace(); 40 } 41 42 } 43} 44 45

試したこと

DAO内のSELECT文はOracleで実行すると表示された。
一覧表示用のjspは、テーブル部分を削除すると表示された。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/05/25 20:42

細かいのですけど、下記は「前提・実現したいこと」でしょうか? 「初心者アイコン」があるのでわざわざつける必要はないと思います。 > 初心者なのでわかりにくい質問かと思いますが、ご回答いただければと思います。 よろしくお願いします。
guest

回答1

0

BookUserクラス(bean)にPublicationDateというプロパティが無いというエラーです。
jp.co.sss.book.bean.BookUser を確認してみてください。

投稿2020/05/25 13:11

shun-K

総合スコア508

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

iiko24

2020/05/25 14:09

確認したところ記載しておりました private Date publicationDate; public Date getPublicationDate() { return publicationDate; } public void setPublicationDate(Date publicationDate) { this.publicationDate = publicationDate; } エラーメッセージからbeanに原因があることはわかりましたが何故かよくわからない状況です。
rubytomato

2020/05/25 14:16

ここのPを小文字に変えるとどうなりますか? <td>${bookUser.PublicationDate}</td>
iiko24

2020/05/25 23:42

pに変えたところpublicationDateのエラーはなくなりました。 しかし今度は下記のエラーが出てしまいました Caused by: javax.el.PropertyNotFoundException: Property 'genre' not found on type jp.co.sss.book.bean.BookUser
iiko24

2020/05/25 23:51

一覧表示させることが出来ました。 しかし、書籍IDが0のものが表示される・ジャンル名が表示されないといった問題が発生してしまいました
rubytomato

2020/05/26 00:52

findAllメソッドのwhile文の中の処理を見直して下さい。 // ジャンルテーブルからデータを取得 BookUser book = new BookUser(); book.setGenreId(rs.getInt("genre_id")); book.setGenreName(rs.getString("genre_name")); book変数が使われていないようです。
iiko24

2020/05/26 04:05

無事表示させることが出来ました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問