【JavaWeb】案例二:一次性验证码的校验

简介: 本期主要介绍案例二:一次性验证码的校验

2.1、讲解:session


2.1.1session 的简述


属于保存在服务器端的会话技术。

作用范围:会话范围-------- 浏览器开启----- N 次请求 -----浏览器关闭

作用:保存会话数据。

域对象:

ServletContext:整个项目的所有请求

Session:会话范围中的 N 次请求

Request:某次请求

2.1.2session 的入门案例


入门案例:将数据保存到 session

image.png

2.1.3session 的原理


1session 是一个会话范围的域对象,负责进行信息的共享

2session 针对的是某个浏览器的一次会话(N 次)

image.png

(扩展)

request.getSession() 相当于 request.getSession(true);

1 、 尝试从请求头中获取 cookie ,COOKIE 名称: JSESSIONID

2 、 如果获取不到该 cookie ,创建一个新的 session 对象,并且给浏览器写一个 cookie ,JSESSIONID= 新sessionid

3 、 如果获取到该 cookie ,读取 JSESSIONID 的值,去内存中进行匹配,看哪个 session 的 ID 和cookie 中的值相同。

4 、 如果匹配到,返回对应的老 session 对象。如果匹配不到,创建一个新的 session 对象,并且给浏览器写一个 cookie ,JSESSIONID= 新 sessionid

2.1.4session 的生命周期


域对象:

ServletContext :服务器启动创建,服务器正常关闭销毁。

Session :

创建:第一次调用 getSession() 方法

销毁: 1 、服务器的非正常关闭

服务器正常关闭,数据会被保存在硬盘上,服务器启动会重新加载回来

2 、调用 invalidate() ,就会立即主动销毁 session 对象

3 、 30 分钟未访问 session 对象,

session 对象销毁

Request :创建:接收到任意一个请求;

销毁:这次请求产生了响应

问题:服务器正常运行,浏览器关闭,浏览器关闭瞬间,对应 session 是否会销毁?

2.1.5session 常用 API


image.png

5-2 列举了 HttpSession 接口中的常用方法,这些方法都是用来操作 HttpSession 对象的。演示:

image.png

2.2、流程分析


image.png

2.3、案例代码实现


首先创建了 VerifyCode

修改 login.html

image.png

image.png

image.png

image.png

2.4、案例代码优化


像火车票一样,只起作用一次。

一次性验证码校验。

image.png

相关文章
|
2月前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
81 3
|
2月前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
72 2
|
2月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
45 2
|
3月前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
75 15
|
3月前
|
安全 Java
Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧
【10月更文挑战第20天】Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧,包括避免在循环外调用wait()、优先使用notifyAll()、确保线程安全及处理InterruptedException等,帮助读者更好地掌握这些方法的应用。
27 1
|
3月前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
【10月更文挑战第8天】本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
47 5
|
3月前
|
前端开发 Java 应用服务中间件
Javaweb学习
【10月更文挑战第1天】Javaweb学习
40 2
|
3月前
|
分布式计算 NoSQL Java
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
62 2
|
3月前
|
数据采集 自然语言处理 API
Python反爬案例——验证码的识别
Python反爬案例——验证码的识别
53 2
|
3月前
|
Java
Java 登录输入的验证码
Java 登录输入的验证码
38 1