家庭記賬本小程序之后台java代碼部分(java web基礎版二)


1.數據庫連接類

 1 package com.wang.utils;
 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 public class DBUtils {
10                                                               //數據庫名
11     public static String db_url = "jdbc:mysql://localhost:3306/wang?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT";
12     public static String db_user = "root";   //用戶名
13     public static String db_password = "123456"; //密碼
14      
15     public static Connection getConn () {
16         Connection conn = null;
17         try {
18             Class.forName("com.mysql.cj.jdbc.Driver");//加載驅動
19             conn = DriverManager.getConnection(db_url, db_user, db_password);//獲取連接對象
20         } catch (Exception e) {
21             e.printStackTrace();
22         }
23         return conn;
24     }
25      
26     /**
27      * 關閉連接
28      * @param state
29      * @param conn
30      */
31     public static void close (Statement state, Connection conn) {
32         if (state != null) {
33             try {
34                 state.close();
35             } catch (SQLException e) {
36                 e.printStackTrace();
37             }
38         }
39         if (conn != null) {
40             try {
41                 conn.close();
42             } catch (SQLException e) {
43                 e.printStackTrace();
44             }
45         }
46     }
47      
48     /**
49      * 關閉連接
50      * @param rs
51      * @param state
52      * @param conn
53      */
54     public static void close (ResultSet rs, Statement state, Connection conn) {
55         if (rs != null) {
56             try {
57                 rs.close();
58             } catch (SQLException e) {
59                 e.printStackTrace();
60             }
61         }
62         if (state != null) {
63             try {
64                 state.close();
65             } catch (SQLException e) {
66                 e.printStackTrace();
67             }
68         }
69         if (conn != null) {
70             try {
71                 conn.close();
72             } catch (SQLException e) {
73                 e.printStackTrace();
74             }
75         }
76     }
77  
78 }
DBUtils.java

2.實體類

 1 package com.wang.pojo;
 2 
 3 import java.math.BigDecimal;
 4 
 5 public class HomeCost {
 6     
 7     private int id;//id
 8     private String name;//消費名稱
 9     private BigDecimal money;//消費金額
10     private String date;//消費日期
11     private BigDecimal sum;//累計消費
12     
13     
14     public int getId() {
15         return id;
16     }
17     public void setId(int id) {
18         this.id = id;
19     }
20     public String getName() {
21         return name;
22     }
23     public void setName(String name) {
24         this.name = name;
25     }
26     public BigDecimal getMoney() {
27         return money;
28     }
29     public void setMoney(BigDecimal money) {
30         this.money = money;
31     }
32     public String getDate() {
33         return date;
34     }
35     public void setDate(String date) {
36         this.date = date;
37     }
38     public BigDecimal getSum() {
39         return sum;
40     }
41     public void setSum(BigDecimal sum) {
42         this.sum = sum;
43     }
44     
45     
46        
47     @Override
48     public String toString() {
49         return "HomeCost [id=" + id + ", name=" + name + ", money=" + money + ", date=" + date + ", sum=" + sum + "]";
50     }
51     
52     public HomeCost() {}
53     
54     public HomeCost(String name, BigDecimal money) {
55         super();
56         this.name = name;
57         this.money = money;
58     }
59     
60     public HomeCost(int id,String name,BigDecimal money, String date) {
61         super();
62         this.id=id;
63         this.name = name;
64         this.money=money;
65         this.date=date;
66     }
67     public HomeCost(int id, String name, BigDecimal money, String date, BigDecimal sum) {
68         super();
69         this.id = id;
70         this.name = name;
71         this.money = money;
72         this.date = date;
73         this.sum = sum;
74     }
75     
76 }
HomeCost.java

3.持久化Dao層

  1 package com.wang.dao;
  2 
  3 import java.math.BigDecimal;
  4 import java.sql.Connection;
  5 import java.sql.ResultSet;
  6 import java.sql.SQLException;
  7 import java.sql.Statement;
  8 import java.util.ArrayList;
  9 import java.util.List;
 10 
 11 import com.wang.pojo.HomeCost;
 12 import com.wang.utils.DBUtils;
 13 
 14 public class HomeCostDao {
 15     
 16     /**
 17      * updatesql()用來執行 insert/update/delete語句
 18      * @param sql 具體的sql語句
 19      * @return 返回-1,說明執行失敗;否則為影響數據條數
 20      */
 21     public int updatesql(String sql) {
 22         Connection conn = DBUtils.getConn();//獲取連接對象
 23         Statement state = null;
 24         try {
 25             state = conn.createStatement();
 26             return state.executeUpdate(sql);
 27         } catch (Exception e) {
 28             e.printStackTrace();
 29         } finally {
 30             DBUtils.close(state, conn);
 31         }
 32         return -1;       
 33     }
 34     
 35     
 36     //添加
 37     public int add(HomeCost homecost) {
 38         //insert語句,形如insert into 表名(字段1,字段2) values('值1','值2');
 39         String sql = "insert into home(name,money) values('"+ homecost.getName() 
 40             + "','" + homecost.getMoney() +  "')";
 41         return updatesql(sql);
 42     }
 43     
 44     //刪除
 45     public int delete (int id) {
 46         //delete語句,形如delete from 表名 where id='值';
 47         String sql = "delete from home where id='" + id + "'";
 48         return updatesql(sql);
 49     }
 50      
 51     //修改
 52     public int update(HomeCost homecost) {
 53         //update語句,形如update 表名 set 字段1 = '值1',字段2 = '值2'where id = '值3';
 54         String sql = "update home set name='" + homecost.getName() + "', money='" 
 55                 + homecost.getMoney()+ "' where id='" + homecost.getId() + "'";
 56         return updatesql(sql);
 57         
 58     }
 59     
 60     //查詢
 61     public List<HomeCost> query(String keyword) {
 62         String sql = "select * from home WHERE name LIKE '%"+keyword+"%' OR money LIKE '%"+keyword
 63                 +"%'OR date LIKE '%"+keyword+ "%'";
 64         List<HomeCost> list = new ArrayList<>();
 65         Connection conn = DBUtils.getConn();
 66         Statement state = null;
 67         ResultSet rs = null;
 68         try {
 69             state = conn.createStatement();
 70             rs = state.executeQuery(sql);
 71             while (rs.next()) {
 72                 int id = rs.getInt("id");//獲取查詢結果中的id
 73                 String name = rs.getString("name");//獲取查詢結果中的name
 74                 BigDecimal money = rs.getBigDecimal("money");//獲取查詢結果中的money
 75                 String date = rs.getString("date");//獲取查詢結果中的date
 76                 HomeCost homeCost = new HomeCost(id,name,money,date);//調用構造方法賦值
 77                 list.add(homeCost);//添加到list集合中
 78             }
 79         } catch (SQLException e) {
 80             e.printStackTrace();
 81         } finally {
 82             DBUtils.close(rs, state, conn);
 83         }
 84         return list;
 85     }
 86     
 87     //通過id找到某條信息
 88     public HomeCost getHomeCostById(int id) {
 89         String sql = "select * from home where id ='" + id + "'";
 90         Connection conn = DBUtils.getConn();
 91         Statement state = null;
 92         ResultSet rs = null;
 93         HomeCost homeCost = null;
 94         try {
 95             state = conn.createStatement();
 96             rs = state.executeQuery(sql);
 97             while (rs.next()) {
 98                 String name = rs.getString("name");
 99                 BigDecimal money = rs.getBigDecimal("money");
100                 String date = rs.getString("date");
101                 homeCost = new HomeCost(id,name,money,date);         
102             }
103         } catch (Exception e) {
104             e.printStackTrace();
105         } finally {
106             DBUtils.close(rs, state, conn);
107         }
108         return homeCost;
109     }
110     
111     /**
112      * 通過id計算該條消費記錄累計消費金額
113      * @return BigDecimal類型money
114      */
115     public BigDecimal queryMoneySum(int id) {
116         String sql = "select money from home where id <="+id;
117         BigDecimal sum = new BigDecimal("0.00");
118         Connection conn = DBUtils.getConn();
119         Statement state = null;
120         ResultSet rs = null;
121         try {
122             state = conn.createStatement();
123             rs = state.executeQuery(sql);
124             while (rs.next()) {
125                 BigDecimal money = rs.getBigDecimal("money");
126                 //sum是money累加值
127                 sum = sum.add(money);
128             }
129         } catch (SQLException e) {
130             e.printStackTrace();
131         } finally {
132             DBUtils.close(rs, state, conn);
133         }
134         return sum;
135     }
136          
137     //獲取全部數據  
138     public List<HomeCost> list() {
139         String sql = "select * from home";
140         List<HomeCost> list = new ArrayList<>();
141         Connection conn = DBUtils.getConn();
142         Statement state = null;
143         ResultSet rs = null;
144         try {
145             state = conn.createStatement();
146             rs = state.executeQuery(sql);
147             HomeCost homeCost = null;
148             while (rs.next()) {
149                 int id = rs.getInt("id");
150                 BigDecimal sum = queryMoneySum(id);
151                 String name = rs.getString("name");
152                 BigDecimal money = rs.getBigDecimal("money");
153                 String date = rs.getString("date");
154                 homeCost = new HomeCost(id,name,money,date,sum);
155                 list.add(homeCost);
156             }
157         } catch (SQLException e) {
158             e.printStackTrace();
159         } finally {
160             DBUtils.close(rs, state, conn);
161         }
162         return list;
163     }
164     
165     
166 }
HomeCostDao.java

4.事務層Service層

 1 package com.wang.service;
 2 
 3 import java.util.List;
 4 
 5 import com.wang.dao.HomeCostDao;
 6 import com.wang.pojo.HomeCost;
 7 
 8 public class HomeCostService {
 9     
10     HomeCostDao homeCostDao = new HomeCostDao();
11     
12     //新增消費賬單
13     public int add(HomeCost homecost) {
14         return homeCostDao.add(homecost);
15     }
16     
17     //刪除消費賬單
18     public int delete(int id) {
19         return homeCostDao.delete(id);
20     }
21     
22     //修改消費賬單
23     public int update(HomeCost homecost) {
24         return homeCostDao.update(homecost);
25     }
26     
27     //關鍵字查詢
28     public List<HomeCost> query(String keyword) {
29         return homeCostDao.query(keyword);
30     }
31     
32     //全部消費記錄
33     public List<HomeCost> list() {
34         return homeCostDao.list();
35     }
36     
37     //由id查找某條消費記錄
38     public HomeCost getHomeCostById(int id) {
39         return homeCostDao.getHomeCostById(id);
40     }
41     
42 }
HomeCostService.java

5.Web層Servlet層

Servlet創建方式:項目名右鍵new--Servlet,使用@WebServlet注解,省去配置web.xml的時間

  1 package com.wang.web;
  2 
  3 import java.io.IOException;
  4 import java.math.BigDecimal;
  5 import java.util.List;
  6 
  7 import javax.servlet.ServletException;
  8 import javax.servlet.annotation.WebServlet;
  9 import javax.servlet.http.HttpServlet;
 10 import javax.servlet.http.HttpServletRequest;
 11 import javax.servlet.http.HttpServletResponse;
 12 
 13 import com.wang.pojo.HomeCost;
 14 import com.wang.service.HomeCostService;
 15 import com.wang.utils.WebUtils;
 16 
 17 /**
 18  * 訪問地址url:localhost:8080/homeCost/manager/homeCostServlet
 19  * Servlet implementation class HomeCostServlet
 20  */
 21 @WebServlet("/manager/homeCostServlet")
 22 public class HomeCostServlet extends HttpServlet {
 23     private static final long serialVersionUID = 1L;
 24     private HomeCostService homeCostService = new HomeCostService();
 25     
 26     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 27         doPost(request, response);
 28     }
 29 
 30     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 31         String action = request.getParameter("action");
 32         if("add".equals(action)) {
 33             add(request, response);
 34         }else if("delete".equals(action)) {
 35             delete(request, response);
 36         }else if("update".equals(action)) {
 37             update(request, response);
 38         }else if("list".equals(action)) {
 39             list(request, response);
 40         }else if("getHomeCostById".equals(action)) {
 41             getHomeCostById(request, response);
 42         }else if("query".equals(action)) {
 43             query(request, response);
 44         }
 45     }
 46     
 47     //添加消費記錄
 48     protected void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 49         //獲取網頁提交的參數
 50         String name = request.getParameter("name");
 51         BigDecimal money = WebUtils.bigdecimal(request.getParameter("money"), new BigDecimal(0.00));
 52         //封裝成類對象
 53         HomeCost homeCost = new HomeCost(name,money);
 54         //執行添加操作,返回1,添加成功,反之失敗
 55         if(homeCostService.add(homeCost) == 1) {
 56             //頁面重定向
 57             response.sendRedirect(request.getContextPath()+"/manager/homeCostServlet?action=list");
 58         }else {
 59             //請求轉發
 60             request.setAttribute("msg", "添加失敗,聯系管理員");
 61             request.setAttribute("homeCost", homeCost);
 62             request.getRequestDispatcher("/cost_edit.jsp").forward(request, response);
 63         }
 64     }
 65     //刪除消費記錄
 66     protected void delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 67         //獲取id
 68         int id  = WebUtils.parseInt(request.getParameter("id"), 0);
 69         //執行刪除操作,返回1,刪除成功,反之失敗
 70         if (homeCostService.delete(id) == 1) {
 71             //頁面重定向
 72             response.sendRedirect(request.getContextPath()+"/manager/homeCostServlet?action=list");
 73         }else {
 74             //請求轉發
 75             request.setAttribute("msg", "刪除失敗,聯系管理員");
 76             request.getRequestDispatcher("/manager/homeCostServlet?action=list").forward(request, response);
 77         }
 78         
 79     }
 80     //修改消費記錄
 81     protected void update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 82         //獲取參數
 83         int id  = WebUtils.parseInt(request.getParameter("id"), 0);
 84         String name = request.getParameter("name");
 85         BigDecimal money = WebUtils.bigdecimal(request.getParameter("money"), new BigDecimal(0.00));
 86         String date = request.getParameter("date");
 87         //封裝
 88         HomeCost homeCost = new HomeCost(id,name,money,date);
 89         //執行刪除操作,返回1,修改成功,反之失敗
 90         if(homeCostService.update(homeCost) == 1) {
 91             response.sendRedirect(request.getContextPath()+"/manager/homeCostServlet?action=list");
 92         }else {
 93             request.setAttribute("msg", "修改失敗,聯系管理員");
 94             request.setAttribute("homeCost", homeCost);
 95             request.getRequestDispatcher("/cost_edit.jsp").forward(request, response);
 96         }
 97     }
 98     //查詢全部消費記錄
 99     protected void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
100         List<HomeCost> homeCost = homeCostService.list();
101         request.setAttribute("homeCost", homeCost);
102         request.getRequestDispatcher("/manager.jsp").forward(request, response);
103         
104     }
105     //通過id查詢該條消費記錄
106     private void getHomeCostById(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
107         int id  = WebUtils.parseInt(request.getParameter("id"), 0);
108         HomeCost homeCost = homeCostService.getHomeCostById(id);
109         request.setAttribute("homeCost", homeCost);
110         request.getRequestDispatcher("/cost_edit.jsp").forward(request, response);
111     }
112     //通過關鍵詞查詢
113     protected void query(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
114         String keyword=request.getParameter("keyword");
115         List<HomeCost> homeCost = homeCostService.query(keyword);
116         request.setAttribute("homeCost", homeCost);
117         request.getRequestDispatcher("/query.jsp").forward(request, response);
118         
119     }
120 
121 
122 }
HomeCostServlet.java

6.工具類

 1 package com.wang.utils;
 2 
 3 import java.math.BigDecimal;
 4 
 5 public class WebUtils {
 6     
 7     //該類為工具類,封裝常用的函數,catch類型轉換異常,保障程序健壯性
 8     
 9     
10     /**
11      * String轉BigDecimal發生異常返回默認值
12      * @param str  字符串
13      * @param defaultValue 默認值
14      * @return BigDecimal值
15      */
16     public static BigDecimal bigdecimal(String str,BigDecimal defaultValue) {
17         try {
18             return new BigDecimal(str);
19         } catch (Exception e) {
20             //e.printStackTrace();
21         }
22         return defaultValue;
23     }
24     
25     /**
26      * 字符串轉int
27      * @param string 被轉換的字符串
28      * @param defaultValue 默認值
29      * @return int
30      */
31     public static int parseInt(String string,int defaultValue){
32         try {
33             return Integer.parseInt(string);
34         } catch (NumberFormatException e) {
35             //e.printStackTrace();
36         }
37         return defaultValue;
38     }
39     
40 
41 }
WebUtils.java

最終創建Web動態工程如下圖:

 

**************************************************************************************************

注:需額外導入部分jar包,css樣式,js文件,如下:

 

 

附下載鏈接(永久鏈):

鏈接:https://pan.baidu.com/s/1XA99yVkFGCEeY0-9_5RAxg
提取碼:jg0n
復制這段內容后打開百度網盤手機App,操作更方便哦

完整項目下載地址:

鏈接:https://pan.baidu.com/s/1AoVdFsq4eGvPehyFjVqIMw
提取碼:5gvo

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM