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

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

解決済

1回答

1182閲覧

クラスパス指定でDBViewerに設定したものと同じjarを設定しても、HTTPステータス 500 – Internal Server Errorがでてしまう

yuki-o0413

総合スコア8

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クリップ

投稿2020/08/03 08:47

前提・実現したいこと

サーブレットにて、DBへの問い合わせを行い、INSERTにて登録を行いたい。

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

クラスパス指定でDBViewerに設定したものと同じjarを設定を行ったが、以下のエラー文が出てしまい、
DBへの登録が行われなかった。

HTTPステータス 500 – Internal Server Error タイプ 例外報告 メッセージ サーブレットの実行により例外を投げました 説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。 例外 javax.servlet.ServletException: サーブレットの実行により例外を投げました org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 根本原因 java.lang.NoClassDefFoundError: java/sql/Driver java.base/java.lang.ClassLoader.findBootstrapClass(Native Method) java.base/java.lang.ClassLoader.findBootstrapClassOrNull(ClassLoader.java:1257) java.base/java.lang.System$2.findBootstrapClassOrNull(System.java:2129) java.base/jdk.internal.loader.ClassLoaders$BootClassLoader.loadClassOrNull(ClassLoaders.java:118) java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:616) java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579) java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285) org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188) java.base/java.lang.Class.forName0(Native Method) java.base/java.lang.Class.forName(Class.java:315) main.CreateDoneServlet.doGet(CreateDoneServlet.java:74) javax.servlet.http.HttpServlet.service(HttpServlet.java:634) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 注意 原因のすべてのスタックトレースは、サーバのログに記録されています

該当のソースコード

createConfirm.jsp

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ page import="java.util.*"%> 4 5<!DOCTYPE html> 6<html> 7<head> 8<meta charset="UTF-8"> 9<title>登録確認</title> 10<link rel="stylesheet" href="css/glossary.css"> 11</head> 12<body> 13 <div id="container"> 14 <!-- ヘッダーの読み込み --> 15 <jsp:include page="common/header.jsp" flush="true" /> 16 17 18 <main> 19 <h2>登録確認</h2> 20 <br> 21 <p>以下の内容で登録を行いますか?</p> 22 <hr /> 23 <form method="get" action="./CreateDoneServlet"> 24 <div class="name"> 25 <label id="h" for="name">見出し</label> 26 <label id="cOut"><%=request.getAttribute("name")%></label> 27 <input type="hidden" name="name" value="<%=request.getAttribute("name")%>"> 28 <br> 29 <br> 30 </div> 31 <div class="read"> 32 <label id="h" for="read">読み方</label> 33 <label id="cOut"><%=request.getAttribute("read")%></label> 34 <input type="hidden" name="read" value="<%=request.getAttribute("read")%>"> 35 <br> 36 <br> 37 </div> 38 <div class="category1"> 39 <label id="h" for="category1">分類1</label> 40 <label id="cOut"><%=request.getAttribute("category1")%></label> 41 <input type="hidden" name="category1" value="<%=request.getAttribute("category1")%>"> 42 <br> 43 <br> 44 </div> 45 <div class="category2"> 46 <label id="h" for="category2">分類2</label> 47 <label id="cOut"><%=request.getAttribute("category2")%></label> 48 <input type="hidden" name="category2" value="<%=request.getAttribute("category2")%>"> 49 <br> 50 <br> 51 </div> 52 <div class="explain"> 53 <label id="h" for="explain">説明</label> 54 <label id="cOut"><%=request.getAttribute("explain")%></label> 55 <input type="hidden" name="explain" value="<%=request.getAttribute("explain")%>"> 56 <br> 57 <br> 58 </div> 59 <div> 60 <input type="submit" class="button1" value="登録"><br> <br> 61 </div> 62 </form> 63 <button class="back" onclick="location.href='createInput.jsp'">&lt;戻る</button> 64 <br> <br> 65 </main> 66 67 <!-- フッターの読み込み --> 68 <jsp:include page="common/footer.jsp" flush="true" /> 69 70 71 </div> 72</body> 73</html>
package main; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class CreateDoneServlet */ @WebServlet("/CreateDoneServlet") public class CreateDoneServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public CreateDoneServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setContentType("text/html; charset=UTF-8"); request.setCharacterEncoding("UTF-8"); String cName = request.getParameter("name"); String cRead = request.getParameter("read"); String cCat_1 = request.getParameter("category1"); int cCat1 = 0; String cCat_2 = request.getParameter("category2"); int cCat2 = 0; String cEx = request.getParameter("explain"); request.setAttribute("name", cName); request.setAttribute("read", cRead); if (cCat_1.equals("全般")) { cCat1 = 1; } else if (cCat_1.equals("開発用語")) { cCat1 = 2; } else if (cCat_1.equals("運用用語")) { cCat1 = 3; } if (cCat_2.equals("設計")) { cCat2 = 2; } else if (cCat_2.equals("実装")) { cCat2 = 3; } else if (cCat_2.equals("試験")) { cCat2 = 4; } else if (cCat_2.equals("運用")) { cCat2 = 5; } else if (cCat_2.equals("保守")) { cCat2 = 6; } Connection con = null; PreparedStatement ps = null; try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection(__url, user, password__); String sql = "INSERT INTO glossary (name, `read`, category1_no, category2_no, `explain`) " + "VALUES (?,?,?,?,?);"; ps = con.prepareStatement(sql); ps.setString(1, cName); ps.setString(2, cRead); ps.setInt(3, cCat1); ps.setInt(4, cCat2); ps.setString(5, cEx); int num = ps.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } finally { try { // 終了処理 if (ps != null) { ps.close(); } // 終了処理 if (con != null) { con.close(); } } catch (SQLException e) { e.getMessage(); } } getServletConfig().getServletContext().getRequestDispatcher("/createDone.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 doGet(request, response); } }

試したこと

クラスパスの指定を行う前は、DBへの登録はされていないが、HTTPステータスのエラー画面が表示されることなく、次に設定するcreateDone.jsp画面(登録完了画面)へ遷移した。
コンソールにて、「javax.servlet.ServletException」の表示がされていたため、対応策としてクラスパス指定を行った。

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

eclipse version 4.16.0.v20200604-0951
java version "14.0.1"
tomcat9
mysql
mysql-connector-java-8.0.21.jar

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

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

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

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

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

guest

回答1

0

ベストアンサー

Webアプリケーションにjarファイルを登録する場合は、クラスパスを指定せず、
WEB-INF/lib に配置しなければなりません(これはサーブレットの仕様です)

投稿2020/08/03 09:36

A-pZ

総合スコア12011

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

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

yuki-o0413

2020/08/03 13:43

ありがとうございます!1週間ほど悩み続けた問題が解消し、 念願のDB登録できました。たすかりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問