码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【JavaWeb】案例二:一次性验证码的校验


    👍如果对你有帮助,给博主一个免费的点赞以示鼓励
    欢迎各位🔎点赞👍评论收藏⭐️

    👀专栏介绍

    【JavaWeb】 目前主要更新JavaWeb,一起学习一起进步。

    👀本期介绍

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

    文章目录

    2.1、讲解:session

    2.1.1、session 的简述

    2.1.2、session 的入门案例

    2.1.3、session 的原理

    2.1.4、session 的生命周期

    2.1.5、session 常用 API

    2.2、流程分析

    2.3、案例代码实现

    2.4、案例代码优化

    2.1、讲解:session

    2.1.1、session 的简述

    属于保存在服务器端的会话技术。
    作用范围:会话范围 -------- 浏览器开启 ----- N 次请求 ----- 浏览器关闭
    作用:保存会话数据。
    域对象:
    ServletContext :整个项目的所有请求
    Session :会话范围中的 N 次请求
    Request :某次请求

    2.1.2、session 的入门案例

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

    2.1.3、session 的原理

    1 、 session 是一个会话范围的域对象,负责进行信息的共享
    2 、 session 针对的是某个浏览器的一次会话(N 次)

    (扩展)
    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.4、session 的生命周期

    域对象:
    ServletContext :服务器启动创建,服务器正常关闭销毁。
    Session :
    创建:第一次调用 getSession() 方法
    销毁: 1 、服务器的非正常关闭
    服务器正常关闭,数据会被保存在硬盘上,服务器启动会重新加载回来
    2 、调用 invalidate() ,就会立即主动销毁 session 对象
    3 、 30 分钟未访问 session 对象,
    session 对象销毁
    Request :创建:接收到任意一个请求;
    销毁:这次请求产生了响应
    问题:服务器正常运行,浏览器关闭,浏览器关闭瞬间,对应 session 是否会销毁?

    2.1.5、session 常用 API

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

     

    2.2、流程分析

    2.3、案例代码实现

    首先创建了 VerifyCode
    修改 login.html

    修改 VerifyCode 目的就是向 session 中共享正确的验证码

    修改 login.html 提交验证码数据  

    UserServlet 目的校验验证码

    2.4、案例代码优化

    像火车票一样,只起作用一次。
    一次性验证码校验。

     

  • 相关阅读:
    现代 CSS 解决方案:CSS 数学函数
    SwiftUI 6.0(Xcode 16)全新 @Entry 和 @Previewable 宏让开发妙趣横生
    vue 中使用 this 更新数据的一次大坑
    【Elasticsearch教程16】Mapping字段类型之join
    MFC串口通信控件MSCOMM32.OCX的安装注册
    Codeforces Round 904 (Div. 2) C
    BERT深度学习基准模型特点与应用
    Python + Django4 搭建个人博客(五): 创建并连接数据库
    UniApp集成微信小程序原生分包
    Arduino从零开始(2)——控制舵机与步进电机
  • 原文地址:https://blog.csdn.net/weixin_45481821/article/details/126445321
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号