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
  


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...