1. 程式人生 > >Servlet實現註冊+資料庫連線---連線池

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包

四、 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);
    }

}