ファイル構成と今回のゴール
⚫︎ファイル構成
⚫︎ゴール(削除ボタンを押し該当のNoを削除する)
実装
package controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import model.Task;
@WebServlet("/delete")
public class DeletServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
int i = Integer.parseInt(request.getParameter("idx"));
HttpSession session = request.getSession();
List<Task> todoList = (List<Task>) session.getAttribute("todoList");
// タスクリストが存在し、指定されたインデックスが有効であれば削除
if (todoList != null && i >= 0 && i < todoList.size()) {
todoList.remove(i);
}
// 更新されたリストをセッションに再度保存
session.setAttribute("todoList", todoList);
// 削除後のページにリダイレクトまたはフォワード
response.sendRedirect("select.jsp");
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="javax.servlet.http.HttpSession" %>
<%@ page import="model.Task" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>TODOリスト</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
</head>
<body>
<div style="padding: 10px">
<h2>TODOリスト</h2>
<br>
<br>
<br>
<button type="button" class="btn btn-success" onclick="location.href='./create.jsp'">新規作成</button>
<br>
<br>
<table class="table table-bordered">
<thead class="table-light">
<tr>
<th scope="col">No</th>
<th scope="col">概要</th>
<th scope="col">ステータス</th>
<th scope="col"></th>
<th scope="col"></th>
</tr>
</thead>
<%
List<String> todo =(List<String>) session.getAttribute("heoll");
List<Task> todoList = (List<Task>) session.getAttribute("todoList");
if(todoList != null){
for(int i = 0;todoList.size() > i;i++){
Task task = todoList.get(i);
%>
<tbody>
<tr>
<th scope="col"><%=i + 1 %></th>
<th scope="col"><%=task.getSummary() %></th>
<th scope="col"><%=task.getStatus() %></th>
<th scope="col">
<form action="edit" method="post">
<input type="hidden" name="idx" value=<%=i %>>
<button type="submit" class="btn btn-primary">編集</button>
</form>
</th>
<th scope="col">
<form action="delete" method="post">
<input type="hidden" name="idx" value="<%=i %>">
<button type="submit" class="btn btn-danger">削除</button>
</form>
</th>
</tr>
</tbody>
<%
}
}
%>
</table>
</div>
</body>
</html>
おわりに
TODOリストの実装は今回で終了です。