1前言
此设计是一个用户管理系统。我只设计了用户注册和登录和对用户的增删查改等功能。用户的增删查改只能有管理员来进行操作,用户只能查看自己的信息和注销自己的账号。管理员不能注销自己的账号。另外,用户如果登录失败的话会有弹框提示登陆失败。用户注销成功也是会有弹框提示。用户注册成功也是有弹框提示注册成功。然后都是通过点击对于的超链接返回登录页面。
2系统各层及组件描述
2.1 项目目录图
2.2 系统各层及组件描述
2.2.1 Dao层(存放用户与数据库交互的接口和类)
组件:
IUserDao(用户接口,提供用户信息的登录,注册,注销,更新密码等功能)
UserDaoImpl(实现接口,实现接口方法用户的添加,删除,修改,查找等功能)
虽然实现类新增了方法,但是在该工程中没有用到该新增的方法。
2.2.2 DataPool层(存放数据池连接类)
组件:
DbcpPool(数据池类)
2.2.3 Factory层(存放用户的Dao工厂和Service工厂)
组件:
ServiceFactory工厂类,用来获得service对象
DaoFactory工厂类,用来获得Dao的对象
2.2.4 JavaBean层(存放用户的结构类)
组件:
User(用户类)
2.2.5 Service层(存放系统提供的服务类)
组件:
IUserService(用户服务接口,调用用户服务工厂)
UserServicelmpl类(用户服务接口实现类实现用户相关的服务)
2.2.6 Servlet层(存放流程控制的类)
组件:
middleServlet(用来跳转到注册页面,因为注册页面在WEB-INF文件夹里面不能直接跳转。需要借助一个Servlet类)
searchServlet(用来执行查询请求的Servlet类)
rootAddServlet(用来处理管理员添加用户请求的Servlet类,因为请求不一样,管理员添加用户的jsp页面和注册页面不一样)
userdeleteServlet(用来处理删除用户请求的Servlet类)
middle1Servlet(与middleServlet类功能一样,只是跳转到登录页面)
LoginServlet(接收登录页面发来的数据,调用相关的Service类进行处理)
RegisterServlet(接收注册页面发来的数据,调用相关的Service类进行处理)
updateServlet(用来处理更新用户信息请求的Servlet类)
2.2.7 web层
2.2.7.1 filter 类
用来处理中文字符乱码的问题
2.2.7.2 UI类
主要功能是Servlet和WEB-INF目录下的jsp的中转站。
2.2.8 MyException 层
设置我的异常类,处理我想要显示的异常,不过在该工程中只在idea上提示
2.2.9 css层
组件:
login.css:设置系统登录页面的CSS样式
aAndth .css:设置a标签和th标签的CSS样式
add.css:实现用户注册页面的CSS样式
2.2.10 js层
组件:
checkUserAdd.js:实现用户注册页面的事件处理
Jquery.3.6.0.js
2.2.11 Web模块层(存放jar包和jsp文件)
组件:
WEB-INF下的pages层
login.jsp (登录界面)
register.jsp (注册页面)
error.jsp (注册用户时提示用户已存在的弹框)
loginError.jsp (登录失败的提示弹框)
loginoutTrue.jsp (注销账户成功的提示弹框)
true.jsp (注册用户成功的提示弹框)
update.jsp (管理员更新用户信息的页面)
Web 目录下
message.jsp (提示管理员不能随便注销的页面)
rootregister.jsp (管理员添加用户的页面)
rootShow.jsp (管理员登录成功后显示信息的页面)
show.jsp (普通用户登录成功后显示个人信息的页面)
lib层(依赖包)
3外部资源
jar包:
4数据库登录名和密码
登录名:root,密码:666666
5网站图
6心得体会
这次作业加深了我对Servlet和Dao和 UI 的关系。其中WEB-INF下的jsp文件一开始不知道如何识别,后来才发现原来UI就是WEB-INF和Servlet的中转站。还有这次由于网页的布局,让我学会了挺多CSS样式的设置。比如说那个颜色和位置。还有就是WEB-INF下的jsp一开始我不知道为什么识别不了我的CSS样式和js事件,后来才发现又是路径的问题。后来在网上找了
${pageContext.request.contextPath}
这一句,就可以识别,这一句的就是找当前位置的相对路径。然后再设置需要添加的url。还有就是不知道为什么我的网页执行多次的时候会卡住,一直在那转圈,后来听同学说,原来是因为没有关闭数据库连接,导致数据连接达到了最大允许连接数。后来,加了close之后就好了。但是再查询结果集的时候问题又来了。就是如何返回值类型为结果集合的话,不能关闭连接,但是我又需要结果集的数据怎么办呢,就要用到Bean的数组了,把查询结果集放到Bean数组中,然后这样就可以查询完之后关闭连接了。也不会怕达到最大允许连接数了,从而导致网页卡住了。
还有Dao原来是被Service调用,在Dao里面定义好方法,Servlet然后就直接调用Service就可以了。还有Filter,处理中文字符乱码。直接让整个Web应用下的中文字符乱码都解决好了。再也不用在每一个Servlet里面都处理中文字符乱码的代码了。
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!