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();
}
}