Servlet實現註冊+資料庫連線---連線池
阿新 • • 發佈:2019-02-08
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包
四、 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);
}
}