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

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

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

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

JSP

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

Java

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

Eclipse

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

servlet

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

Q&A

0回答

5841閲覧

Servlet.service()が例外を投げました

metalsuki

総合スコア0

MySQL

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

JSP

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

Java

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

Eclipse

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

servlet

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

0グッド

0クリップ

投稿2021/06/04 07:20

編集2021/06/04 07:34

前提・実現したいこと

入力画面から入力された検索文字列に「部分一致」するIDを持つレコードを表示するプログラムを作っています。
原因がわかる方いませんか?
IDを入力すると以下のエラーメッセージが発生しました。

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

エラーメッセージ 重大: サーブレット [WhereSelectServlet] のServlet.service()が例外を投げました

該当のソースコード

Java (WhereSelectServlet.java) package websample; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class WhereSelectServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { String id = request.getParameter("id"); String sql = "SELECT * FROM tb_staff WHERE id '%"+id+"%'"; Connection con = null; Statement smt = null; try { con = DBManager.getConnection(); smt = con.createStatement(); ResultSet rs = smt.executeQuery(sql); ArrayList<Account>list = new ArrayList<>(); while(rs.next()) { Account account = new Account(); account.setId(rs.getString("id")); account.setName(rs.getString("name")); account.setMail(rs.getString("mail")); account.setAuthority(rs.getString("authority")); list.add(account); } request.setAttribute("list", list); }catch(SQLException e) { throw new ServletException(e); }finally { if(smt!=null) { try {smt.close();}catch(SQLException ignore) {} } if(con!=null) { try {con.close();}catch(SQLException ignore) {} } } request.getRequestDispatcher("/JSP/select.jsp").forward(request, response); } }
(select_input.jsp) <%@ page contentType="text/html;charset=Windows-31J"%> <html> <head> <title>検索</title> </head> <body> <form action="<%=request.getContextPath() + "/websample.WhereSelectServlet" %>"method="get"> <p>IDに含まれる文字を入力してください</p> <input type="text" name="id"> <input type="submit" value="検索"> </form> </body> </html> (select.jsp) <%@ page contentType="text/html;charset=UTF-8"%> <%@ page import="java.util.ArrayList, websample.Account"%> <html> <head> <title>一覧</title> </head> <body> <table border="1"> <tr><th>Id</th><th>Name</th><th>Mail</th><th>Authority</th></tr> <% ArrayList<Account>list =(ArrayList<Account>)request.getAttribute("list"); if(list!=null) { for(int i=0; i<list.size(); i++) { Account account = list.get(i); %> <tr> <td><%=account.getId() %></td> <td><%=account.getName() %></td> <td><%=account.getMail() %></td> <td><%=account.getAuthority() %></td> </tr> <% } } %> </table> </body> </html>
(DBManager.java) package websample; import java.sql.Connection; import java.sql.DriverManager; public class DBManager { public static Connection getConnection() { try { Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/" + "test_db?useUnicode=true&characterEncoding=utf8"); return con; }catch(Exception e) { throw new IllegalStateException(e); } } }

試したこと

ここに問題に対して試したことを記載してください。

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

Version: 2020-12 (4.18.0)

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

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

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

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

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

m.ts10806

2021/06/04 07:24

コードブロックは ```で囲えば任意数設置できますのでファイルが違うのでしたらわけてください。 あと、コンソールにエラーが出てるはずなので、そのエラーログも提示してください。
metalsuki

2021/06/04 07:30

すみません!コードわけました! エラーは「重大: サーブレット [WhereSelectServlet] のServlet.service()が例外を投げました」としか表示されてないです。。。
m.ts10806

2021/06/04 07:40

なんの例外かも分かりませんか? eclipse上での実行ならコンソールタブに詳細出てるはずですが…。エラー出力設定も関係するかもしれません エラーログファイルも確認してみてください。
K_3578

2021/06/07 00:51

コンソールじゃなくてもブラウザとかで表示してないのかな、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問