Java Java Todo Webアプリ開発

【Java: Todoアプリ】Todoを削除

※アフィリエイト広告を利用しています。

今回の記事はこちらの記事の続きとなっております。

現在Java(サーブレット・jsp) x PostgreSQLを使ってTodoアプリを作成しています。現時点での機能は次のとおりです。

そして今回はTodoの削除機能を追加していきます。

  • 一覧画面に削除リンクを設置する
  • 削除リンクが押されると削除サーブレットで処理を行いTodoをデータベースから削除する

その他の機能はこちらにまとめています。

GitHubにソースがあるので、参考にしてください!ご質問等あればこちらのTwitterアカウントまでお願いします。

DeleteDAOの作成

まずは実際にデータベースに接続してTodoを削除するDeleteDAOを作成します。DeleteDAOはdeleteTodoメソッドを持ちます。このメソッドで削除するTodoのidを受け取り、データを削除します。

package model.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import model.DBConnection;

public class DeleteDAO {

	/**
	 * Todoを削除する
	 * @return 削除した行数
	 * @throws SQLException
	 * @throws ClassNotFoundException
	 */
	public int deleteTodo(int id) throws SQLException, ClassNotFoundException {
		int processingNumber = 0;

		// SQL文
		String sql = "DELETE FROM todo WHERE id = ?";

		// DBに接続し、Todoを削除する
		try(Connection con = DBConnection.getConnection();
				PreparedStatement pstmt = con.prepareStatement(sql)) {
			// idを設定する
			pstmt.setInt(1, id);

			// SQLを実行する
			processingNumber = pstmt.executeUpdate();
		}
		return processingNumber;
	}
}

DeleteServletの作成

次にリクエストを受け付け、先ほど作成したDeleteDAOを使ってTodoを削除するDeleteServletを作成します。

/**
 * Getリクエストを受け付けてTodoを削除する
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	// リクエストパラメータから削除するTodoのidを取得する
	int id = Integer.parseInt(request.getParameter(Parameters.TODO_ID));

	DeleteDAO dao = new DeleteDAO();
	try {
		// todoを削除する
		dao.deleteTodo(id);
	} catch(SQLException | ClassNotFoundException e) {
		e.printStackTrace();
	}
	response.sendRedirect("list-servlet");
}

加えてDeleteServletが宣言されている上にDeleteServletのパスがあるので、これを「delete-servlet」に変更しておきます。

@WebServlet("/delete-servlet")
public class DeleteServlet extends HttpServlet

list.jspの編集

次にlist.jspに削除サーブレットを呼び出すためのリンクを追加します。これでリンクが押された時に削除サーブレットにリクエストが送られます。

<div>
	<h5><%=todo.getTodo()%></h5>
	<h6><%=todo.getTimeLimit()%></h6>
	<a href="update-servlet?<%=Parameters.TODO_ID %>=<%= todo.getId() %>">todoを更新する</a>
	<a href="delete-servlet?<%=Parameters.TODO_ID %>=<%= todo.getId() %>">todoを削除する</a>
	<br>
</div>

動作確認

サーバーを立ち上げ、動作確認を行います。Todo一覧画面を開くと削除リンクが追加されています。

削除リンクを押すと、対象のTodoが削除されます。例として「update todo」の削除リンクを押してみます。

Todoを削除することができました!

次回予告

こちらの記事から始まったサーブレットを使ったTodo Webアプリの作成ですが、ついにCRUD操作を作り終えました。全記事読んでくれた方ありがとうございます。

今後はログイン機能、他人のTodoを閲覧できる。でも編集、削除はできないといった機能を追加してみようかと、検討しています。いつになるかは僕にもわかりません。

ご質問等あればこちらのTwitterアカウントまでお願いします。

おすすめの参考書

-Java, Java Todo Webアプリ開発
-, , , , ,