ListServlet.java

[ファイル] ListServlet.java

[挿入場所] JSPファイルへの遷移処理前

/// データベースアクセス用オブジェクトの生成
BookDAO objDao = new BookDAO();

// 書籍データを全件取得する命令を呼び出し、戻り値を取得する
ArrayList<Book> bookList = objDao.selectAll();

// 書籍リストをリクエストスコープに格納
request.setAttribute("keyBookList", bookList);

list.jsp

[ファイル] list.jsp

[挿入場所] <!DOCTYPE html>の前

<%
    // リクエストスコープから書籍リストを取得
    ArrayList<Book> bookList = (ArrayList<Book>)request.getAttribute("keyBookList");
%>

[ファイル] list.jsp

[挿入場所] 書籍情報の<tr>タグと入れ替える

<%
// 書籍リストから1行ずつデータを取得し表示
for (Book book: bookList) {
%>
<tr>
    <td>
        <a href="/bmsweb/detail?isbn=<%=book.getIsbn()%>"><%=book.getIsbn()%></a>
    </td>
    <td><%=book.getTitle()%></td>
    <td><%=book.getPrice()%>円</td>
    <td>
        <a href="/bmsweb/update?isbn=<%=book.getIsbn()%>">更新</a> 
        <a href="/bmsweb/delete?isbn=<%=book.getIsbn()%>">削除</a>
    </td>
</tr>
<%
}
%>

Book.java

[ファイル] Book.java

[挿入場所] 「public class Book {」と「}」の間

// 書籍のISBN
private String isbn;

// 書籍のタイトル
private String title;

// 書籍の価格
private int price;

/**
 * 書籍情報(ISBN・タイトル・価格)の初期設定をおこなう(コンストラクタ)
 */
public Book() {
    this.isbn = null;
    this.title = null;
    this.price = 0;
}

/**
 * 書籍のISBNを取得する
 *
 * @return 書籍のISBN
 */
public String getIsbn() {
    return isbn;
}

/**
 * 書籍のISBNを設定する
 *
 * @param isbn 設定する書籍のISBN
 */
public void setIsbn(String isbn) {
    this.isbn = isbn;
}

/**
 * 書籍のタイトルを取得する
 *
 * @return 書籍のタイトル
 */
public String getTitle() {
    return title;
}

/**
 * 書籍のタイトルを設定する
 *
 * @param title 設定する書籍のタイトル
 */
public void setTitle(String title) {
    this.title = title;
}

/**
 * 書籍の価格を取得する
 *
 * @return 書籍の価格
 */
public int getPrice() {
    return price;
}

/**
 * 書籍の価格を設定する
 *
 * @param price 設定する書籍の価格
 */
public void setPrice(int price) {
    this.price = price;
}

BookDAO.java

[ファイル] BookDAO.java

[挿入場所] executeUpdate関数の後ろ

/**
 * DBの書籍情報を格納するbookinfoテーブルから全書籍情報を取得する関数
 *
 * @return 全書籍情報のリスト
 *
 * @throws IllegalStateException 関数内部で例外が発生した場合
 */
public ArrayList<Book> selectAll() {

    try {
        // DB接続
        connect();

        // 書籍データを全件取得するSQL文を用意
        String sql = "SELECT isbn, title, price FROM bookinfo";

        // SQL文を発行し、結果セットを取得
        ResultSet rs = executeQuery(sql);

        // 書籍データ格納用のリストオブジェクトを生成
        ArrayList<Book> bookList = new ArrayList<Book>();

        // 結果セットから1行ずつ書籍データを取得
        while (rs.next()) {
            Book book = new Book();
            book.setIsbn(rs.getString("isbn"));
            book.setTitle(rs.getString("title"));
            book.setPrice(rs.getInt("price"));
            bookList.add(book);
        }

        // 呼び出し元へ書籍データを返す
        return bookList;

    } catch (Exception e) {
        throw new IllegalStateException(e);
    } finally {
        // DB接続解除
        disconnect();
    }

}