一、项目场景:
开发一个简单的用户信息列表管理系统,可用于对用户信息进行增删改查操作。以下展示展示改系统的功能效果图:
(1)服务器启动时,有一管理员登录页面,需要登录成功后才能进入用户信息系统:
(2)当登录成功之后就会进入查询用户信息界面(index.js)中
(3)点击“查询所有用户信息”,进入用户信息管理列表,就可以查看用户信息功能了。
(4)在改表中,有以下几个功能:
①可通过条件查询筛选出需要的用户信息
②可以在该系统中“添加联系人”和“删除选中的联系人”
③可以在该系统中单个修改和删除联系人
④分页查询功能,逐页查询系统中的各个信息
二、项目开发整体框架流程:
以下简单介绍整体的项目开发流程,在公司中我们只需要负责开发流程就可以了。(1)需求分析:用户信息的增删改查操作。
(2)设计:
1.技术选型:Servlet + JSP + MySQL + JDBCTemplate + Druid + BeanUtils + tomcat
2.设计数据库
1.环境搭建:
①创建数据库环境
②导入项目所需的jar包
2.进行编码
(4) 测试:
项目开发完成后进行测试和并调整
(5) 部署运维:
将项目部署在服务器中
三、开发流程:
(一)项目整体架构
整个项目中由“src” 和 “web”两个主要大包组成。
(1)在src包中,我们根据Java的三层架构模式,将其分成以下各个文件夹保存相应的各个功能文件。
以下为src中各个子包:
以下为Java开发中的三层架构模式:(可以百度查看“Java三层架构”理解其原理
以下介绍各个项目中各个包所放的文件的功能:
①dao层(MyBatis框架)–>定义了对于数据库最基本的CRUD操作,包含实现增删改查功能的函数,需要输入sql函数对数据库进行访问
②domain层–>存放User和PageBean对象,用于对用户信息进行封装
③service层(Spring框架)–>调用组合dao层中的简单方法,形成复杂的功能。
④util层–>用来存放工具类的包,例如JDBCUtils工具类
⑤web层(SpringMVC层)–>里面包含各个功能函数板块的Servlet文件,用于接收用户参数、封装数据、调用service层完成处理后转发到jsp页面完成显示。
⑥druid.properties文件,用于链接MySQL数据库
(2)在web包中,用于放置前端UI展示页面和jsp文件
其中web中包含前端UI中所需要用到的css、font、js、jar包和jsp文件,其中WEB-INF用于存放jar包
(二)环境搭建
(1)创建数据库环境,以下是SQL语句创建数据库:
create database day17; -- 创建数据库
use day17; -- 使用数据库
create table user( -- 创建表
id int primary key auto_increment, --用户id
name varchar(20) not null, --姓名
gender varchar(5), --性别
age int, --年龄
address varchar(32), --地址
qq varchar(20), --qq
email varchar(50), --邮箱地址
username varchar(32), --登录用户名
password varchar(32) --登陆密码
);
(2) 创建项目,导入需要的jar包。(后面会提供源码,在web->WEB-INF->lib包中)
(3) 引入JDBCUtils文件和druid.properties文件链接MySQL数据库。
(三)功能开发
(1)登录功能分析
(1)在login.jsp文件中编写登陆页面,并且将该页面中输入的数据(用户名、密码和验证码)通过form表单提交给服务器web层中的loginServlet中。
<form action="${pageContext.request.contextPath}/loginServlet" method="post">
(2)在loginServlet中
1.获取login.jsp中传入过来的参数map集合(map中包含用户名和密码)和单独获取输入的验证码值。
2.将用户信息封装到User对象
3.判断程序生成的验证码和用户输入的验证码是否一致,
如果一致:则进一步判断用户名和登录密码是否一致(判断用户登录是否成功参考4)。
如果不一致:则发送错误信息并转发回登录页面login.jsp中
4.判断用户是否登录正确:
如果是:将用户信息存储到session中并且重定向到index.js页面中
如果不是:则将登录错误信息存储起来并转发回登录页面login.jsp中
下面展示伪代码来说明该登录功能的逻辑
/**
*LoginServlet类
*/
1.获取login.jsp中传输过来的验证码数据
2.获取程序中生成的验证码 //该验证码是通过CheckCodeServlet生成的,并存储在session中
//判断输入的验证码是否和生成的验证码相等,相等的话则继续判断用户名是否正确,否者不想等。
//这里为了简化代码,通过判断验证码错误就进入if条件,并且通过return跳出函数,跳出判断条件后就不执行if后面的东西。如果验证码输入正确则不执行if条件中的东西直接往下执行。
3.
if(程序的验证码 != 输入的验证码){
(1).存储登录的错误信息到request中
(2).转发回原来的登陆页面login.jsp中继续登录
(3). return; //执行return后将跳出该函数,不在执行if条件后面的代码
}
4.获取输入的用户名和密码传到map集合中
5.将map集合中的信息封装到JavaBean对象中的user
6.通过调用service层查询用户user是否存在 //service层会调用dao层的函数向数据库进行查询数据
//查询出来后判断
7.if(用户user存在){
(1).将用户信息存储在session中
(2).然后重定向到index.js页面中
}else{
(1).将登录错误信息存储在request中
(2).转发回登录页面login.jsp中
}
(2)列表查询功能分析
伪代码分析:
/**
*UserListServlet类
*/
1.通过service层获取用户信息user //service层通过dao层间接获取数据库信息
2.将用户信息存储到request中
3.将用户信息转发到list.jsp中将页面展示出来
/**
*list.jsp
*/
1.编写foreach标签循环遍历list集合生成数据信息表格
(3)添加功能分析
伪代码分析:
/**
*编写add.jsp页面,绘制出整个表格
*/
1.编写出简单的添加信息页面
2.设置form表单action的提交路径到AddUserServlet中
/**
*编写AddUserServlet
*/
1.获取传输的数据,封装为对象
2.通过service层间接调用dao层,将数据添加在数据库中
3.跳转userListServlet层数据进行查询
(4)删除功能分析
注意点:
(1)删除这里需要将其绑定这条记录的id,获取其删除信息。这个id很重要,需要从list.jsp中获取并传入到DelUserServlet中。
(5)修改功能分析
伪代码分析:
/**
*该功能需要将其分为两个部分:
* 1.当点击修改时,跳转到update.jsp中,并且需要通过findUserServlet将得到的数据回显在update.jsp页面。
* 2.在update.jsp中修改了该信息后,将数据提交到UpdateUserServlet中,并且将信息存入到数据库中后跳转回userListServlet中展示出来
*/
//第一部分代码实现
1.和删除功能一样,需要在list.jsp中绑定用户id
2.在findUserServlet中获取绑定的id信息,然后通过该id在数据库中查询获取出信息
3.将通过Id获取的用户信息封装起来,转发到update.jsp中回显该信息
//第二部分代码实现
1.从update.jsp中获取提交的表单信息,将其封装为对象
2.通过service层将数据存储到数据库中
3.重定向回到userListServlet中查询对象
(6)删除选中功能分析
伪代码分析:
/**
*在list.jsp中
*/
1.获取选中的id数组,然后提交到DelSelectedServlet
/**
*在DelSelectedServlet中
*/
1.通过getParameterValue()获取id数组
2.调用userService()进行删除
3.转发到查询所有的UserListServlet
/**
*在userServiceImp中
*/
public void deleteSelectedUser(String[] uids) {
1.遍历每个uid,然后调用dao层已有的delected()函数进行删除
for(String id : uid){ // for-each 循环语句遍历数组,不清楚可以百度,其实跟for循环一样的
dao.delect(Interger.paraseInt(id))
}
}
(7)分页查询功能分析
(8)复杂条件分页功能分析
四、补充说明:
后面(7)分页查询功能分析和(8)复杂条件分页功能分析功能没有详细分析,该功能比较复杂,等后续有时间再对该博客进行补充。需要的伙伴可以去B站搜索黑马视频进行观看五、代码仓库:
码云:https://gitee.com/bofuser/user-manage-system.git
GitHub:https://github.com/Bofuser/UserManageSystem.git