私はIntelliJ IDEA UltimateでJava Webプロジェクトを作成しています。 2つの文字列を入力とし、データベースを照会してint値を返すメソッドを持つクラスがあります。 (これはログインメソッドです。ユーザー名とパスワードを受け取ります。有効な場合は、ユーザーIDのintを返します。それ以外の場合は0)。メインメソッドからではなく、JSPページからメソッドを実行しているときにエラーが発生するのはなぜですか?
私はこのメソッドをmainメソッドで "Tester"クラスから呼び出すことでテストし、期待値を返しました。しかし、このメソッドをJSPページから呼び出すと、SQLドライバ(com.sql.jdbc.Driver)に対してClassNotFound例外が発生します。 (私はそれが私にエラーを与えるこのメソッドを知っているので、私はそれをデバッグするSystem.out.printlnを追加しました)
私のJSPページからメソッドを呼び出すときにのみ、このエラーが発生しますか?これをどうすれば解決できますか?
私はコンソールに入る正確なエラー:
LogIn method error java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
私に苦痛を与えるのログイン方法:
public static int logIn(String username, String password) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/my_database", "root",
"password12345");
Statement stmt = con.createStatement();
ResultSet users = stmt.executeQuery("SELECT * FROM users");
ArrayList<User> userList = new ArrayList<User>();
while (users.next()) {
userList.add(
new User(users.getInt("id"), users.getString("username"), users.getString("password"),
users.getString("full_name"),
users.getString("email"), users.getInt("admin") == 1));
}
for (int i = userList.size() - 1; i >= 0; i--) {
if (username.equals(userList.get(i).getUserName()) && userList.get(i).testPassword(password)) {
System.out.println(userList.get(i).getId());
return userList.get(i).getId();
}
}
return 0;
} catch (Exception e) {
System.out.println("LogIn method error " + e);
return 0;
}
}
JSPページ:
<%@ page import="com.neilbanerjee.SupportMeLogic,java.sql.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
int loggedInID = MyOtherClass.logIn(request.getParameter("username"), request.getParameter("password"));
com.neilbanerjee.User loggedIn;
if (loggedInID == 0) {
loggedIn = null; %>
<%--<jsp:forward page="index.jsp"></jsp:forward>--%>
<%
} else {
loggedIn = MyOtherClass.loggedInUser(loggedInID);
}
%>
<html>
<head>
<title>SupportMeDevices</title>
</head>
<body>
Welcome, <% out.print(loggedIn.getFullName());%>!
</body>
</html>
JDBSドライバのjarファイルは、デプロイされたwarファイルのWEB-INF/libのunerではないため、webappのランタイムクラスパスではありません。 –