前言
一、实验目的:
1.掌握在JSP中使用JDBC连接数据库的步骤及方法。
2.掌握在Tomcat中使用数据库连接池,预编译语句连接数据库。
二、内容和主要步骤:
1.编写页面form.html完成用户ID,姓名,密码,住址的输入,姓名不为空,ID唯一提交给DBProcess.jsp;
2.编写JDBC工具类(名字自定)完成数据库的连接和释放;
3.编写JSP页面DBProcess.jsp,读取form.html中的参数信息,在该页面通过JDBC工具类连接数据库并使用预处理语句完成向用户表user中保存信息。
4在Tomcat中正确配置DBCP,使用数据库连接池,编写页面show.jsp显示用户表user中的所有信息
三、要求:
1. 完成上述任务,编写代码调试并使之运行正确;
2. 写出实验报告(在实验系统完成)
具体操作
form.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>form2</title>
</head>
<body>
<form action="DBProcess.jsp" method="post">
<input name="id" placeholder="请输入id" type="text"><br>
<input name="username" placeholder="请输入用户名" type="text"><br>
<input name="password" placeholder="请输入密码" type="password"><br>
<input name="address" placeholder="请输入地址" type="text">
<br>
<input type="submit" value="注册">
</form>
</body>
</html>
JDBCUtils.java
package test5;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/*JDBC工具类,使用Durid连接池*/
public class JDBCUtils {
private static DataSource ds;
static {
try {
//加载配置文件
Properties pro = new Properties();
//使用ClassLoader加载配置文件,获取字节输入流
InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(is);
//初始化连接池对象
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (Exception e) {
e.printStackTrace();
}
}
/*获取链接池对象*/
public static DataSource getDataSourse() {
return ds;
}
/*获取链接Connection对象*/
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
/*释放资源*/
public static void close(Statement stmt, Connection conn) {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(ResultSet rs, Statement stmt, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
druid.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///day14
# day14为创建的数据库,根据不同的数据库进行修改
username=root
password=5000
initialSize=5
maxActive=10
maxWait=3000
DBProcess.jsp
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.SQLException" %>
<%@ page import="test5.JDBCUtils" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>DBProcess</title>
</head>
<body>
<%
//设置编码格式,防止乱码
request.setCharacterEncoding("utf-8");
response.setHeader("Content-Type", "text/html;charset=utf-8");
String id = request.getParameter("id");
String username = request.getParameter("username");
String password = request.getParameter("password");
String address = request.getParameter("address");
Connection conn = null;
PreparedStatement prstmt = null;
try {
//注册驱动,获取连接对象
conn = JDBCUtils.getConnection();
//开启事务
conn.setAutoCommit(false);
//定义sql
String sql = "insert into user values (?,?,?,?)";
//预编译sql,获取执行sql对象
prstmt = conn.prepareStatement(sql);
//给占位符赋值
prstmt.setString(1, id);
prstmt.setString(2, username);
prstmt.setString(3, password);
prstmt.setString(4, address);
prstmt.executeUpdate();
//提交事务
conn.commit();
} catch (SQLException e) {
//事务回滚
try {
if (conn != null) {
conn.rollback();
}
} catch (SQLException e2) {
e2.printStackTrace();
}
e.printStackTrace();
} finally {
JDBCUtils.close(prstmt, conn);
}
response.sendRedirect("show.jsp");
%>
</body>
</html>
show.jsp
<%@ page import="java.sql.*" %>
<%@ page import="test5.JDBCUtils" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>show</title>
</head>
<body>
<%
//设置编码格式,防止乱码
request.setCharacterEncoding("utf-8");
response.setHeader("Content-Type", "text/html;charset=utf-8");
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
//注册驱动,获取连接对象
conn = JDBCUtils.getConnection();
//创建执行sql对象
stmt = conn.createStatement();
//创建sql语句
String sql = "select * from day14.user";
//执行sql语句
rs = stmt.executeQuery(sql);
//处理结果
while (rs.next()) {//游标向下移动一行,true下一行有数据,false下一行无数据
String id = rs.getString("id");//第一列
String username = rs.getString("username");//第二列
String password = rs.getString("password");//第三列
String address = rs.getString("address");//第四列
response.getWriter().write("<h1>" + id + "<br>" + username + "<br>" + password + "<br>" + address +
"</h1>");
}
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
JDBCUtils.close(rs, stmt, conn);
}
%>
</body>
</html>
运行截图
总结
1.掌握在JSP中使用JDBC连接数据库的步骤及方法。
2.掌握在Tomcat中使用数据库连接池,预编译语句连接数据库。