实体类 entity
import java.util.Date;public class Account {private Integer id;private String name;//标题private Date time;//时间private Integer category;//类别:0不限、1支出、2收入、3转账、4借出、5借入、6还入、7还出private Double price;//金额private String explan;public Account() {}public Account(String name, Date time, Integer category, Double price, String explan) {this.name = name;this.time = time;this.category = category;this.price = price;this.explan = explan;}public Account(Integer id, String name, Date time, Integer category, Double price, String explan) {this.id = id;this.name = name;this.time = time;this.category = category;this.price = price;this.explan = explan;}// get set toString方法省略
}
Dao层
package dao;import entity.Account;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import util.DBUtils;import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;public class AccountDao {private QueryRunner queryRunner = new QueryRunner(DBUtils.getDataSource());/*** 获取所有账单信息* 当category为0时查询所有** @return*/public List<Account> getAccountList(int category, Date startTime, Date endTime) {String sql = "select id,name,`time`,category,price,explan from account where 1=1";List param = new ArrayList();if (category != 0) {sql += " and category=? ";param.add(category);}if (startTime != null) {sql += " and `time`>? ";param.add(startTime);}if (endTime != null) {sql += " and `time`<? ";param.add(endTime);}try {return queryRunner.query(sql, new BeanListHandler<>(Account.class), param.toArray());} catch (SQLException e) {e.printStackTrace();}return null;}/*** 添加账单* @param account* @return*/public int addAccount(Account account){String sql = "insert into account(name,`time`,category,price,explan) values(?,?,?,?,?)";try {return queryRunner.update(sql,account.getName(),account.getTime(),account.getCategory(),account.getPrice(),account.getExplan());} catch (SQLException e) {e.printStackTrace();}return 0;}
}
service层
package service;import dao.AccountDao;
import entity.Account;import java.util.Date;
import java.util.List;public class AccountService {/*** 根据category* 查询所有账单* @param category 要查的类别* @return*/public List<Account> getAccountList(int category, Date startTime, Date endTime){AccountDao accountDao = new AccountDao();return accountDao.getAccountList(category,startTime,endTime);}/*** 记账(添加账单)* @param account* @return*/public int addAccount(Account account){AccountDao accountDao = new AccountDao();return accountDao.addAccount(account);}
}
contrallor层
package servlet;import entity.Account;
import service.AccountService;
import util.ParameterUtil;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;/*** 根据表单输入* 获取账单信息*/
@WebServlet(name = "AccountListServlet", urlPatterns = "/accountlist")
public class AccountListServlet extends HttpServlet {private AccountService accountService = new AccountService();private SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {Integer category = ParameterUtil.getInteger(request, "category");String startTime = ParameterUtil.getString(request, "startTime");String endTime = ParameterUtil.getString(request, "endTime");List<Account> accountList = null;if (startTime != null) {try {if (endTime != null) {accountList = accountService.getAccountList(category, sf.parse(startTime), sf.parse(endTime));} else {accountList = accountService.getAccountList(category, sf.parse(startTime), null);}} catch (ParseException e) {e.printStackTrace();}} else {accountList = accountService.getAccountList(category, null, null);}request.setAttribute("accountList", accountList);for (Account account : accountList) {System.out.println(account);}request.getRequestDispatcher("accountlist.jsp").forward(request, response);}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}
import entity.Account;
import service.AccountService;
import util.ParameterUtil;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;/*** 记账功能*/
@WebServlet(name = "AddAccountServlet", urlPatterns = "/add")
public class AddAccountServlet extends HttpServlet {private AccountService accountService = new AccountService();private SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String name = ParameterUtil.getString(request,"name");String time = ParameterUtil.getString(request,"time");Integer category = ParameterUtil.getInteger(request,"category");Double price = ParameterUtil.getDouble(request,"price");String explan = ParameterUtil.getString(request,"explan");try {Account account = new Account(name,sf.parse(time),category,price,explan);int res = accountService.addAccount(account);request.setAttribute("message",res>0?"记账成功":"记账失败");request.getRequestDispatcher("accountlist.jsp").forward(request,response);} catch (ParseException e) {e.printStackTrace();}}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}
过滤器
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;@WebFilter("/*")
public class EncodingFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {servletRequest.setCharacterEncoding("UTF-8");servletResponse.setContentType("text/html;charset=UTF-8");filterChain.doFilter(servletRequest, servletResponse);}@Overridepublic void destroy() {}
}
工具类
package util;import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;import java.io.InputStream;
import java.sql.*;
import java.util.Properties;public class DBUtils {private static final Properties PROPERTIES = new Properties();private static ThreadLocal<Connection> threadLocal = new ThreadLocal<>();//ThreadLocal能保证当前线程共享同一个对象private static DruidDataSource dataSource;//数据源 连接池public static DruidDataSource getDataSource() {return dataSource;}static {InputStream is = DBUtils.class.getResourceAsStream("/db.properties");try {PROPERTIES.load(is);//创建连接池dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(PROPERTIES);} catch (Exception e) {e.printStackTrace();}}public static Connection getConnection() {try {Connection connection = threadLocal.get();//先去拿,如果有的话,代表当前线程曾经打开过连接if (connection == null) {//当前线程没有打开过连接//连接池获取连接connection = dataSource.getConnection();threadLocal.set(connection);//将connection存入ThreadLocal,能保证当前线程使用的是同一个connection}return connection;} catch (SQLException e) {e.printStackTrace();}return null;}
}
package util;import javax.servlet.http.HttpServletRequest;public class ParameterUtil {//从请求中获取String类型的参数public static String getString(HttpServletRequest request, String name) {String param = request.getParameter(name);if (param == null || param.trim().length() == 0) {return null;}return param.trim();}public static Integer getInteger(HttpServletRequest request, String name) {String param = getString(request, name);if (param == null) {//没传参数return null;}try {return Integer.parseInt(param);} catch (NumberFormatException e) {//如果参数不是数字格式e.printStackTrace();}return null;}public static Double getDouble(HttpServletRequest request, String name) {String param = getString(request, name);if (param == null) {//没传参数return null;}try {return Double.parseDouble(param);} catch (NumberFormatException e) {//如果参数不是数字格式e.printStackTrace();}return null;}}
配置文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/bank?useSSL=false&characterEncoding=utf-8
username=root
password=123456
initialSize=10
maxActive=50
minIdle=5
maxWait=5000
前端
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--Created by IntelliJ IDEA.User: EVA_01Date: 2020/7/24 0024Time: 20:19To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>账单</title>
</head>
<body>
<div align="center"><div><h2>记账管理</h2></div><br/><div style="width: 60%"><form method="post" action="accountlist">类型:<select name="category"><option value="0">不限</option><option value="1">支出</option><option value="2">收入</option><option value="3">转账</option><option value="4">借出</option><option value="5">借入</option><option value="6">还入</option><option value="7">还出</option></select>&nbsp;&nbsp;时间:从<input type="text" name="startTime" >到<input type="text" name="endTime">&nbsp;&nbsp;<input type="submit" value="搜索">&nbsp;&nbsp;<a href="addaccount.jsp"><button type="button">记账</button></a></form><c:if test="${!requestScope.accountList.isEmpty()}"><table border="1" style="border-color: white ;text-align: center" width="100%"><tr bgcolor="#7cfc00"><td>标题</td><td>记账时间</td><td>类别</td><td>金额</td><td>说明</td></tr><c:forEach items="${requestScope.accountList}" var="account" varStatus="i"><tr bgcolor="${i.count%2!=0?'yellow':''}"><td>${account.name}</td><td>${account.time}</td><td><c:choose><c:when test="${account.category==1}">支出</c:when><c:when test="${account.category==2}">收入</c:when><c:when test="${account.category==3}">转账</c:when><c:when test="${account.category==4}">借出</c:when><c:when test="${account.category==5}">借入</c:when><c:when test="${account.category==6}">还入</c:when><c:when test="${account.category==7}">还出</c:when><c:otherwise>不限</c:otherwise></c:choose></td><td>${account.price}</td><td>${account.explan}</td></tr></c:forEach></c:if><c:if test="${requestScope.accountList.isEmpty()}"><div align="center"><h3>没有任何账单记录</h3></div></c:if></table>${requestScope.message}</div>
</div>
</body>
</html>
<%--Created by IntelliJ IDEA.User: EVA_01Date: 2020/7/25 0025Time: 9:45To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>记账</title><style>body {width: 35%;margin: 0 auto;}div {align-content: center;}.title {text-align: center;}.modal-body {width: auto;align-content: center;}.tp input {width: 182px;}.name input {width: 420px;}.explan textarea {width: 400px;}.button {margin-left: 160px;}</style>
</head>
<body>
<form method="post" action="add"><div><div class="title"><h2>记账</h2></div><div class="modal-body"><div>类型:<input type="radio" name="category" value="1">支出<input type="radio" name="category" value="2">收入<input type="radio" name="category" value="3">转账<input type="radio" name="category" value="4">借出<input type="radio" name="category" value="5">借入<input type="radio" name="category" value="6">还入<input type="radio" name="category" value="7">还出</div><div class="name">标题:<input type="text" name="name"></div><div class="tp"><span>日期:<input type="text" name="time"></span><span>金额:<input type="text" name="price" value="0"></span></div><div class="explan"><span>说明:</span><textarea name="explan"></textarea></div><div class="button"><input type="reset" value="重置"><input type="submit" value="保存"><a href="accountlist.jsp"><button type="button">返回</button></a></div></div></div>
</form>
</body>
</html>

记账系统java web相关推荐

  1. 饿团外卖系统-Java Web版

    饿团外卖系统-Java Web版 项目包含文件: 1.etwm.sql(数据库文件) 2.项目源码 3.饿团外卖系统_需求分析.doc 4.饿团外卖系统_概要设计.doc 5.饿团外卖系统_数据库设计 ...

  2. 基于ssm影视论坛系统java web jsp电影评价影评系统源码和文档

    开发环境: jdk 8 intellij idea tomcat 8.5.40 mysql 5.7 所用技术: Spring+SpringMVC+MyBatis layui jsp 演示视频: 基于s ...

  3. java+mysql 基于ssm的医院预约挂号系统(java ,web)

    项目编号:jsp268ssm医院预约挂号系统(java,web) 运行环境: 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:Tomcat7/Tomcat8 使用框架:Spr ...

  4. 家庭收支记账系统--java项目练习

    一.功能介绍: 采用分级菜单模式 主界面为菜单选择: 通过从键盘输入数字来进行记录家庭的收入.支出,并且打印收支明细表等功能 二.代码演示 代码由FamilyAccount Java文件和自定义Uti ...

  5. java实现模拟考试系统,Java Web应用开发—— 在线模拟考试系统-毕业设计

    Java Web应用开发-- 在线模拟考试系统-毕业设计 毕毕 业业 设设 计(论计(论 文)文) 题题 目目 Java Web 应用开发 在线模拟考试系统的设计与实现 学学 院院 计算机学院 专专 ...

  6. java web 微博系统,java web网站集成新浪微博登录

    给网站添加第三方登录的功能,研究了下新浪微博登录的接口,本来想使用它提供的那种js代码库的方式,结果始终搞不定,由于不精通js只能够放弃.下载了个java的SDK包:weibo4j-oauth2-be ...

  7. java电商项目源码_电子商务系统+java+web+完整项目+包含源码和数据库Java实用源码...

    本篇我们根据架构图进行代码的构建.根据微服务化设计思想,结合spring cloud一些优秀的项目,如服务发现.治理.配置化管理.路由负载.安全控制等优秀解决方案,使用Maven技术将框架进行模块化. ...

  8. 基于java家庭理财记账系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

    基于java家庭理财记账系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java家庭理财记账系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 本源码技术栈: ...

  9. Java基础项目:小鲨鱼记账系统

    小鲨鱼记账管理系统 最近做的项目都是基础项目,今天刚开学报到,顺便敲了下. 这个项目比较简单,可以使用SpringMVC进行扩展.但是想扩展的大佬可以在做一个web的界面,使用前端框架Vuejs + ...

  10. 计算机毕业设计JAVA家庭理财记账系统mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA家庭理财记账系统mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA家庭理财记账系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目 ...

最新文章

  1. arc0 oracle,ORA-01194错误恢复方法一
  2. vue 路由传参 params 与 query两种方式的区别(转载)
  3. Windows7下Caffe的应用---在Win7下使用VS2015、Camke、Anaconda3配置Caffe CPU版本
  4. 十大经典数据挖掘算法之k-means
  5. u盘插入后计算机内没有选项,U盘插到电脑,无法读取,属性里面空间全是0是怎么回事?...
  6. dc游戏java_极限飞车-穿越峡谷(DC出品)
  7. 一个空值_3秒快速、大批量删除或修改Excel中的空值 | 学术小课堂
  8. 2018百度之星程序设计大赛-资格赛P1002子串查询(前缀和)
  9. python进程socket通信_python3 进程间通信之socket.socketpair()
  10. 系统动力学Vensim的使用
  11. 阿里云移动推送iOS
  12. java流程控制试讲_java试讲.ppt
  13. 解读机械图样——局部视图
  14. Kettle构建Hadoop ETL实践(八-2):维度表技术
  15. CAD能打开PDF格式吗?这样做可以快速实现
  16. 【Spark】(五)Spark Transformation(转换算子) 和 Action(执行算子)
  17. [RK3399][Android7.1] Display中的VOP模块介绍
  18. 美国法案TSCA测试,TSCA报告涵盖内容
  19. ESP8266 AP模式热点
  20. [转]量化必读:Tick 数据到底是什么?为什么很难找到可靠的交易数据?

热门文章

  1. 绿色版DNF(地下城勇士)全键盘连发工具,支持DNF双开
  2. [数论]JZOJ 5946 时空幻境
  3. 联想笔记本键盘亮屏幕不亮_联想笔记本电脑开机键亮但是黑屏?键盘没反应?
  4. 《强化学习》-读书笔记-第三章 有限马尔科夫决策过程
  5. android 扫雷小游戏
  6. 人人网 校内- 日志分享
  7. 合肥科学岛安光所计算机应用,国家大气污染防治攻关联合中心成立 合肥科学岛安光所承担重任...
  8. 噪音测试软件+安卓,分贝噪音测试软件
  9. 蓝桥杯C语言---基础练习
  10. 小米路由器安装MT工具