最近在做JSP的数据库连接操作时,一直出现java.lang.ClassNotFoundException: com.mysql.jdbc.Driver的问题。
这是定义的dataBean:
public class dataBean {
private Connection con;
public dataBean(){
String CLASSFROENAME = "com.mysql.jdbc.Driver";
String SERVANDDB = "jdbc:mysql://localhost:3306/jsp";
String USERNAME = "root";
String PASSWORD = "root";
try {
Class.forName(CLASSFROENAME);
con = DriverManager.getConnection(SERVANDDB,USERNAME,PASSWORD);
} catch (ClassNotFoundException e) {
System.out.println("ClassNotFoundException!!!");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("SQLException!!!");
e.printStackTrace();
}
}
public ResultSet getData(){
try {
Statement stm = con.createStatement();
ResultSet result = stm.executeQuery("SELECT * FROM list");
return result;
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
}
同样的配置参数使用PHP连接完全没有问题,排除参数错误。
缺少驱动包可以在Mysql官网下载最新的驱动包导入。
将下载的jar文件导入到Module/Dependencies:
但是此时还是会出现java.lang.ClassNotFoundException: com.mysql.jdbc.Driver的问题。
最后将这个jar文件导入到工程的web/WEB-INF/lib中,再次重启服务器,可以正常连接。
在Tomcat的conf/server.xml中配置
打开tomcat的conf/server.xml文件,找到节点:
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
GlobalNamingResources>
在该节点中加入相关的池配置信息:
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
<Resource name="jdbc/mysqlds"
auth="Container"
type="javax.sql.DataSource"
username="root"
password="root"
maxIdle="30"
maxWait="10000"
maxActive="100"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/jsp" />
GlobalNamingResources>
在tomcat的conf/context.xml文件中的节点中加入如下内容
"jdbc/mysqlds" global="jdbc/mysqlds" type="javax.sql.DataSource"/>
然后在web项目中的WEB-INF目录下的web.xml中配置
<resource-ref>
<description>mysql数据库连接池</description>
<res-ref-name>jdbc/mysqlds</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
重启服务器,解决问题。