JDBC连接数据库(Servlet+JSP)

  JDBC(Java Database connectivity),是连接数据库的一种方式。后面的框架Mybatis和Hibernate等都封装的是JDBC。在JDBC中常用的API有4个:DriverManager、Connection、Statement、ResultSet。

代码演示:

  首先要导入jar包: jstl_el、jstl-1.2_1、mysql-5.1.10

User.java

 1 public class User {
 2     private int id;
 3     private String age;
 4     private String name;
 5 
 6     public int getId() {
 7         return id;
 8     }
 9 
10     public void setId(int id) {
11         this.id = id;
12     }
13 
14     public String getAge() {
15         return age;
16     }
17 
18     public void setAge(String age) {
19         this.age = age;
20     }
21 
22     public String getName() {
23         return name;
24     }
25 
26     public void setName(String name) {
27         this.name = name;
28     }
29 }

QueryServlet.java

  1 package cn.woo.servlet;
  2 
  3 import java.io.IOException;
  4 import java.sql.ResultSet;
  5 import java.sql.SQLException;
  6 import java.util.ArrayList;
  7 import java.util.List;
  8 
  9 import javax.servlet.ServletException;
 10 import javax.servlet.http.HttpServlet;
 11 import javax.servlet.http.HttpServletRequest;
 12 import javax.servlet.http.HttpServletResponse;
 13 
 14 import cn.woo.entity.User;
 15 import cn.woo.util.DBUtil;
 16 
 17 /**
 18  * 类说明:接收请求的Servlet
 19  * 
 20  * @author wyh
 21  * @version 创建时间:2018年8月23日 下午2:46:29
 22  */
 23 public class QueryServlet extends HttpServlet {
 24 
 25     /**
 26      * 
 27      */
 28     private static final long serialVersionUID = 1L;
 29 
 30     @Override
 31     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 32         doPost(req, resp);
 33     }
 34 
 35     @Override
 36     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 37         
 38         req.setCharacterEncoding("utf-8");
 39         resp.setCharacterEncoding("utf-8");
 40         
 41         String action = req.getParameter("action");
 42         List<User> userList = new ArrayList<>();
 43         
 44         switch (action) {
 45         case "getUserList":
 46             try {
 47                 ResultSet resultSet = DBUtil.query("select * from user");
 48                 // 遍历结果集【一行行数据读取】,将结果集放置到实体对象中
 49                 while (resultSet.next()) {
 50                     User user = new User();
 51                     user.setId(resultSet.getInt("id"));
 52                     user.setAge(String.valueOf(resultSet.getInt("age")));
 53                     user.setName(resultSet.getString("name"));
 54                     userList.add(user);
 55                 }
 56                 req.setAttribute("userList",userList);
 57                 // 跳转至展示页面
 58                 req.getRequestDispatcher("../UserList.jsp").forward(req, resp);
 59             } catch (SQLException e) {
 60                 e.printStackTrace();
 61             }finally {
 62                 // 释放资源
 63                 DBUtil.closeResource();
 64             }
 65             break;
 66         case "deleteUserInfo":
 67             try {
 68                 String id = req.getParameter("id");
 69                 int delResult = DBUtil.insertOrDeleteOrUpdate("delete from user where id='"+id+"'");
 70                 if(delResult>0) {
 71                     System.out.println("删除成功");
 72                 }
 73             } catch (SQLException e) {
 74                 e.printStackTrace();
 75             }
 76             break;
 77         case "updateUserName":
 78             try {
 79                 String id = req.getParameter("id");
 80                 String name = req.getParameter("name");
 81                 int updateResult = DBUtil.insertOrDeleteOrUpdate("update user set name='"+name+"' where id='"+id+"'");
 82                 if(updateResult>0) {
 83                     System.out.println("更新用户名成功");
 84                 }
 85             } catch (SQLException e) {
 86                 e.printStackTrace();
 87             }
 88             break;
 89         case "insertUserInfo":
 90             try {
 91                 String addAge = req.getParameter("age");
 92                 String addName = req.getParameter("name");
 93                 int addResult = DBUtil.insertOrDeleteOrUpdate("insert into user(age,name) value('"+addAge+"','"+addName+"')");
 94                 if(addResult>0) {
 95                     System.out.println("新增用户成功");
 96                 }
 97             } catch (SQLException e) {
 98                 e.printStackTrace();
 99             }
100             break;
101         default:
102             break;
103         }
104     }
105 }

UserList.jsp

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>用户信息列表</title>
 9 <style type="text/css">
10     *{
11         padding: 0;
12         margin: 0;
13     }
14     
15     table{
16         margin: 300px auto;
17     }
18     
19     td{
20         100px;
21         text-align: center;
22     }
23 </style>
24 </head>
25 <body>
26     <table border="1" cellpadding="0" cellspacing="0">
27         <tr>
28             <td>序号</td>
29             <td>工号</td>
30             <td>年龄</td>
31             <td>姓名</td>
32         </tr>
33         <c:forEach items="${ userList }" var="user" varStatus="status">
34             <tr>
35                 <td>${ status.index+1 }</td>
36                 <td>${ user.id }</td>
37                 <td>${ user.age }</td>
38                 <td>${ user.name }</td>
39             </tr>
40         </c:forEach>
41     </table>
42 </body>
43 </html>

DBUtil.java

 1 package cn.woo.util;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.ResultSet;
 6 import java.sql.SQLException;
 7 import java.sql.Statement;
 8 
 9 /**
10 * 类说明:数据库连接工具类
11 * @author wyh
12 * @version 创建时间:2018年8月23日 下午3:58:55
13 */
14 public class DBUtil {
15     
16     private static Connection connection;
17     private static Statement statement;
18     
19     static {
20         try {
21             DriverManager.registerDriver(new com.mysql.jdbc.Driver());
22             // 获取连接 【并设置编码方式】
23             connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/woo?unicode=true&characterEncoding=UTF-8","root","root");
24         } catch (SQLException e) {
25             e.printStackTrace();
26         }
27     }
28     
29     public static Statement getStatement() throws SQLException {
30         // 获取statement 【用于执行SQL语句】
31         statement = connection.createStatement();
32         return statement;
33     }
34     
35     /**
36      * 查
37      * @param sql 执行查询的sql语句
38       * @return resultSet 返回的结果集
39      * @throws SQLException 
40      */
41     public static ResultSet query(String sql) throws SQLException {
42         return getStatement().executeQuery(sql);
43     }
44     
45     /**
46      * 增/删/改 通用方法
47      * @param sql 要执行的SQL语句
48       * @return 执行结果 >0表明执行成功
49      * @throws SQLException 
50      */
51     public static int insertOrDeleteOrUpdate(String sql) throws SQLException {
52         return getStatement().executeUpdate(sql);
53     }
54     
55     
56     /**
57      * 释放资源
58      */
59     public static void closeResource() {
60         try {
61             if(statement!=null) {
62                 statement.close();
63             }
64             if(connection!=null) {
65                 connection.close();
66             }
67         }catch(Exception e) {
68             e.printStackTrace();
69         }
70     }
71 }
原文地址:https://www.cnblogs.com/wooyoohoo/p/9526290.html