在JSP上连接MySQL数据库

驱动准备

你需要下载Java Database Connector for MySQL,本文提供一个来自于菜鸟教程的jar包,版本号为5.1.39。点击此处下载。将此文件放入tomcat目录的lib文件夹中。

配置Tomcat的连接池

不配置连接池,在使用驱动包的时候tomcat会返回500 Internal Server Error,提示ClassNotFoundException(异常:找不到类),可以通过配置它的连接池来解决问题。

修改server.xml

修改位于tomcat目录下的conf/server.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" />

<!--配置mysql数据库的连接池, 需要做的额外步骤是将mysql的Java驱动类放到tomcat的lib目录下-->
<Resource name="jdbc/mysqlds"
auth="Container"
type="javax.sql.DataSource"
username="$UNAME"
password="$PWD"
maxIdle="30"
maxWait="10000"
maxActive="100"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/$DBNAME" />

</GlobalNamingResources>

其中 $DBNAME位置放你的数据库名,$UNAME位置放置你的数据库用户名,$PWD位置放置你的数据库密码

修改context.xml

修改位于tomcat目录下的conf/context.xml,在<Context>标签内我们需要添加内容。

<Context>

<!--这部分为文件自带内容,不作改动-->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

<!--以下为在本文件中的添加内容-->
<ResourceLink name="jdbc/mysqlds" global="jdbc/mysqlds" type="javax.sql.DataSource"/>

</Context>

修改web.xml

修改位于tomcat目录下的网页项目文件夹下的WEB-INF/web.xml文件,在

<web-app>内我们需要添加内容。

<?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_4_0.xsd"
version="4.0">

<!--以下为在本文件中的添加内容-->
<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>

</web-app>

配置之后,需重启tomcat。之后连接数据库的时候就不会出现ClassNotFoundException了。

JSP连接数据库

给出一段DEMO:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>

<html>
<head>
<title>通过JSP打开数据表</title>
</head>
<body>

<%
Class.forName("com.mysql.jdbc.Driver"); //驱动程序名
String url = "jdbc:mysql://localhost:3306/$DBNAME"; //数据库名
String username = "$UNAME"; //数据库用户名
String password = "$PWD"; //数据库用户密码
Connection conn = DriverManager.getConnection(url, username, password); //连接数据库并返回连接状态

if(conn != null){
out.print("数据库连接成功!");
out.print("<br />");
Statement stmt = null;
ResultSet rs = null;
String sql = "SELECT * FROM $TABLENAME;"; //查询语句
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
out.print("查询结果:");
out.print("<br />");
out.println("id"+" "+"uname"+" "+"pwd");
out.print("<br />");
while (rs.next()) {
out.println(rs.getString("id")+" "+rs.getString("uname")+" "+rs.getString("passwd")+"<br />"); //将查询结输出
}
}
else{
out.print("连接失败!");
}

%>
</body>
</html>

其中 $DBNAME位置放你的数据库名,$UNAME位置放置你的数据库用户名,$PWD位置放置你的数据库密码,$TABLENAME位置放置你操作的数据表表名。

ResultSet.getString()函数接受字段名作为参数返回对应一条记录的该字段的值,可以以此读取信息。

上方Demo实现了读取一个数据表中id、uname、pwd字段的所有数据的JSP代码。

通过更改SQL语句可以实现更多的操作,此处不再赘述。