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

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

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

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

ウェブアプリケーション

ウェブアプリケーションとは、ウェブ上でアクセスされるアプリケーションのことを呼びます。この場合におけるウェブとは、インターネットやイントラネット上を意味します。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

受付中

javaのウェブアプリからデータベースにinsertができません

ronboo
ronboo

総合スコア5

Java

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

ウェブアプリケーション

ウェブアプリケーションとは、ウェブ上でアクセスされるアプリケーションのことを呼びます。この場合におけるウェブとは、インターネットやイントラネット上を意味します。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

1回答

0リアクション

1クリップ

248閲覧

投稿2022/07/27 12:57

前提

入力画面で「名前」と「コメント」を入力すると、
それらがデータベースに格納されていくというアプリを学習のために作っています。

発生している問題・エラーメッセージ

特にエラーが出ているわけではないと思うのですが、
名前等を入力してもデータベースに格納されません。

アプリの概要としては、
「InputComment」で入力された名前等の情報を
「SaveComment」→「SaveCommentBL」→「CommentDao」と受け渡し、
データベースに格納するというものです。

該当のソースコード

java

package work; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class InputComment extends HttpServlet { private static final long serialVersionUID = 1L; public InputComment() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html> "); out.println("<head> "); out.println(" <title>コメント入力</title> "); out.println("</head> "); out.println("<body> "); out.println(" <h2>コメント入力画面</h2> "); out.println(" <form action=\"SaveComment\" method=\"post\"> "); out.println(" <p>名前: "); out.println(" <input type=\"text\" name=\"NAME\" maxlength = \"20\"> "); out.println(" </p> "); out.println(" <p>コメント:<br> "); out.println(" <textarea name=\"MESSAGE\" rows=\"4\" cols=\"50\" maxlength = \"250\"></textarea> "); out.println(" </p> "); out.println(" <input type=\"submit\" value=\"送信\"> "); out.println(" </form> "); out.println(" <br> "); out.println(" <a href=\"ShowAllComment\">コメント一覧画面へ</a> "); out.println("</body> "); out.println("</html> "); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }

java

package work; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class SaveComment extends HttpServlet { private static final long serialVersionUID = 1L; public SaveComment() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); request.setCharacterEncoding("UTF-8"); boolean succesFlg = true; String name = request.getParameter("NAME"); String message = request.getParameter("MESSAGE"); CommentsDto dto = new CommentsDto(); dto.setName( name ); dto.setMessage( message ); SaveCommentBL logic = new SaveCommentBL(); succesFlg = true; if (succesFlg) { response.sendRedirect("htmls/finish.html"); } else { response.sendRedirect("htmls/error.html"); } } }

java

package work; public class SaveCommentBL { public boolean executeInsertSurvey(CommentsDto dto) { boolean succesInsert = false ; CommentsDao dao = new CommentsDao(); succesInsert = dao.doInsert(dto); return succesInsert; } }

java

package work; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class CommentsDao { String DRIVER_NAME = "com.mysql.cj.jdbc.Driver"; String JDBC_URL = "jdbc:mysql://localhost/test_db?characterEncoding=UTF-8&serverTimezone=JST&useSSL=false"; String USER_ID = "test_user"; String USER_PASS = "test_pass"; public boolean doInsert(CommentsDto dto) { try { Class.forName(DRIVER_NAME); } catch (ClassNotFoundException e) { e.printStackTrace(); } Connection con = null ; PreparedStatement ps = null ; boolean isSuccess = true ; try { con = DriverManager.getConnection(JDBC_URL, USER_ID, USER_PASS); con.setAutoCommit(false); StringBuffer buf = new StringBuffer(); buf.append(" INSERT INTO comments ( "); buf.append(" NAME, "); buf.append(" MESSAGE, "); buf.append(") VALUES ( "); buf.append(" ?, "); buf.append(" ? "); buf.append(") "); ps = con.prepareStatement(buf.toString()); ps.setString( 1, dto.getName() ); ps.setString( 2, dto.getMessage() ); ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); isSuccess = false ; } finally { if(isSuccess){ try { con.commit(); } catch (SQLException e) { e.printStackTrace(); } }else{ try { con.rollback(); } catch (SQLException e) { e.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (SQLException e) { e.printStackTrace(); } } if (con != null) { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } return isSuccess; } public List<CommentsDto> doSelect() { try { Class.forName(DRIVER_NAME); } catch (ClassNotFoundException e) { e.printStackTrace(); } Connection con = null ; PreparedStatement ps = null ; ResultSet rs = null ; List<CommentsDto> dtoList = new ArrayList<CommentsDto>(); try { con = DriverManager.getConnection(JDBC_URL, USER_ID, USER_PASS); StringBuffer buf = new StringBuffer(); buf.append("SELECT "); buf.append(" NAME, "); buf.append(" MESSAGE "); buf.append(" FROM "); buf.append(" COMMENTS; "); ps = con.prepareStatement(buf.toString()); rs = ps.executeQuery(); while (rs.next()) { CommentsDto dto = new CommentsDto(); dto.setName(rs.getString( "NAME" ) ); dto.setMessage(rs.getString( "MESSAGE" ) ); dtoList.add(dto); } } catch (SQLException e) { e.printStackTrace(); } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (SQLException e) { e.printStackTrace(); } } if (con != null) { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } return dtoList; } }

試したこと

  • 他のコードであれば、問題なくデータベースにデータ格納できているので、環境構築は問題ないと思います。
  • mysqlのパスワードはあっています。
  • DAOが怪しいと思っており、Eclipseのデバッグを試しましたが、404エラーが表示されます。(そもそもウェブアプリのデバッグの方法がこれで正しいのかわかっていません。。。)

補足情報(FW/ツールのバージョンなど)

添付のコードは既存の正常に動作するアプリを修正して作成したものです。
元々はバリデーションチェックなど様々な機能がありましたが、
ひとまず最小構成のアプリを作ってみようといろいろと機能を削りました。
(if文にtrueが渡され、分岐が行われないようになっていたりするのはそのような経緯のためです。)

また、初学者のため質問のために必要な情報がこれで足りているかどうかわかりません。
不足があればご指摘いただけたらと思います。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

m.ts10806

2022/07/27 20:21

リクエストを送っているフォームhtmlのあるコードも提示してください。 あと、どのような構成で作られているのかわかりませんが、web.xmlも必要に思います。
ronboo

2022/07/28 12:47

ご回答ありがとうございます。 データベースの中身を表示するためのクラスということでいいでしょうか?それであれば次のものとなります。 ```java package work; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ShowAllComment extends HttpServlet { private static final long serialVersionUID = 1L; public ShowAllComment() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //レスポンス(出力データ)の文字コードを設定 response.setContentType("text/html;charset=UTF-8"); //出力用のストリームの取得 PrintWriter out = response.getWriter(); //「survey」テーブルのデータを全件抽出 List<CommentsDto> list = new ArrayList<CommentsDto>(); ShowAllCommentBL logic = new ShowAllCommentBL(); list = logic.executeSelectSurvey(); //HTML文書(回答一覧画面)の出力 out.println( "<html> "); out.println( " <head> "); out.println( " <title>コメント一覧</title> "); out.println( " </head> "); out.println( " <body> "); out.println( " <h2>コメント一覧</h2> "); out.println( " <table class=\"comment_list\" border=1> "); out.println( " <tr bgcolor=\"#c0c0c0\"> "); out.println( " <th>名前</th> "); out.println( " <th>コメント</th> "); out.println( " </tr> "); for (int i = 0; i < list.size(); i++) { CommentsDto dto = list.get(i); out.println( " <tr> "); out.println( " <td>" + dto.getName() + "</td>" ); out.println( " <td>" + dto.getMessage() + "</td>" ); out.println( " </tr> "); } out.println( " </table> "); out.println( " <br> "); out.println( " <a href=\"InputComment\">コメント入力画面に戻る</a> "); out.println( " </body> "); out.println( "</html> "); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } ``` また、web.xmlはこちらです。 ```xml <?xml version="1.0" encoding="UTF-8"?> -<web-app version="2.5" id="WebApp_ID" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> -<servlet> <servlet-name>InputComment</servlet-name> <servlet-class>work.InputComment</servlet-class> </servlet> -<servlet-mapping> <servlet-name>InputComment</servlet-name> <url-pattern>/InputComment</url-pattern> </servlet-mapping> -<servlet> <servlet-name>SaveComment</servlet-name> <servlet-class>work.SaveComment</servlet-class> </servlet> -<servlet-mapping> <servlet-name>SaveComment</servlet-name> <url-pattern>/SaveComment</url-pattern> </servlet-mapping> -<servlet> <servlet-name>ShowAllComment</servlet-name> <servlet-class>work.ShowAllComment</servlet-class> </servlet> -<servlet-mapping> <servlet-name>ShowAllComment</servlet-name> <url-pattern>/ShowAllComment</url-pattern> </servlet-mapping> </web-app> ```
ronboo

2022/07/28 12:50

すいません、追記ではMarkdown記法ができないんですね汗
jimbe

2022/07/28 17:24

この欄ではなく、質問を編集して追加して下さい。
jimbe

2022/07/28 17:45 編集

>特にエラーが出ているわけではないと思うのですが、 出ているのかいないのか、確認してください。もし出ているのに気がついていないとしたら、無駄な時間を費やすことになります。 >既存の正常に動作するアプリを修正して作成したもの SQL 文の箇所も修正したのでしょうか。 >ウェブアプリのデバッグの方法がこれで正しいのか web のデバッグ方法が分からなくても、 eclipse で新しく java のプロジェクトを作ってそちらにDAO のコードをコピーして試すとかやりようはあるのではないでしょうか。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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

ウェブアプリケーション

ウェブアプリケーションとは、ウェブ上でアクセスされるアプリケーションのことを呼びます。この場合におけるウェブとは、インターネットやイントラネット上を意味します。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます