実現したいこと
チェックボックスが押されたときにsessionの破棄
発生している問題・分からないこと
チェックボックスをチェックして破棄ボタンを押したとき
エラーメッセージ
error
1HTTPステータス 404 – 見つかりません。 2タイプ ステータスレポート 3 4メッセージ 要求されたリソース [/delete-servlet] は利用できません。 5 6説明 オリジンサーバーは、ターゲットリソースの現在の表現を見つけられなかったか、またはそれが存在することを開示するつもりはありません。 7 8Apache Tomcat/9.0.70
該当のソースコード
package control; import java.io.IOException; import java.util.ArrayList; 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; /** * Servlet implementation class DeleteServlet */ @WebServlet("/delete-servlet") public class DeleteServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ @SuppressWarnings("unchecked") protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //セションを取得 HttpSession session = request.getSession(); //セッションからtodoリストを取得 ArrayList<TodoItem> todolist = (ArrayList<TodoItem>) session.getAttribute("todoList"); if(todolist != null) { String[] indices = request.getParameterValues("deleteIndex"); if(indices != null) { for(int i = indices.length - 1; i >= 0; i--) { try { int index = Integer.parseInt(indices[i]); todolist.remove(index); }catch(NumberFormatException e) { e.printStackTrace(); } } session.setAttribute("todoList" , todolist); } } response.sendRedirect("main.jsp"); } }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
もともとチャットGPTを見て別の方法で書いていたのですがsessionの方がよいと聞いて変えました
補足
実行するjspです
コード
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="control.TodoItem" %>
<%
ArrayList<TodoItem> todolist = (ArrayList<TodoItem>)session.getAttribute("todoList");
request.setAttribute("todolist", todolist);
%>
<h2>リスト一覧</h2><%@include file = "header-navi.jsp"%>
<a href = "listsakusei.jsp" class="submit">リスト追加</a>
<p> <form action="/delete-servlet" method="post"> <table border="1"> <thead> <tr> <th width = "5%">チェック</th> <th width = "15%">日付</th> <th>内容</th> </tr> </thead> <tbody></table> <br> <br> <button type="submit">タスク完了</button> </form> </body> </html><c:forEach var="todo" items="${todolist}" varStatus="status"> <tr> <td><input type="checkbox" name="deleteIndex" value="${status.index}"></td> <td>${todo.date}</td> <td>${todo.task}</td> </tr> </c:forEach> </tbody>
あなたの回答
tips
プレビュー