我正在用IntelliJ IDEA Ultimate制作一个Java web项目。我有一个类,它有一个方法,该方法接受两个字符串作为输入,查询数据库,并返回一个int值。(这是一个登录方法——接收用户名和密码——如果它们有效,它应该返回用户名的int,否则为0)。
我通过用main方法从Tester类中调用它来测试这个方法,它返回了预期值。然而,当从jsp页面调用这个方法时,它会给我的SQL驱动程序(com.sql.jdbc.驱动程序)一个ClassNotFinceExctive。(我知道是这个方法给了我错误,因为我添加了一个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>
当您从main方法调用它时,类路径中有JDBC驱动程序类,Java可以运行应用程序而不会出错。
但是当您试图从JSP访问这些类时,已部署的war应该包含其中的JDBC驱动程序类。要使已部署的war文件具有所有必要的类,您需要将应用程序需要的所有库包含到“WEB-INF/lib”中。尝试添加它们并重新部署war文件,然后查看。
当Web应用部署在服务器上时,它使用服务器的lib
文件夹的jars和WEB-INF/lib
文件夹的jars。
建议您将javax.servlet.jsp.jstl-1.2.4.jar
和javax.servlet.jsp.jstl-api-1.2.1.jar
放在WEB-INF/lib
中,以便能够在jsp页面上使用jstl。
我最终得到了一个500的错误,这取决于stacktrace,这可能是一个数据格式错误,但我所有的变量都是字符串,所以我根本看不到错误在哪里。此外,我的连接jdbc很好,因为在调试模式下,我可以看到数据库的值,但一旦它进入JSP中,它就不再工作了。你能帮帮我吗? servlet JSP 豆类 BDD连接 堆栈跟踪 我的servlet:
我想使用页面而不是使用页面。但是当使用html页面时,我得到了错误。但是如果我使用jsp页面,我没有得到任何错误。 当我使用
我有一个回收视图充满了项目,当你长按一行,删除按钮出现,允许用户删除行-我设法让工作正常,但我然后想添加一点安全,它通过添加询问用户是否要删除该行的对话框。然而,当我在对话框中调用该方法时,我会得到一个,如下所示: 我正在使用一个界面长按回收器视图行: 这在我的适配器中: 这些是我主要活动中的长单击和删除行方法: 当我从是()方法中的对话框中调用该方法时,该问题发生在deleteItemRow()
问题内容: 我进行了搜索,发现使用jdk 7的QuickTip:VerifyError : 如果您遇到以下类型的错误 那么一个简单的解决方案是添加以下默认JVM参数 如果像我一样在eclipse中进行操作,则转到Window-> Preferences-> Installed JREs->并添加默认参数。 此设置有什么作用?Oracle 刚刚提到它是具有StackMapTable属性的新型类型检查
我是使用片段的新手,我正在尝试从我的主要活动中执行片段方法,该方法比较文本视图,然后删除cookie并加载网站。 这就是我所拥有的: 在主活动中: 在片段中: 结果是:java。lang.NullPointerException:尝试调用虚拟方法“java”。lang.CharSequence android。小装置。文本视图。空对象引用上的getText()' 编辑 抱歉,但忘了提一下,虽然片段
问题内容: 我正在大学学习基础知识,并且希望对Eclipse中的以下错误有所帮助:“对于类型ShopCLI,未定义方法getCost()”& 这是我的代码 问题答案: 方法是在订单类中定义的,而不是在类中定义的。所以你的代码: 应该改为