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

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

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

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

Java

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

DB2

DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

1回答

1254閲覧

jsp、サーブレットを使い、フォームに入力した内容をデータベースに追加したい

rarararaio

総合スコア12

JSP

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

Java

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

DB2

DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2019/07/21 20:30

test_db.jspからtest_db.javaの表示までは上手く行くのですが、それ以降が結果反映されません。Eclipse ver.2019-03(4.11.0)を使っています。

エラーは起きていません。jsp上のフォームに値を入力し、submitすることでサーブレットで出力しているhtmlのページへと推移はできます。ですが、その結果がDBに追加されない、と言う状態です。

test_db.jsp

pageEncoding="UTF-8"%>; <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&gt; <title>ユーザー登録</title> </head> <body> <form action="test_db" method="post"> 名前:<;br>; <input type="text" name="name">&lt;br>; 性別:<br> 男<input type="radio" name="gender" value="0"> 女<input type="radio" name="gender" value="1"> <input type="submit" value="登録"> </form> </body> </html>

test_db.java

package

1 2import java.io.IOException; 3import java.io.PrintWriter; 4 5import javax.servlet.ServletException; 6import javax.servlet.annotation.WebServlet; 7import javax.servlet.http.HttpServlet; 8import javax.servlet.http.HttpServletRequest; 9import javax.servlet.http.HttpServletResponse; 10 11/** 12 * Servlet implementation class FormSampleServlet 13 */ 14@WebServlet("/test_db") 15public class test_db extends HttpServlet { 16 private static final long serialVersionUID = 1L; 17 18 //インスタンス化 値受け渡し 19 //ConnectionClass obj = new ConnectionClass(); 20 21 /** 22 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 23 */ 24 25 static final String URL = "jdbc:mysql://localhost/data_data"; 26 static final String USERNAME = "rararaio"; 27 static final String PASSWORD = "Vwxyz123"; 28 29 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 30 31 //リクエストパラメータを取得 32 request.setCharacterEncoding("UTF-8"); 33 String name = request.getParameter("name"); 34 String gender = request.getParameter("gender"); 35 36 //リクエストパラメータをチェック 37 String errorMsg = ""; 38 if(name == null || name.length() == 0) { 39 errorMsg += "名前が入力されていません<br>"; 40 } 41 if(gender == null || gender.length() == 0) { 42 errorMsg += "性別が選択されていません<br>"; 43 } else { 44 if(gender.equals("0")) { 45 gender = "男性"; 46 } else if(gender.equals("1")) { 47 gender = "女性"; 48 } 49 } 50 51 //表示するメッセージ 52 String msg = "'" + name + "','" + gender + "'"; 53 if(errorMsg.length() != 0) { 54 msg = errorMsg; 55 } 56 57 //HTMLを出力 58 response.setContentType("text/html; charset=UTF-8"); 59 PrintWriter out = response.getWriter(); 60 out.println("<!DOCTYPE html>"); 61 out.println("<html>"); 62 out.println("<head>"); 63 out.println("<meta charset=\"UTF-8\">"); 64 out.println("<title>ユーザー登録結果</title>"); 65 out.println("</head>"); 66 out.println("<body>"); 67 out.println("<p>"+msg+"</p>"); 68 out.println("</body>"); 69 out.println("</html>"); 70 71 } 72 73}

test_db_connection.java

package

1import java.sql.Connection; 2import java.sql.DriverManager; 3import java.sql.SQLException; 4import java.sql.Statement; 5 6public class test_db_connection { 7 8 static final String URL = "jdbc:mysql://localhost/data_data"; 9 static final String USERNAME = "rararaio"; 10 static final String PASSWORD = "Vwxyz123"; 11 12 public static void main(String[] args) { 13 14 try ( 15 Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD); 16 Statement statement = connection.createStatement(); 17 ) { 18 19 String sql = "INSERT INTO test VALUES (msg);"; 20// String sql = "INSERT INTO test VALUES ('matuda','man');"; 21 int result = statement.executeUpdate(sql); 22 System.out.println("結果1:" + result); 23 24// sql = "INSERT INTO music (name, title, year) VALUES ('Aril');"; 25 sql = "INSERT INTO test VALUES ('tanaka','woman');"; 26 result = statement.executeUpdate(sql); 27 System.out.println("結果2:" + result); 28 29 } catch (SQLException e) { 30 31 e.printStackTrace(); 32 33 } 34 35 }

ご回答よろしくお願いします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/07/21 21:24

してないだけじゃないのかな?
rarararaio

2019/07/21 22:45

回答ありがとうございます。 してないだけと言うのは、どの部分でしょうか test_db.jsp (入力フォームを表示、test_db.javaへの値の受け渡し) test_db.java (入力結果の表示、test_db_connection.javaへの値の受け渡し) test_db_connection.java (test_db.javaからの値をDBへ受けわたす) よろしければご回答お願いします。
m.ts10806

2019/07/22 00:05

お気づきかどうか分かりませんが、回答してますので。
退会済みユーザー

退会済みユーザー

2019/07/22 01:12

mts10806 多分気づく気配もない。
m.ts10806

2019/07/22 01:24

asahina1979さん きっと出勤か通学で通知メールはPC宛で帰宅してから見るつもりなんじゃないかと (それなら1か月半前の質問にコメントも回答ついてても無反応はおかしいですけどね)
m.ts10806

2019/07/22 01:36

あといちおう DB2じゃなくてMySQLですね<タグ あと回答付けた後で気づいたのですが、 提示されたコード内にデータベース接続情報が含まれています。 運営にマスクかけてもらうか質問の削除を依頼されたほうが良いかと思います。 ※通常は提示時に適当な文字列に置き換えるか、空にします。質問を自分で編集しても履歴に残りますのでご注意を。
guest

回答1

0

test_db_connectionで登録処理をされているようですがどこからも呼び出されていません。

insert入力値は固定値になっているようですが、これは確認のためでしょうか?

また、test_db_connectionは内部処理を担当する部分と思うのでmainメソッドではなく機能名(例えばcreateDataとか)とし、引数を受け取って実行されるようにしたほうが良いかと思います。

投稿2019/07/21 22:50

編集2019/07/22 00:05
m.ts10806

総合スコア80850

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問