当我尝试在我的应用程序中登录时,JSP和IntelliJ IDE中的新功能遇到错误java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
。我在开发JSP项目时使用IntelliJ作为我的IDE。 如何将Mysql连接到JSP项目?
以下是 LoginDao.java 类
package com.huza.schooldynamic;
/**
* Created by HUZY_KAMZ on 9/8/2016.
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class LoginDao {
public static boolean validate(String name, String pass) {
boolean status = false;
Connection conn = null;
PreparedStatement pst = null;
ResultSet rs = null;
String url = "jdbc:mysql://localhost:3306";
String dbName = "form";
String driver = "com.mysql.jdbc.Driver";
String userName = "root";
String password = "namungoona";
try {
Class.forName(driver).newInstance();
conn = DriverManager
.getConnection(url + dbName, userName, password);
pst = conn
.prepareStatement("select * from login where user=? and password=?");
pst.setString(1, name);
pst.setString(2, pass);
rs = pst.executeQuery();
status = rs.next();
} catch (Exception e) {
System.out.println(e);
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (pst != null) {
try {
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return status;
}
}
这是我的servlet类 LoginServlet.java
package com.huza.schooldynamic;
/**
* Created by HUZY_KAMZ on 9/8/2016.
*/
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String n=request.getParameter("username");
String p=request.getParameter("userpass");
HttpSession session = request.getSession(false);
if(session!=null)
session.setAttribute("name", n);
if(LoginDao.validate(n, p)){
RequestDispatcher rd=request.getRequestDispatcher("welcome.jsp");
rd.forward(request,response);
}
else{
out.print("<p style=\"color:red\">Sorry username or password error</p>");
RequestDispatcher rd=request.getRequestDispatcher("index.jsp");
rd.include(request,response);
}
out.close();
}
}
这是我的 index.jsp 文件
<%--
Created by IntelliJ IDEA.
User: HUZY_KAMZ
Date: 9/8/2016
Time: 5:31 PM
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>School Management System</title>
</head>
<body>
<br>
<br>
<br>
<center>
<form action="loginServlet" method="post">
<fieldset style="width: 300px">
<legend> Login here </legend>
<table>
<tr>
<td>User ID</td>
<td><input type="text" name="username" required="required" /></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="userpass" required="required" /></td>
</tr>
<tr>
<td><input type="submit" value="Login" /></td>
</tr>
</table>
</fieldset>
</form>
</center>
</body>
</html>
这是我的 welcome.jsp 文件
<%--
Created by IntelliJ IDEA.
User: HUZY_KAMZ
Date: 9/8/2016
Time: 6:00 PM
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Welcome <%=session.getAttribute("name")%></title>
</head>
<body>
<h3>Login successful!!!</h3>
<h4>
Hello,
<%=session.getAttribute("name")%></h4>
</body>
</html>
最后这是我的 web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>com.huza.schooldynamic.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
所以目前我已经尝试在IntelliJ IDE中查看Mysql,但似乎我不知道如何将它连接到项目,当我运行应用程序时我尝试登录此错误来自IDE { {1}}。
以下是IDE的图片
答案 0 :(得分:3)
ClassNotFoundException
告诉您它在类路径中找不到类com.mysql.jdbc.Driver
。换句话说,您在项目中定义的库JAR中的非JAR包含该类。
该特定类是java.sql.Driver
接口的MySQL特定实现。 (如果你不明白界面是什么,你可以从它开始Java tutorial's page。但是你想要更多地了解它,因为接口是OOP的核心概念)。
您的DAO课程表示要在String driver = "com.mysql.jdbc.Driver";
行中使用此特定潜水员。但是当代码运行时,它没有找到该名称的类。因此,您需要将该类添加到类路径中。通过转到Maven Central的Advance Search Page,您可以搜索该(或任何其他)类来确定哪些库具有它。在这种特殊情况下,它位于mysql-connector-java
JAR;其最新版本是v6.0.4。
所以你需要将mysql-connector-java
JAR添加到你的类路径中,即将它作为库添加到你的Java项目中。你如何做到这一点取决于你如何设置你的项目。
如果您使用的是Maven,则可以添加所需的依赖项:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.4</version>
</dependency>
如果您使用的是Gradle,请添加
compile 'mysql:mysql-connector-java:6.0.4'
如果您在常春藤使用Ant,请添加
<dependency org="mysql" name="mysql-connector-java" rev="6.0.4" />
我从maven central的那个JAR文件的information page复制的所有声明。
如果您没有使用上述构建工具之一,则需要以另一种方式将JAR添加到项目中。例如,如果您只是在IDEA中使用项目配置,请转到项目结构( Ctrl + Shift + Shift + S / ⌘ ; )并将新库添加到模块中。有关详细信息,请参阅Library IntelliJ IDEA帮助页面及其引用的页面。