目录
一、改进上一篇博客Servlet(一)的第一题
1. 运行截图
2. 建表
3. 实体类
4. JSP页面
4.1 login.jsp
4.2 loginSuccess.jsp
4.3 loginFail.jsp
5. mybatis-config.xml
6. 工具类:创建SqlSessionFactory实例,进行 MyBatis 的数据库操作
7. UserMapper.xml
8. UserMapper
9. Service层实现类
10. loginServlet
二、编写过滤器实现用户登录身份验证,防止未经登录用户越权访问页面。
1. 登录页面(login.jsp)
2. LoginFilter
3. LoginServlet
4. 运行截图
三、使用监听器对HttpSession实例变化状态进行监听,限制一个用户同一时间只能登陆一次。
1. 运行截图
2. JS代码
3. LoginSessionListener(登录监听)
4. LoginServlet(登录)
5. LogoutServlet(注销)
四、心得体会
一、改进上一篇博客Servlet(一)的第一题
【JavaWeb程序设计】Servlet(一)-CSDN博客文章浏览阅读205次。一、客户端通过login.jsp发出登录请求,请求提交到loginServlet处理。1. 运行截图2. 登录页面(login.jsp)3. loginServlet4. 登录成功页面(loginSuccess.jsp)5. 登录失败页面(loginFail.jsp)二、使用ServletConfig检索Servlet的初始化参数,请补充填写以下①-⑥空,并运行ConfigDemoServlet程序,将运行结果截图。1. 编写ConfigDemoServlet程序2. 修改whttps://blog.csdn.net/m0_67830223/article/details/140324353
原文链接如上,引入数据库,创建用户表,包括用户名和密码:客户端通过login.jsp发出登录请求,请求提交到loginServlet处理。如果用户名和密码跟用户表匹配则视为登录成功,跳转到loginSuccess.jsp页面,显示“欢迎你”+用户名;否则跳转到loginFail.jsp页面,显示“登录失败”,通过超链接返回login.jsp。
1. 运行截图
(1)输入数据库不存在的用户信息
显示登录失败
点击超链接返回登录页面
(2)输入存在数据库的用户信息
登录成功
2. 建表
3. 实体类
4. JSP页面
4.1 login.jsp
通过表单提交到loginServlet
4.2 loginSuccess.jsp
4.3 loginFail.jsp
5. mybatis-config.xml
6. 工具类:创建SqlSessionFactory实例,进行 MyBatis 的数据库操作
7. UserMapper.xml
8. UserMapper
9. Service层实现类
10. loginServlet
二、编写过滤器实现用户登录身份验证,防止未经登录用户越权访问页面。
用上一题写的JSP页面来测试,设置loginSuccess.jsp和loginFail.jsp这两个页面需要登录才可以访问。
1. 登录页面(login.jsp)
2. LoginFilter
根据用户请求的url判断是否有需要权限保护的页面,如果有,判断session中是否有用户信息,进而判断是否放行。
3. LoginServlet
根据用户输入数据去数据库查询有没有对应的记录来做判断。
其他部分跟第一题一样。
4. 运行截图
假设用户通过url越权访问loginSuccess.jsp
直接让用户重定向到登录页面
登录成功之后可以正常访问页面
直接访问登录失败页面
三、使用监听器对HttpSession实例变化状态进行监听,限制一个用户同一时间只能登陆一次。
验证方式:用两个浏览器登陆同一个账号,其中一个登陆成功,另外一个自动失效
本题依旧以第一题的登录页面为例,假设用户在一个浏览器登录成功,那么在另一个浏览器登录不上该账号。如果用户在登陆成功的页面选择注销账号,那么另一个浏览器则登录成功。
1. 运行截图
在EDGE浏览器登录并选择记住密码:
在电脑自带浏览器登录同一个账号,提示无法登录
左边的浏览器点击注销之后,跳转到登录页面并清除用户信息,同时在左边登录相同的账号。
右边的浏览器登录成功。
2. JS代码
(弹窗提示用户已登录过该账号),JSP同第一题一样
3. LoginSessionListener(登录监听)
4. LoginServlet(登录)
5. LogoutServlet(注销)
其他代码同第一题!!!
四、心得体会
(1)Servlet:Servlet是JavaWeb开发的核心组件之一,它可以接收HTTP请求并生成HTTP响应。通过编写Servlet,我们可以实现动态的Web页面和交互式的Web应用程序。我学会了如何编写Servlet,并通过处理请求参数、操作session和cookie等技术实现了用户登录功能。
(2)过滤器:过滤器是对Web请求进行预处理或后处理的组件,它可以在请求到达Servlet之前对请求进行过滤和修改。通过编写过滤器,我们可以对请求进行验证、权限控制、字符编码转换等操作。我学会了如何编写过滤器,并使用过滤器实现了用户登录状态验证的功能,在用户访问受限资源之前进行了身份验证。
(3)监听器:监听器是用于监听Web应用程序中事件的组件,它可以在事件发生时执行相应的操作。通过编写监听器,我们可以监听会话、请求、属性等事件,并根据需要进行处理。我学会了如何编写监听器,并使用监听器实现了用户登录和注销的功能,以及检测用户在其他机器上登录的情况。
(4)MyBatis:MyBatis是一个开源的持久层框架,它简化了数据库访问操作。通过使用MyBatis,我们可以通过编写简洁的SQL语句和映射配置文件来操作数据库,提高了开发效率。我学会了如何配置和使用MyBatis,通过映射文件将Java对象与数据库表进行映射,并实现了数据的查询操作。