Session的活化和钝化,表单重复提交,验证码使用流程
admin
2023-03-25 14:41:36
0
  • 钝化

指将HttpSession对象序列化到硬盘中,一般钝化发生在服务器停止,服务器停止时会自动将HttpSession对象序列化到硬盘,这个事我们称为钝化。

  • 活化

将硬盘中HttpSession对象加载进内存中,一般在服务器启动时,会自动将硬盘中HttpSession对象重新加载进内存,这一过程我们成为活化。

  • 钝化指将内存中的对象写到硬盘中,

  • 一个类要想可以序列化到硬盘中必须要实现java.io.Serializable接口

  • 这个类中的所有属性也需要实现java.io.Serializable接口

  • 如果服务器的访问量较大,那么服务器会有大量的HttpSession对象存在,

但是这些对象并不是都处于一个活跃的状态,但是这些不活跃也会存在于内存中

这样会大量占用内存,这时我们就希望将这些闲置的对象写入硬盘中,在用户需要使用session在加载进内存。

在context.xml文件中可以加入如下内容

maxIdleSwap:指session的最大闲置时间,超过该时间以后,session将会自动钝化。

directory:钝化到硬盘中的目录

session会钝化到tomcat服务器的work目录中

表单的重复提交

  • 表单重复提交指的是同一个表单相同的内容多次提交请求

  • 表单重复提交的危害:

    1.表单重复提交,都是重复的数据,会增加数据库中垃圾数据。

    2.无形中增加了服务器压力。

  • 表单重复提交的几种情况:

1.表单提交成功以后,反复刷新成功页面。

  • 产生问题的根本原因:

我们在Servlet使用的转发的形式跳转到成功页面的,所以整个过程中浏览器只发送了一次请求,当我们在成功页面刷新时,实际是将上次的请求又发送了一遍,所以造成了重复提交。

  • 解决:

不使用转发,而是使用重定向

重定向发了两次请求,我们再次刷新,刷新的第二个请求,而不是第一个。

2.网速较慢时,用户多次点击提交按钮。

  • 产生问题的根本原因:

就是表单的提交按钮可以点击多次

  • 解决:

使表单的提交按钮只能点一次,点完一次以后按钮将变为不可用的状态。

    window.onload = function(){

        //点击完提交按钮以后,让按钮变为一个不可用的状态

        //获取按钮对象

        var btn = document.getElementById(“btn”);

        //为按钮绑定一个单击响应函数

        btn.onclick = function(){

        //设置按钮为不可用状态

        this.disabled = true;

        //如果将按钮设置为不用状态,那么表单也将不会提交

        //我们需要手动提交表单

        this.parentNode.submit();

        }; 
    };

3.成功提交请求后,点击回退按钮,但是不刷新页面,再次提交。

  • 产生问题的根本原因:

服务器端的Servlet不能区分两次请求是不是重复提交的内容

  • 解决:

在Servlet中,我们需要在处理请求之前,先来检查表单是否是重复提交。

使用token解决这个问题

token就是令牌意思

所谓的token就是服务器在处理用户请求之前,先检查token是否正确,如果token正确那服务器正常处理请求,如果token不正确服务器不处理请求.

我们的令牌是一个一次性的令牌,只能使用一次.

流程:

1.创建一个令牌,要求唯一,不能重复(UUID),并在服务器中保存token。

2.放入到浏览器的表单中。

3.浏览器提交表单时,会同时将token一起提交。

4.服务器在处理请求之前要检查令牌是否有效。

5.销毁token。

 

验证码使用流程

Session的活化和钝化,表单重复提交,验证码使用流程

上述工作,大部分工作我们都可以通过一款jar包来完成。 
kaptcha-2.3.2 
该Jar可以: 
1.可以生成一个随机的字符串 
2.可以将字符串保存到session 
3.可以将字符串转换为一个图片 
这个kaptcha-2.3.2里边实际上就是一个Servlet,我们通过访问他给我们提供的Servlet,就可以直接完成上述工作

导入jar包之后,通过在web.xml文件中注册servelt即可。

< servlet>
    < servlet-name >kaptcha
     com.google.code.kaptcha.servlet.KaptchaServlet
    
       //在session中存储该验证码的属性的名字      
         kaptcha.session.key
        code
    
  

  
    kaptcha
    /code.jpg
  


相关内容

热门资讯

学生放学回家后又返回学校坠亡,... 学生符某放学后回到家中,后又从家中返回学校,并于当晚从学校教学楼楼顶坠亡。符某父母随后将学校告上法庭...
泽连斯基称乌已向俄方提交100... 当地时间10日,乌克兰总统泽连斯基表示,乌俄双方将以“千人换千人”的方式交换战俘,乌方已向俄方提交了...
国网上海市电力公司举办“明灯引... 5月7日至9日,在第十个“中国品牌日”来临之际,国网上海市电力公司(以下简称“国网上海电力”)以“明...
字跳申请会话信息的发送方法专利... 国家知识产权局信息显示,北京字跳网络技术有限公司申请一项名为“会话信息的发送方法、装置、电子设备、存...
非开挖定向钻机厂家选择指南:郑... 导语:非开挖定向钻机作为市政管道铺设、能源管线穿越等场景的核心设备,其性能稳定性与厂家服务能力直接影...
你昂贵的DDR5内存可能是假货... 快科技5月10日消息,内存价格近期持续走高,亚洲市场出现大量假冒DDR5内存模块,且外观极具迷惑性。...
6G,迎利好!工信部批复 工信部批复6G技术试验频率。 为进一步推动我国6G技术研发、标准研制与产业化进程,工业和信息化部近日...
涉疫邮轮5名法国公民回国,一人... △“洪迪厄斯”号邮轮(资料图)法国总理勒科尔尼10日在社交媒体说,涉汉坦病毒疫情邮轮“洪迪厄斯”号上...
伊朗警告法英两国:只有我们能保... △霍尔木兹海峡(资料图)针对法国和英国计划向红海及霍尔木兹海峡周边海域增派军舰,伊朗副外长加里巴巴迪...
这次对武大不妨多一点包容 1)国内某手机品牌为母亲节准备的文案,引发了很大的争议。2)我想,品牌方肯定也在努力反思当中,它在第...