Servlet实现注册+数据库连接—连接池
本文章只是提供部分源码,一个思路来实现一个简单的数据库注册的功能连接的功能
总体流程:
- 配置c3p0-config.xml,导入jar包。
- 创建JDBCUtils类,实现数据库资源连接和释放
- 创建页面:action指向对应的servlet
- 创建servlet,获取页面输入参数,连接数据库,进行insert操作
- 配置web.xml文件
一、 注册页面
自己填写表单,form标签的action填写对应需要处理的servlet类
二、 c3p0-config.xml配置文件(名字不能改位置在src根目录下,数据库名字,用户名,密码根据自己的填写)
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">
com.mysql.jdbc.Driver
</property>
<property name="jdbcUrl">
jdbc:mysql:///user?useUnicode=true&characterEncoding=utf-8//防止乱码
</property>
<property name="user">
root
</property>
<property name="password">
123
</property>
</default-config>
</c3p0-config>
三、 所需jar包
WebContent/WEB-INF/lib目录下
c3p0.jar/mysql-connector.jar
下载地址:https://download.csdn.net/download/qq_36826635/10605648
四、 Web.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>User</display-name>
<welcome-file-list>
<welcome-file>backend/regist.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>自己的servlet名字</display-name>
<servlet-name>自己的servlet名字</servlet-name>
<servlet-class>自己的servlet路径</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>自己的servle名字</servlet-name>
<url-pattern>自己的访问路径</url-pattern>
</servlet-mapping>
</web-app>
五、 JDBCUtils类
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class JDBCUtils {
private static ComboPooledDataSource pool
= new ComboPooledDataSource();
private JDBCUtils() {}
/**3.提供getConn方法, 用于从连接池中获取一个连接对象 */
public static Connection getConn() throws Exception {
try {
return pool.getConnection();
} catch (SQLException e) {
e.printStackTrace();
throw e;
}
}
/**
* 4.提供close方法, 用于释放资源
* @param conn 连接对象
* @param ps 传输器对象
* @param rs 结果集对象
*/
public static void close(Connection conn, Statement stat,
ResultSet rs) {
if(rs != null ){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
rs = null;
}
}
if(stat != null ){
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
stat = null;
}
}
if(conn != null ){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
conn = null;
}
}
}
}
六、 ProdAddServlet类
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 处理商品的添加请求
* @author:KaiLeon
* @time:2018年8月17日 下午3:45:43
*/
public class ProdAddServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
//0.处理请求参数乱码
request.setCharacterEncoding("utf-8");
//0.处理响应乱码
response.setContentType("text/html;charset=utf-8");
//1.获取添加的用户(请求参数)
String name = request.getParameter("name");
String category = request.getParameter("password");
//2.将用户信息添加到数据库保存
addUser(name,password);
//3.提示用户添加成功,3秒跳转到主页面
PrintWriter out = response.getWriter();
out.write("<h1 style='color:green;magin:15px 5px;'>");
out.write("添加成功,"
+ "3秒跳转到商品列表页面");
out.write("</h1>");
//4.定时刷新,3秒跳转商品列表
response.setHeader("Refresh", "3;url="
+request.getContextPath()
+"主页面");
}
/**
* 将用户信息加入到数据库
*/
private void addUser(
String name, String passwoord) {
Connection conn = null;
PreparedStatement ps = null;
try {
//1.获取数据库连接
conn = JDBCUtils.getConn();
//2.声明sql骨架
String sql = "insert into user values(null,?,?)";
//3.获取传输器
ps = conn.prepareStatement(sql);
//4.设置sql参数
ps.setString(1, name);
ps.setString(2, password);
//5.执行sql语句,添加商品信息
ps.executeUpdate();//注意不要传sql
System.out.println("插入成功");
} catch (Exception e) {
e.printStackTrace();//一定将异常信息打印出来
System.out.println("添加失败");
}finally {
//释放资源
JDBCUtils.close(conn, ps, null);
}
}
protected void doPost(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}