### 项目概述
**本项目为一个记账系统,实现用户进行注册登录后,进入主页面,对个人账单数据进行增啥改查,并提供丰富的查询聚合统计功能。**
**项目主要用到JSP做页面展示,使用Servlet,作为做后端数据的处理工作,使用MySql作为数据存储,项目采用标准的MVC架构实现即”模型-视图-控制器“三层架构实现(View--->Controler--->Service--->Dao),开发者可以通过个人需求对页面内容进行分层开发。**
**主要采用技术:**
**前端:bootstrap,javascript,JQuery,html,css**
**后端:Java,SQL,servlet**
### 1.需求说明
**1.用户注册**
用户注册提交表单后需要进行数据的校验功能,输入框不能为空,两次输入的密码必须一致,用户名和密码长度符合需求。
**2.用户登录**
用户输入个人正确的账号密码进入主页。输入数据必须不能为空,且必须符合长度规范才能提交。
**3.用户主页**
用户进入主页后,根据用户的个人ID,在账务数据库中查询,只属于个人的账户信息,并在页面左侧边栏显示账务的聚合信息,在中间部分主页显示具体的数据表单。
**4.用户数据查询**
显示所有数据,当用户进入主页后,直接根据用户ID查询当前用户的所有账务信息,并显示在页面,用户点击类型或时间查询,弹出对应的模态框,用户根据模态框的提示信息,填写对应格式的数据,如果数据格式不匹配,则表单无法进行提交。
**5.用户删除数据**
当用户点击对应信息的删除按钮,弹出模态框,提示用户是否确认删除当前信息,用户点击确认后,则将当前数据删除,并自动刷新当前页面
**6.用户新增数据**
当用户点击新增数据时,弹出对应新增数据表单,用户根据提示信息,将正确的内容输入,点击提交按钮即可提交数据,如果用户输入的数据不符合规范,页面弹出对应的提示,让用户填写符合格式的数据。
**7.用户修改数据**
当用户点击对应数据的修改按钮时,当前数据的信息回显到,修改数据模态框中,用户根据个人情况对数据进行修改,并且提交的数据必须是符合规范的,如果数据不符合格式要求,提示用户填写正确格式的数据。
**8.用户退出登录**
当用户退出登录后,用户不可通过返回页面继续修改页面数据,实现方式为,当用户点击 退出按钮,就销毁当前session,用户无法再修改数据。
### 3.项目展示
#### 1.登录页面
![image-20230319155848386](https://pic-1313413291.cos.ap-nanjing.myqcloud.com/image-20230414231510732.png)
#### 2.注册页面
![image-20230414231527743](https://pic-1313413291.cos.ap-nanjing.myqcloud.com/image-20230414231527743.png)
#### 3.主页面
![image-20230319155935318](https://pic-1313413291.cos.ap-nanjing.myqcloud.com/image-20230319155935318.png)
#### 4.增删改查模态框
![image-20230319155957094](https://pic-1313413291.cos.ap-nanjing.myqcloud.com/image-20230319155957094.png)
![image-20230319160027208](https://pic-1313413291.cos.ap-nanjing.myqcloud.com/image-20230319160027208.png)
![image-20230319160048627](https://pic-1313413291.cos.ap-nanjing.myqcloud.com/image-20230319160048627.png)
![image-20230319160107824](https://pic-1313413291.cos.ap-nanjing.myqcloud.com/image-20230319160107824.png)
![image-20230319160128063](https://pic-1313413291.cos.ap-nanjing.myqcloud.com/image-20230319160128063.png)
### 4.运行环境说明
MySql:5.7版本
Tomcat:7(使用Maven插件,在Pom.xml文件中配置即可使用,无需个人下载)
JDK:1.8版本
### 5.开发问题
#### **1.servlet如何向另外一个servlet传值?**
将数据放入到对应的请求体中,通过页面的转发和重定向可以实现,两个servlrt的数据传输
```
request.setAttribute("list",zhangWu);
request.getAttribute("list",zhangWu);
```
#### **2.servlet如何向JSP页面传值?**
1.servlet将数据放入到session中,jsp页面可以从session获取数据
2.Servlet将数据放到请求体重,并进行转发
```java
request.setAttribute("data", "this is a data to send");
request.getRequestDispatcher("next.jsp").forward(request, response);
```
#### **3.JSP如何向Servlet传值?**
1.form表单
2.URL 发送get请求即可
3.session:jsp页面直接将数据存入到session中就可以了
#### **4.JS如何将数据回显到修改模态框中**
下面是本项目的表单回显
主要说明:
1.获取到需要回显的值
2.将数据打包成一个对象
3.普通数据回显根据dom的name直接将数据写回
```
$("#money1").attr("value",strings1[2]);
```
4.下拉菜单回显
遍历下拉菜单的元素信息,当信息与当前相等的时候进行数据回显即可
```
let options = document.getElementById("xiaofei").options;
for(let i = 0;i<options.length;i++){
if(options[i].value==strings1[1]){//根据id选中阿里
options[i].selected = true;
}
}
```
```
<script type="text/javascript">
var Zhanghu=new Object();
function upimg(id){
var res=id;
//将当前ID数据传递给删除模态框提交到servlet中
var box = document.getElementById("s")
box.innerText=res
//box1.innerText=res
//将id值传给input标签
$("#imgtalk").attr("value",res);
$("#imgtalk1").attr("value",res);
var attribute = document.getElementById(id).getAttribute("value");
console.log(attribute)
var strings1 = attribute.split("=");
console.log(strings1[0]);
Zhanghu.zwid=strings1[0];
Zhanghu.flname=strings1[1];
Zhanghu.money=strings1[2];
Zhanghu.zhanghu=strings1[3];
Zhanghu.createtime=strings1[4];
Zhanghu.description=strings1[5];
Zhanghu.userid=strings1[6];
huixian(strings1);
}
function huixian(strings1){
console.log(strings1[0]);
console.log(strings1[1]);
$("#money1").attr("value",strings1[2]);
$("#type1").attr("value",strings1[3]);
$("#time1").attr("value",strings1[4]);
$("#desc").attr("value",strings1[5]);
let options = document.getElementById("xiaofei").options;
for(let i = 0;i<options.length;i++){
if(options[i].value==strings1[1]){//根据id选中阿里
options[i].selected = true;
}
}
let options1 = document.getElementById("type1").options;
for(let i = 0;i<options.length;i++){
if(options1[i].value==strings1[3]){//根据id选中阿里
options1[i].selected = true;
}
}
}
</script>
```
#### 5.如何向JSP页面直接写数据
这应该是最直接的写入方式
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");//解决中文乱码的问题
String name = request.getParameter("uname");
String password = request.getParameter("pwd");
String sex = request.getParameter("sex");
String []favour = request.getParameterValues("duo");
String email = request.getParameter("email");
%>
<p>账号:<%=name %></p>
<p>密码:<%=password %></p>
<p>性别:<%=sex %></p>
爱好:
<%
/* for(String c : favour){
out.println(c + " ");
}
*/
for(int i = 0 ; i < favour.length ; i++){
String message = favour[i];
out.print(message+" ");
}
%>
<p>邮箱:<%=email %></p>
</body>
</html>
```
#### 6.maven中tomcat7插件配置的问题?
不能在</pluginManagement>标签内引入
```
<plugins>
酷爱码
- 粉丝: 8931
- 资源: 2024
最新资源
- NC Cloud-权限-action鉴权注册
- ppp2.4.9交叉编译后产生的文件
- 西门子5台1200 脉冲控制20 轴,MODBUS轮询2台机械臂 IO通信实际案例程序 西门子 1200 大型程序,大型生产线案例 通讯,机械手,模拟量各种 FB 块学习 PTO 控制 20 多个轴
- 基于FPGA的iic主从机驱动实现 Verilog实现iic slave和iic master 顶层模块实现master对slave自定义的寄存器读取 带仿真模块
- 基于纳米微粒激发平面波的米氏散射FDTD仿真模拟 微纳光学 案例内容 本案例展示了一个基于纳米粒子激发平面波的米氏散射仿真模型(mie scattering),计算其散射和吸收截面、局域场增强和远
- 解析CDN: 内容分发网络加速全球互联网内容的技术原理及应用前景
- 一个 用 HTML 构建页面,JavaScript 处理添加和删除任务逻辑的待办事项列表源码
- COMSOL激光打孔热应力文献复现
- WebSocket:实现实时通信的关键协议及其应用与挑战
- 汇川H5U程序框架模板,伺服皆是总线控制,模板程序轴控和气缸采用FB块,直接调用即可 还有和爱普生机器人的eip协议通讯 内容很全面,用来学习或者做项目只需要 根据项目要求改一些IO和参数 程序
- 前端开发领域中JavaScript语言的核心概念及其实际应用教程
- Thinkphp古诗名言文言文网站模板+前后端源码+后台采集
- Android 使用开源项目Sherpa的关键词检测(语音唤醒)
- 反激变器模型,60W,输入390V,输出19V,基于MATLAB Simulink建模仿真 Flyback模型,闭环控制,带snubber吸收电路,适合入门学习使用,带参考文献 仿真模型使用MAT
- 电网控制器,Matlab Simulink 平台-5MW海上永磁风电直驱+1200V风电并网(风速采用美国国家能源实验室真实数据模拟10S风速波动情况) 机侧与网侧均采用矢量控制,混合储能采用超级电容
- ComfyUI自动去水印工作流
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈