Javaサーブレット MySQLとの接続がうまくいかない
解決したいこと
データベースへの接続がうまくいかない
Javaのサーブレットでログイン機能の実装をしております。
ユーザー名とパスワードを入力画面に入力し、POSTした際にデータベースにある情報と照合させ、照合したらログイン成功したページへ遷移する仕組みになります。
発生している問題・エラー
JDBCドライバのロードが失敗して、
上記プロセスでpostすると以下のとおりエラーメッセージがでます。
該当するソースコード
このエラーメッセージは以下コードのJDBCドライバのロードがうまくいっていないために出ているエラーメッセージになります。
SqlDao.java
package dao;
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 java.util.List;
import config.DBconfig;
import dto.LoginUser;
//アクセスロジック(DAO)
public class SqlDao {
//DBconfig.propertiesのフルパス
public final String file_path = "C:/pleiades/2022-06/workspace/ManagementSystem/DBconfig.properties";
//DBconfigのオブジェクト生成
DBconfig config = new DBconfig();
//ログイン認証のメソッド
public List<LoginUser> check(String user,String password)throws IOException{
//DBconfig.propertiesの各値をlist形式で取得
String[] DbInfo = config.getDBinfo(file_path);
//DBconfig.propertiesのurlを取得
String url = DbInfo[0];
//DBconfig.propertiesのuserを取得
String db_user_name = DbInfo[1];
//DBconfig.propertiesのpasswordを取得
String db_password = DbInfo[2];
//login_user_tbのうち指定されたnameかつpasswordのものを検索するSQL文
String sql = "select * from login_user_tb" + "where name = ? and password = ?";
//ログインユーザのオブジェクト生成(DTO)
LoginUser login_user = new LoginUser();
List<LoginUser> user_info = new ArrayList<LoginUser>();
//JDBCドライバのロード
try{
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e){
throw new IllegalStateException("失敗しました。");
}
//データベースへの接続
try(Connection conn = DriverManager.getConnection(url,db_user_name,db_password)){
PreparedStatement stmt = conn.prepareStatement(sql);
//変数sqlの1番目の?に引数のuserをセットする
stmt.setString(1,user);
//変数sqlの2番目の?に引数のpasswordをセットする
stmt.setString(2,password);
//sqlを実行し該当するデータを格納
ResultSet rs = stmt.executeQuery();
if(rs.next()) {
login_user.setId(rs.getInt("id"));
login_user.setName(rs.getString("name"));
login_user.setPassword(rs.getString("password"));
user_info.add(login_user);
} else {
login_user.setName("No user");
login_user.setPassword("Not match password");
user_info.add(login_user);
}
}catch (SQLException e) {
e.printStackTrace();
}
return user_info;
}
}
jarファイルは下記とおりの参照ライブラリーに読み込まれております。
サーブレットなしの時はJDBCドライバへのロードは成功していたため、なぜ、サーブレットにしたとたんロードがうまくいかないのか原因がわかりません。。
どなたかご教示いただけますよお願いいたします。
0 likes