質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

470閲覧

MySQLで情報を更新した後にJSPにそれが反映されない。

nakku4254

総合スコア2

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2023/03/09 05:29

実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

neko_the_shadow

2023/03/09 09:48

>eclipseの実行ビューで直接テーブル情報を削除した DBViewerを利用されたということですかね? 削除処理は正しくCommitされていますか? DBViewerは自動Commitになっていない場合があります。
nakku4254

2023/03/09 09:51

テーブルを確認したら削除されてるのは確認できるのですが、自動コミットになってなくても処理の実行はされるんですか?
neko_the_shadow

2023/03/09 11:30

DBの基本的な挙動として、自動COMMITがOFFの状態でDELETE文を発行すると、同じセッション内では削除されたように見えますが、実データは削除されません。別セッションからはデータが残ったような状態になっています。その後COMMIT文を発行してはじめて、実データが削除されます。削除前に戻したい場合はROLLBACK文を使います。 ・DBViewerの自動COMMITをONにする ・DBViewrの自動COMMITをOFFで利用したいなら、DELETE文発行後にCOMMIT文を手動で実行する ↑いずれかの対応が必要かと思います。
nakku4254

2023/03/10 04:51

できました、ありがとうございます。DBViewerの設定で自動コミットをオンにした後に再度deleteメソッドを使ったら反映されました。BAにしたいのですがどうすればいいですか?
guest

回答1

0

自己解決

DBViewerの設定で自動コミットをオンにした後に再度deleteメソッドを使ったら反映されました。ありがとうございます、助かりました。

投稿2023/03/10 11:44

nakku4254

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問