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

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

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

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

Java

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

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

Eclipse

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

Q&A

2回答

1186閲覧

例外が発生してしまう

退会済みユーザー

退会済みユーザー

総合スコア0

JSP

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

Java

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

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

Eclipse

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

0グッド

1クリップ

投稿2020/09/26 00:24

編集2020/09/26 00:27

画面上で編集しボタンを押下すると、188行目で例外が発生してしまいます。どなたか解決方法を教えていただけないでしょうか。 「// SQL実行 ps.executeUpdate();」で例外が発生」

イメージ説明
手順
1.サーブレットを実行する
2.実行した画面上でテキストボックスないを編集する
3.ボタンを押下
4.188行目で例外が発生してしまう

JSP <%@page contentType="text/html; charset=UTF-8"%> <%@page import="java.sql.*"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>料金</title> </head> <body> <form action="./Seisan" method="post"> <P>コース選択</P> <table> <%@page contentType="text/html; charset=UTF-8"%> <table border="1">   <tr> <forEach var="ryoukin" items="${ryoukin}"> <th><input type="submit" name="coursea" value="コースA"></th> <th><input type="submit" name="courseb" value="コースB"></th> <th><input type="submit" name="coursec" value="コースC"></th> <th><input type="submit" name="opcoursea" value="OPコースA"></th> <th><input type="submit" name="opcourseb" value="OPコースB"></th> <th><input type="submit" name="opcoursec"value="OPコースC"></th> </tr> <tbody> <tr> <td><input type = text name="coursea_value" value = "${ryoukin.coursea_value}"></td> <td><input type = "text" name="courseb_value" value = "${ryoukin.courseb_value}"></td> <td><input type = "text" name="coursec_value" value = "${ryoukin.coursec_value}"></td> <td><input type = "text" name="opcoursea_value" value = "${ryoukin.opcoursea_value}"></td> <td><input type = "text" name="opcourseb_value"value = "${ryoukin.opcourseb_value}"></td> <td><input type = "text" name="opcoursec_value"value = "${ryoukin.opcoursec_value}"></td> </forEach> </tr> </table> </thead> </table> <input type="submit" value="清算"> <input type="submit" value="更新"> </form> </body> </html>
サーブレット package seisan; import java.io.IOException; 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 javax.annotation.Resource; 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.sql.DataSource; import ryoukin.java.ryoukin_beans; import test_ryoukin.ryoukin; /** * Servlet implementation class SeisanServlet */ @WebServlet("/Seisan") public class SeisanServlet extends HttpServlet { private static final long serialVersionUID = 1L; // Define datasource/connection pool for Resource Injection @Resource(name = "jdbc/WebApp") private DataSource dataSource; /** * @see HttpServlet#HttpServlet() */ public SeisanServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ @SuppressWarnings("unused") protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setContentType("text/html; charset=UTF-8"); response.getWriter().append("Served at: ").append(request.getContextPath()); //一覧データ用の変数(ArrayList)を用意する ArrayList<ryoukin> salesList = new ArrayList<>(); // 【料金情報を取得する】 ryoukin_beans ryoukin = null; // ■DB接続 Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; // 接続情報 String url = "jdbc:mariadb://localhost:3306/ryoukin"; String user = "user02"; String password = "user02"; try { // 接続処理 conn = DriverManager.getConnection(url, user, password); // ■検索処理実行 // SQL作成 String sql = "SELECT * FROM seisan"; System.out.println(sql); // SQL準備 ps = conn.prepareStatement(sql); // SQL実行 rs = ps.executeQuery(); // データを読込み、JavaBeansに設定する ryoukin = new ryoukin_beans(); while (rs.next()) { // データ読込 int coursea = rs.getInt("coursea_value"); int courseb = rs.getInt("courseb_value"); int coursec = rs.getInt("coursec_value"); int opcoursea = rs.getInt("opcoursea_value"); int opcourseb = rs.getInt("opcoursea_value"); int opcoursec = rs.getInt("opcoursea_value"); // JavaBeansにデータを設定 ryoukin.setCoursea_value(coursea); ryoukin.setCourseb_value(courseb); ryoukin.setCoursec_value(coursec); ryoukin.setOpcoursea_value(opcoursea); ryoukin.setOpcourseb_value(opcourseb); ryoukin.setOpcoursec_value(opcoursec); } System.out.println(ryoukin); } catch (SQLException e) { // 接続失敗時の処理 e.printStackTrace(); } finally { try { // ■クローズ処理 // 検索結果 if (rs != null) { rs.close(); } // SQL文 if (ps != null) { ps.close(); } // DB接続 if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } // 【表示値を設定する】 request.setAttribute("ryoukin", ryoukin); // 【画面に遷移する】 request.getRequestDispatcher("Newryoukin.jsp").forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub System.out.println("辻"); //リクエストパラメータを取得 request.setCharacterEncoding("UTF-8"); System.out.println("SeisantServlet.doPost()"); // 【文字化け対応】 request.setCharacterEncoding("utf-8"); // ■リクエストデータ取得 int coursea_value = Integer.parseInt(request.getParameter("coursea_value")); int courseb_value = Integer.parseInt(request.getParameter("courseb_value")); int coursec_value = Integer.parseInt(request.getParameter("coursec_value")); int opcoursea_value = Integer.parseInt(request.getParameter("opcoursea_value")); int opcourseb_value = Integer.parseInt(request.getParameter("opcourseb_value")); int opcoursec_value = Integer.parseInt(request.getParameter("opcoursec_value")); System.out.println(coursea_value); System.out.println(courseb_value); System.out.println(coursec_value); System.out.println(opcoursea_value); System.out.println(opcourseb_value); System.out.println(opcoursec_value); // ■DB接続 Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; // 接続情報 String url = "jdbc:mariadb://localhost:3306/ryoukin"; String user = "user02"; String password = "user02"; try { // 接続処理 conn = DriverManager.getConnection(url, user, password); // SQL作成 String sql = "UPDATE seisan SET coursea_value = ?, courseb_value = ?, coursec_value = ?,opcoursea_value = ?,opcourseb_value = ?,opcoursec_value = ? upd_username = ?, upd_datetime = now()"; System.out.println(sql); // SQL準備 ps = conn.prepareStatement(sql); // SQL実行 ps.executeUpdate();←ここで例外が発生 // パラメータ設定 ps.setInt(1, coursea_value); // ■コミット conn.commit(); } catch (SQLException e) { // エラー時の処理 e.printStackTrace(); } finally { try { // ■クローズ処理 // 検索結果 if (rs != null) { rs.close(); } // SQL文 if (ps != null) { ps.close(); } // DB接続 if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } response.sendRedirect("coursea_value"); doGet(request, response); } }

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

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

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

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

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

guest

回答2

0

コンソールに出ているエラーメッセージをご確認ください。

Parameter at position 1 is not set

SQL文の ? (プレースホルダ)に対し、パラメータが設定されていないのが原因です。

投稿2020/09/26 02:21

A-pZ

総合スコア12011

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

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

0

エラーメッセージには、「java.sql.SQLTransientConnectionException: (conn=130) Parameter at position 1 is not set」([直訳]1番目のパラメーターがセットされていません)と書かれており、
その上の"UPDATE Seisan SET"で始まる行には、多くの "xxx_value = ?"という項目があります。

この辺りから例外の原因を調べて行ってみてのが良いように思われます。

投稿2020/09/26 02:41

coco_bauer

総合スコア6915

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問