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
  


相关内容

热门资讯

玩家分享攻略“闽乐茶楼开挂器?... 网上科普关于“闽乐茶楼有没有挂”话题很是火热,小编也是针对闽乐茶楼作*弊开挂的方法以及开挂对应的知识...
玩家攻略科普“上海敲麻到底有挂... 玩家攻略科普“上海敲麻到底有挂吗?”(必胜开挂神器)您好,上海敲麻这个游戏其实有挂的,确实是有挂的,...
【第一资讯】“微信链接麻将真的... 有 亲,根据资深记者爆料微信链接麻将是可以开挂的,确实有挂(咨询软件无需...
重磅消息“友友邳州麻将怎么开挂... 重磅消息“友友邳州麻将怎么开挂?”(外卦神器下载)您好,友友邳州麻将这个游戏其实有挂的,确实是有挂的...
重磅消息“麻友圈2贵阳捉鸡有没... 家人们!今天小编来为大家解答麻友圈2贵阳捉鸡透视挂怎么安装这个问题咨询软件客服徽9752949的挂在...
终于了解“八闽掌上麻将到底有挂... 终于了解“八闽掌上麻将到底有挂吗?”(太坑了果然有挂)您好,八闽掌上麻将这个游戏其实有挂的,确实是有...
玩家最新攻略“乐达麻将怎么开挂... 您好:乐达麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游戏...
终于懂了“白金岛游戏到底是不是... 您好:白金岛游戏这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游...
终于了解“玄龙牛牛可以开挂吗?... 有 亲,根据资深记者爆料玄龙牛牛是可以开挂的,确实有挂(咨询软件无需打开...
最新引进“免安装麻将机定位器怎... 最新引进“免安装麻将机定位器怎么开挂?”(外卦神器下载)您好,免安装麻将机定位器这个游戏其实有挂的,...