当前位置: 首页 > news >正文

【JavaWeb程序设计】Servlet(二)

目录

一、改进上一篇博客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对象与数据库表进行映射,并实现了数据的查询操作。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • linux 内核 红黑树接口说明
  • 股票分析系统设计方案大纲与细节
  • 基于对称点模式SDP(SDP, symmetrized dot pattern)轴承故障诊断方法(matlab和python实现开源)
  • 高并发内存池联调问题
  • 链表 OJ(一)
  • LIO-SAM编译ubuntu20.04 Noetic
  • Python地图可视化三大秘密武器
  • 数智驱动丨zAIoT 连续落地军工、科研院所和机械制造场景,推动数智化转型升级...
  • base SAS programming学习笔记10(combine data)
  • java synchronized关键字介绍
  • Three 圆柱坐标(Cylindrical)和 视锥体(Frustum)
  • 聊一聊中小企业如何开展持续交付
  • 【C++修行之道】string类练习题
  • 用HttpURLConnection复现http响应码405
  • 【记录】LaTex|LaTex 代码片段 Listings 添加带圆圈数字标号的箭头(又名 LaTex Tikz 库画箭头的简要介绍)
  • [数据结构]链表的实现在PHP中
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • EOS是什么
  • Iterator 和 for...of 循环
  • JAVA之继承和多态
  • Map集合、散列表、红黑树介绍
  • Octave 入门
  • Python 反序列化安全问题(二)
  • 大主子表关联的性能优化方法
  • 反思总结然后整装待发
  • 解析带emoji和链接的聊天系统消息
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 我与Jetbrains的这些年
  • 写代码的正确姿势
  • 追踪解析 FutureTask 源码
  • AI算硅基生命吗,为什么?
  • k8s使用glusterfs实现动态持久化存储
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • #pragma multi_compile #pragma shader_feature
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (0)Nginx 功能特性
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (SpringBoot)第七章:SpringBoot日志文件
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (三)终结任务
  • (五)关系数据库标准语言SQL
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)Mysql的优化设置
  • .Family_物联网
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET Framework 3.5安装教程
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .Net程序帮助文档制作
  • @PreAuthorize注解
  • @Repository 注解