【JavaWeb】案例:用户登录、用户自动登录

简介: 本期主要介绍案例:用户登录、用户自动登录

1、案例一:用户登录


1.1、需求说明


image.png

1.2、流程分析图


1、点击登录按钮时,在服务器根据表单用户名和密码,判断是否登录成功(本案例不考虑登录失败)

2、登录成功,将用户信息存入 session 作用域,请求转发到 index.jsp 展示信息

(详见老师课上讲解)

1.3、案例代码实现


image.png

image.png

image.png

image.png

2、案例二:用户自动登录【重点】


2.1、问题说明&流程分析


登录成功后,重新打开浏览器时,index.jsp 上的登录状态就会消失,就会需要人工重新登录。

image.png

我们希望有一个程序,在我们打开 index.jsp 时,若我们之前就已经登录成功了,即使登录状态消失了,也能自动帮我们输入之前的用户名和密码,帮我们重新登录。

这就是自动登录。

帮助我们实现自动登录的载体,就是过滤器。

2.2、知识讲解:过滤器【重点】


2.2.1、过滤器简述及入门案例


什么是过滤器(任何实现了 Filter 接口的实现类,都是过滤器)

过滤器是一个运行在服务器端的程序,先于与之相关的 servlet JSP 页面之前运行,实现对请求

image.png

资源的过滤的功能。

登录:成功 ( session 作用域记录用户登录状态),失败(在 request 作用域记录用错误信息)

过滤器可附加到一个或多个 servlet 或 JSP 页面上,可以检查请求信息,也可以处理响应信息。

Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 执行前后实现一些特殊的功能。

过滤器常用实例

自动登录,解决全站乱码,屏蔽非法文字,进行响应数据压缩,等等

image.png

image.png

image.png

image.png

 访问这个项目的任意资源,都会先执行过滤器,再执行资源。

image.png

2.2.2、过滤器的生命周期&放行


创建:随着项目启动而创建

销毁:随着项目关闭而销毁

目标资源:访问哪个资源 ,被过滤器拦截了,这个资源就是你的目标资源

image.png

放行:把请求继续向后传递,直至传递给目标资源 

image.png

image.png

2.2.3、过滤器链及执行流程


开发中我们会存在多个过滤器

根据 web.xml <filter-mapping>标签的放置顺序决定:从上到下依次执行

image.png

2.2.4、过滤器的配置(知道如何配置)


url-pattern 的配置与 servlet 中的配置一样:

image.png

servlet-name 的配置,通过 url-pattern 拦截一个 Servlet 的资源 . 也可以通过 servlet-name 标签进行拦截.

dispatcher 的配置

image.png

2.2.5FilterConfig 对象(了解)


FilterConfig 对象

image.png

image.png

2.3、案例代码实现


UserServlet(修改 servlet,让 servlet 在登录成功时,把用户名密码永久保存到 cookie 中,方便过滤器进行自动登录)

image.png

image.png

 AutoLoginFilter:(过滤器通过保存用户名密码的 cookie,进行自动登录)

image.png

相关文章
|
1月前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
76 3
|
1月前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
69 2
|
1月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
42 2
|
2月前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
68 15
|
2月前
|
安全 Java
Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧
【10月更文挑战第20天】Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧,包括避免在循环外调用wait()、优先使用notifyAll()、确保线程安全及处理InterruptedException等,帮助读者更好地掌握这些方法的应用。
25 1
|
3月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
501 37
|
2月前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
【10月更文挑战第8天】本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
43 5
|
2月前
|
前端开发 Java 应用服务中间件
Javaweb学习
【10月更文挑战第1天】Javaweb学习
39 2
|
2月前
|
分布式计算 NoSQL Java
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
57 2
|
2月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
87 5