実現したいこと
DBの情報を更新した後に表示される、DBの情報を参照したJSPファイルを正常に動作させたいです。
前提
カードゲームのデッキ毎の勝敗記録を記録するアプリを作っている途中なのですが、eclipseの実行ビューで直接テーブル情報を削除した後に、このアプリで参照しているDBのテーブルの情報を削除した後にJSPで表示させると、削除したはずのテーブル情報が表示されてしまいます。
発生している問題・エラーメッセージ
index.jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>Insert title here</title> 8</head> 9<body> 10 11 <% 12 request.getRequestDispatcher("/servlet").forward(request, response); 13%> 14 15</body> 16</html>
deckManeger.jsp
1<%@page contentType="text/html;charset=utf-8" %> 2<%@page import="bean.*" %> 3<jsp:useBean id ="ddto" scope="request" class="bean.DeckDTO" /> 4<html> 5<head> 6<title>編集画面</title> 7</head> 8<body> 9 10<編集> 11 12<form action="/Masterduel/servlet" method="post"> 13<select name="deck"> 14 <% for(int i= 0; i < ddto.size() ; i++) { 15 DeckBean db = ddto.get(i); 16 %> 17 <option value="<%= db.getId() %>"><%= db.getDeck() %></option> 18 <% } %> 19</select> 20 21 22 23<input type="radio" name="action" value="delete" />削除 24<input type="radio" name="action" value="create" />新規追加 25<input type="submit" value="送信"> 26 27 28 29 <h1>doGetメソッドを使って表示されている</h1> 30 31 32 33 34 35 36</body> 37</html>
deckList.jsp
1<%@page contentType="text/html;charset=utf-8" %> 2<%@page import="bean.*" %> 3<jsp:useBean id ="ddto" scope="request" class="bean.DeckDTO" /> 4<html> 5 <head> 6 <title>表示画面</title> 7 </head> 8<body> 9 10<table border="1"> 11 <tr> 12 <th width="50">id</th> 13 <th width="150">デッキ</th> 14 <th width="50">win</th> 15 <th width="50">lose</th> 16 </tr> 17<% 18 for(int i = 0; i < ddto.size(); i++){ 19 DeckBean db = ddto.get(i); 20%> 21 <tr> 22 <td align="center"><%= db.getId() %></td> 23 <td align="center"><%= db.getDeck() %></td> 24 <td align="center"><%= db.getWin() %></td> 25 <td align="center"><%= db.getLose() %></td> 26 </tr> 27<% } %> 28</table><br />
DeckController.java
1import java.io.IOException; 2 3import javax.servlet.RequestDispatcher; 4import javax.servlet.ServletException; 5import javax.servlet.annotation.WebServlet; 6import javax.servlet.http.HttpServlet; 7import javax.servlet.http.HttpServletRequest; 8import javax.servlet.http.HttpServletResponse; 9 10import bean.DeckDTO; 11 12@WebServlet("/servlet") 13public class DeckController extends HttpServlet { 14 public void doPost(HttpServletRequest req, HttpServletResponse res) 15 throws IOException, ServletException { 16 17 req.setCharacterEncoding("utf-8"); 18 String action = req.getParameter("action"); 19 String deck = req.getParameter("deckName"); 20 String deckId = req.getParameter("deck"); 21 22 DAO ddao = new DAO(); 23 24 if(!(action == null)) { 25 if(action.equals("delete")) { 26 ddao.delete(Integer.parseInt(deckId)); 27 } 28 }else { 29 ddao.insert(deck); 30 } 31 32 //全件検索 33 DeckDTO ddto = ddao.select(); 34 //リクエストスコープにDTOとmsgを格納 35 req.setAttribute("ddto", ddto); 36 37 RequestDispatcher rd = req.getRequestDispatcher("/deckList.jsp"); 38 rd.forward(req, res); 39 } 40 public void doGet(HttpServletRequest req, HttpServletResponse res) 41 throws IOException, ServletException { 42 DAO ddao = new DAO(); 43 DeckDTO ddto = ddao.select(); 44 req.setAttribute("ddto", ddto); 45 RequestDispatcher rd = req.getRequestDispatcher("/deckManeger.jsp"); 46 rd.forward(req, res); 47 48 } 49}
試したこと
・ブラウザのキャッシュの削除
・tomcatの再起動
・deleteメソッドを実装してDBに存在しないデータを指定してみる。
3個目の結果なのですがDBにない情報を削除しようとするとローディングアイコンがしばらくくるくるした後にエラーが出て終わりました。
DBにある情報を指定して削除すると、普通に削除してくれてjspファイル側で表示される情報もしっかり消えてます。
補足情報(FW/ツールのバージョンなど)
mac 10.15.7
eclipse 2.3.1200.v20221123-1800
MySQL 8.0.32
回答1件
あなたの回答
tips
プレビュー