Servlet实现注册+数据库连接---连接池

Servlet实现注册+数据库连接—连接池


本文章只是提供部分源码,一个思路来实现一个简单的数据库注册的功能连接的功能

总体流程:

  1. 配置c3p0-config.xml,导入jar包。
  2. 创建JDBCUtils类,实现数据库资源连接和释放
  3. 创建页面:action指向对应的servlet
  4. 创建servlet,获取页面输入参数,连接数据库,进行insert操作
  5. 配置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&amp;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);
    }

}
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值