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

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

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

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

JSP

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

Java

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

サーブレット

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

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

解決済

1回答

769閲覧

DBの情報をWebで表示されない

mobame

総合スコア20

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

JSP

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

Java

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

サーブレット

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

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

0クリップ

投稿2022/03/29 02:47

前提・実現したいこと

Webページで社員登録のテーブルを一覧表示したい

社員登録のテーブルの情報を、表示させたいのに、DBの接続エラーで表示されません
どのようにすればいいかご教授いただけないでしょうか。

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

イメージ説明

DB接続エラーの為、一覧表示できません java.lang.IllegalStateException: java.lang.IllegalStateException: java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver at employee_registration.AccountDao1.selectAll(AccountDao1.java:63) at employee_registration.SelectServlet1.doGet(SelectServlet1.java:30) at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.IllegalStateException: java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver at employee_registration.AccountDao1.getConnection(AccountDao1.java:28) at employee_registration.AccountDao1.selectAll(AccountDao1.java:47) ... 24 more Caused by: java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1308) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1142) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at employee_registration.AccountDao1.getConnection(AccountDao1.java:24)

該当のソースコード

AccountBeans

1public class AccountBeans { 2 3 private String user_no; //no格納用変数 4 private String user_name; //名前格納用変数 5 private String post_cd; //役職格納用変数 6 7 public String getUser_no(){ 8 return user_no; 9 } 10 public void setUser_no(String user_no){ 11 this.user_no = user_no; 12 } 13 public String getUser_name(){ 14 return user_name; 15 } 16 public void setUser_name(String user_name){ 17 this.user_name = user_name; 18 } 19 public String getPost_cd(){ 20 return post_cd; 21 } 22 public void setPost_cd(String post_cd){ 23 this.post_cd = post_cd; 24 } 25} 26

AccountDao1

1public class AccountDao1 { 2 3 //接続用の情報をフィールドに定数として定義 4 private static String RDB_DRIVE = "org.mariadb.jdbc.Driver"; 5 private static String URL = "jdbc:mariadb://localhost:3306/"; 6 private static String USER = "root"; 7 private static String PASS = "comp0121"; 8 9 //データベース接続を行うメソッド 10 public static Connection getConnection(){ 11 try{ 12 Class.forName(RDB_DRIVE); 13 Connection con = DriverManager.getConnection(URL, USER, PASS); 14 return con; 15 }catch(Exception e){ 16 throw new IllegalStateException(e); 17 } 18 } 19 20 //データベースから全てのアカウント情報の検索を行うメソッド 21 //戻り値としてArrayList<AccountInfo>型の変数を利用 22 public ArrayList<AccountBeans> selectAll(){ 23 //変数宣言 24 Connection con = null; 25 Statement smt = null; 26 27 //return用オブジェクトの生成 28 ArrayList<AccountBeans> list = new ArrayList<AccountBeans>(); 29 30 //SQL文 31 String sql = "SELECT * FROM registration.mst_user"; 32 33 try{ 34 con = getConnection(); 35 smt = con.createStatement(); 36 37 //SQLをDBへ発行 38 ResultSet rs = smt.executeQuery(sql); 39 40 //検索結果を配列に格納 41 while(rs.next()){ 42 AccountBeans accountbeans =new AccountBeans(); 43 accountbeans.setUser_no(rs.getString("user_no")); 44 accountbeans.setUser_name(rs.getString("user_name")); 45 accountbeans.setPost_cd(rs.getString("post_cd")); 46 list.add(accountbeans); 47 } 48 49 }catch(Exception e){ 50 throw new IllegalStateException(e); 51 }finally{ 52 //リソースの開放 53 if(smt != null){ 54 try{smt.close();}catch(SQLException ignore){} 55 } 56 if(con != null){ 57 try{con.close();}catch(SQLException ignore){} 58 } 59 } 60 return list; 61 } 62 }

SelectServlet1

1public class SelectServlet1 extends HttpServlet{ 2 3 4 public void doGet(HttpServletRequest request ,HttpServletResponse response) 5 throws ServletException ,IOException{ 6 String error = ""; 7 8 9 10 try{ 11 12 //配列宣言 13 ArrayList<AccountBeans> list = new ArrayList<AccountBeans>(); 14 15 //オブジェクト宣言 16 AccountDao1 objDao = new AccountDao1(); 17 18 //全検索メソッドを呼び出し 19 list = objDao.selectAll(); 20 21 //検索結果を持ってlist.jspにフォワード 22 request.setAttribute("list", list); 23 24 25 }catch (IllegalStateException e) { 26 error ="DB接続エラーの為、一覧表示はできませんでした。"; 27 28 }catch(Exception e){ 29 error ="予期せぬエラーが発生しました。<br>"+e; 30 31 }finally{ 32 request.setAttribute("error", error); 33 request.getRequestDispatcher("/list1.jsp").forward(request, response); 34 } 35 36 } 37} 38

list1

1<%@page contentType="text/html; charset=UTF-8"%> 2<%@page import="java.util.ArrayList,employee_registration.AccountBeans"%> 3 4<% 5ArrayList<AccountBeans> list = (ArrayList<AccountBeans>)request.getAttribute("list"); 6String error = (String)request.getAttribute("error"); 7%> 8<html> 9 <head> 10 <title>社員登録</title> 11 </head> 12 <body> 13 <div style="text-align:center"> 14 <h2 style="text-align:center">社員登録</h2> 15 <hr style="height:3; background-color:#ffdacc" /> 16 <br> 17 <%= error %> 18 <table style="margin:0 auto"> 19 <tr> 20 <th style="background-color:#ff7f50; width:100">No</th> 21 <th style="background-color:#ff7f50; width:100">名前</th> 22 <th style="background-color:#ff7f50; width:100">役職</th> 23 </tr> 24 <% 25 if(list != null){ 26 for(int i=0;i<list.size();i++){ 27 %> 28 <tr> 29 <td style="text-align:center; width:100"><%= list.get(i).getUser_no() %></td> 30 <td style="text-align:center; width:250"><%= list.get(i).getUser_name() %></td> 31 <td style="text-align:center; width:100"><%= list.get(i).getPost_cd() %></td> 32 </tr> 33 <% 34 } 35 } 36 %> 37 </table> 38 <br> 39 </div> 40 </body> 41</html>

web.xml

1 2<?xml version="1.0" encoding="UTF-8"?> 3<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> 4 <display-name>example</display-name> 5 6 <servlet> 7 <servlet-name>SelectServlet1Mapping</servlet-name> 8 <servlet-class>employee_registration.SelectServlet1</servlet-class> 9 </servlet> 10 <servlet-mapping> 11 <servlet-name>SelectServlet1Mapping</servlet-name> 12 <url-pattern>/SelectServlet1</url-pattern> 13 </servlet-mapping> 14 15</web-app> 16

試したこと

DBにログイン出来る

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

Eclipse Eclipse 4.5 Mars・jdk1.8.0_241・MariaDB Connector/J 2.5.2・MariaDB 5.5.62

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

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

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

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

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

m.ts10806

2022/03/29 03:09

エラーからわかることは沢山あると思います。 特に今回の場合、そこまで特殊ではなく過去によく出てきている印象です。
guest

回答1

0

ベストアンサー

ClassNotFoundExceptionですから、当該クラスにクラスパスが通っていないのでしょう。
一般的には、WARの WEB-INF/lib 配下にJDBCドライバーのJARを入れますね。

投稿2022/03/29 05:57

nukasa

総合スコア406

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問