UpdateServlet.java

[ファイル] UpdateServlet.java

[挿入場所] 「public class UpdateServlet extends HttpServlet {」と「}」の間と入れ替える

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    // 入力データの文字コードの指定
    request.setCharacterEncoding("UTF-8");

    // GET送信データ(ISBN番号)の取得
    String isbn = request.getParameter("isbn");

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

    // 指定したISBN番号の書籍データを取得する命令を呼び出し、戻り値を取得する
    Book book = objDao.selectByIsbn(isbn);

    // 書籍データをリクエストスコープに格納
    request.setAttribute("keyBook", book);

    // JSPファイルに遷移する
    request.getRequestDispatcher("/view/update.jsp").forward(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    // 入力データの文字コードの指定
    request.setCharacterEncoding("UTF-8");

    // POST送信データの取得
    String isbn = request.getParameter("isbn");
    String title = request.getParameter("title");
    String strPrice = request.getParameter("price");

    // 更新処理に渡すデータをBookオブジェクトに格納してまとめる
    Book book = new Book();
    book.setIsbn(isbn);
    book.setTitle(title);
    book.setPrice(Integer.parseInt(strPrice));

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

    // 書籍データを更新する命令を呼び出す
    objDao.update(book);

    // ListServletに遷移する
    request.getRequestDispatcher("/list").forward(request, response);

}

update.jsp

[ファイル] update.jsp

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

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

[ファイル] update.jsp

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

<form action="/bmsweb/update" method="post">
    <input type="hidden" name="isbn" value="<%=book.getIsbn()%>">
    <table>
        <tr>
            <th width="150"></th>
            <th width="200">変更前情報</th>
            <th width="200">変更後情報</th>
        </tr>
        <tr>
            <th>ISBN</th>
            <td><%=book.getIsbn()%></td>
            <td><%=book.getIsbn()%></td>
        </tr>
        <tr>
            <th>TITLE</th>
            <td><%=book.getTitle()%></td>
            <td><input type="text" name="title" value=""></td>
        </tr>
        <tr>
            <th width="150">価格</th>
            <td><%=book.getPrice()%>円</td>
            <td><input type="text" name="price" value=""></td>
        </tr>
    </table>
    <input type="submit" value="変更完了" class="button">
</form>

BookDAO.java

[ファイル] BookDAO.java

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

/**
 * 書籍情報を格納するbookinfoテーブルに存在する、引数で与えられたISBNを持つ書籍情報を、 引数で与えられた書籍情報に変更をおこなう関数
 *
 * @param book 更新する書籍情報のBookオブジェクト
 *
 * @throws IllegalStateException 関数内部で例外が発生した場合
 */
public void update(Book book) {

    try {
        // DB接続
        connect();

        // 指定されたISBN番号の書籍データを更新するSQL文を用意
        String sql = "UPDATE bookinfo SET"
                   + " title = '" + book.getTitle() + "',"
                   + " price =  " + book.getPrice()
                   + " WHERE isbn = '" + book.getIsbn() + "'";

        // SQL文を発行
        executeUpdate(sql);

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