一.案件要求
要实现用户登录和注销功能,要求一个用户只能在一个地方登录。

在用户表上完成CRUD操作。
技术:JSP,Servlet,过滤器,监听器,JDBC,MySQL
第二,结构。
create database表包含userid、username、userpwd、usersex、phonenumber、qqnumber等列。
2.项目目录结构
项目目录:
所需的jar包:
第三,环境建设
Create pojo在pojo包下创建Users类,该类的属性应该与数据库的列相对应:
2.创建JDBC工具类
首先,在src根目录中创建一个文件db.properties:
在commons包下创建JdbcUtils:
3.常数类
为了维护方便,在commons包下创建一个常量类,放一些常量进去:
4.验证码工具类
在登录界面上,用来完成生成验证码的功能。因为是生成验证码的工具,所以为了结构清晰,放在了commons包下:
5.css、js、图片
将用过的图片和样式放入相应的文件夹中。特定代码位于以下位置:
链接:https://pan.baidu.com/s/1QebVT7kNdoezpF68H_ttww取款代码:6zvr
6.自定义异常类
为了便于异常处理,在异常包下创建UserNotFoundException自定义异常类:
四。登录服务的实现
1.创建登录页面。
在web目录中创建一个登录页面login。
2.创建登录业务的持久层。
在dao包下创建UserLogin dao接口,在Impl包下创建UserLoginDaoImpl接口实现类:
3.创建登录业务的业务层。
在service包下创建UserLogin服务接口,在Service.impl包下创建UserLoginServiceImpl接口实现类:

4.创建登录业务的web层。
在Servlet包下创建UserLoginServlet,添加登录后第一页的main.jsp。
主页中使用的页面,footer.jsp,index.jsp,左. jsp:
另外,添加一个出错后跳转的页面error.jsp,一个操作成功后跳转的页面ok.jsp,以便处理业务时调用:
创建登录业务的过滤器:主要作用是只有登录才能访问首页,没有登录访问限制。
因为用户不能多次登录,超时后销毁HttpSession会出现异常问题。
问题分析:比如用户登录IE浏览器,这个浏览器对应的会话会缓存在ServletContext中。由于会话对象都设置了销毁时间,Tomcat将在该时间后销毁该会话。但是,该会话也缓存在上下文中。因为不能多次登录,所以用其他浏览器登录时,仍然可以通过userid获得这个会话,但是已经被破坏了。当您销毁已销毁的对象时,您将报告一个错误。
解决方案:使用生命周期侦听器,当会话被销毁时,会触发监视方法。在这种监控方法中,我们获取上下文对象,并从上下文中删除被破坏的会话。
在侦听器包下创建此HttpSessionLifecycleListener:
测试:首先在数据库中添加一个用户,然后登录系统:
正确输入用户名、密码和验证码后,跳转到主页:
主页功能测试:
用户注销:在Servlet包下为用户注销编写Servlet:LogoutServlet。
动词 (verb的缩写)其他业务实现
1.创建持久层
用于创建持久层UserManagerDao接口和UserManagerDaoImpl接口实现类,用于添加用户、查询用户、预更新用户、更新用户和删除用户服务。
2.创建业务层
UserManagerService接口和UserManagerServiceImpl接口实现类用于创建业务层,用于添加用户、查询用户、预更新用户、更新用户和删除用户服务。
3.创建一个Servlet
用于创建添加用户、查询用户、预更新用户、更新用户和删除用户服务的servlet:用户管理器servlet。
不及物动词测试
登录:
登录后,跳转到主页:
添加用户:在添加数据库之前:
添加用户页面:
添加后的提示:
添加后期数据库:

查询:
查询结果:
修改
删除:
删除结果


