WEB页面定时刷新实现Session永不超时_DavidLee9的博客-程序员秘密

技术标签: Java  

          众所周知,当用户登录网站后较长一段时间没有与服务器进行交互,将会导致服务器上的用户会话数据(即session)被销毁。此时,当用户再次操作网页时,如果服务器进行了session校验,那么浏览器将会提醒用户session超时,导致这个问题的关键词有两个:一个是「长时间」,一个是「未操作」。    

防止session超时,我们一般采用的方式有两种:1、延迟session超时时间 2、(在规定的session超时时间内)隔一定时间与服务器交互。

  一、 延长服务器的session超时时间。ps:在Tomcat服务器的WEB.xml有如下节点内容: 

<session-config><session-timeout>30</session-timeout></session-config>;

      这里的30表示session的超时时间,单位为分钟,如果用户登录后在30分钟内没有与服务器交互,

    那么当前用户的session将失效。我们可以配置一个更大的数值(比如60),

    就可以延长session的超时时间,如果将该值改为0或负数的话,则表示session永不失效。

 

  不过在实际的工作应用中,一味地上调session的超时时间设置并不怎么常见,

  大多数需要实现该功能的网站都将解决问题的焦点集中在另一种思路上。

   例如:一些在线网站均采用定时刷新页面的方法来防止session超时。

      二、定时刷新页面。最常见的有两种实现方式:一种是通过JavaScript+HTMLDOM,另一种则是通过meta标签来实现。

   1)JavaScript+HTMLDOM,示例代码如下:

function refresh(seconds)
{
    setTimeout("self.location.reload()",seconds*1000);
}
refresh(600);//调用方法启动定时刷新,数值单位:秒。

    2)通过meta标签来实现(在页面中添加meta标签refresh也可以指定每隔指定时间就刷新当前页面),示例代码如下: 

<metahttp-equiv="refresh"content="600"/>

    上述meta标签可以实现每过600秒就刷新一次当前页面。

    在上述两种方案中,较好的为第二种,因为如果当前页面是在IE浏览器的模式窗口中打开的,默认情况下,

    self.location.reload()方法将会失效,而refreshmeta标签在IE模式窗口下仍然有效。

    上述两种方式都实现了刷新当前页面,并且使用起来非常简单,不过很遗憾的是,它们存在一种几乎致命的缺陷。试想一下,如果在论坛发帖等需要用户输入内容的页面,用户花费较长的时间输    入了许多文本内容,可是突然遇到了一个定时页面刷新,结果用户输入的所有内容都没了,估计这个时候用户连掐死你的心都有了……

 

因此我们需要在当前页面本身不刷新、不影响用户的任何操作的情况下实现定时刷新。最常见的解决方法仍然有两种。

  1、在当前页面添加一个隐藏的iframe,然后在该iframe里面实现定时刷新。

  2、使用JavaScript Image对象来实现定时刷新,(服务器的响应可以是文字等非图片内容,非图片内容只会造成图像加载失败,而我们的图像标签本身就是隐藏的,不管是加载成功还是失败都不    会显示,毕竟我们的主要目的是发送请求给服务器,让服务器保持session处于活动状态。)

  3、使用Ajax来实现定时刷新。

 使用说明:

  使用iframe标签实现定时刷新:
    优点是:不需要编写JavaScript代码,可以在浏览器禁用JavaScript的情况下实现定时刷新;
    缺点是:在某些不支持iframe标签的老式浏览器中没有效果,此外,iframe 标签在浏览器中新增加了一个独立的页面,即使没有显示出来,不过其内部解析的window、document等对象仍然        存在,占用的浏览器内存相对较多。
 
  使用Image对象:
    优点是:与iframe相比,占用的内存相对较少,支持Image的浏览器也相对较多(现代浏览器均支持);
    缺点是:在浏览器禁用JavaScript的情况下就毫无用武之地了(这个现在几乎不存在,现在很少出现禁用js的情况)。
  
  Ajax来实现定时刷新:
    缺点是:因为有些老式浏览器的JavaScript无法实现Ajax,但是却可以使用Image对象。
        此外,使用Ajax需要编写更多的代码来处理XMLHttpRequest等对象的活动。

 

   

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012975987/article/details/80429721

智能推荐

【微信小程序采坑】用微信Canvas导出的图片到手机上会出现图片模糊问题_AC_greener的博客-程序员秘密

特别是分辨率高的手机,图片就越模糊。个问题其实和像素比有关,官方解释:destWidth和destHeight单位是物理像素(pixel),canvas绘制的时候用的是逻辑像素(物理像素=逻辑像素 * density),所以这里如果只是使用canvas中的width和height(逻辑像素)作为输出图片的长宽的话,生成的图片width和height实际上是缩放了到canvas的 1 / densit

默认网关Default Gateway_default _gateway 0.0.0.0 ug 0 0 0 fe0_summer_grass的博客-程序员秘密

网关(Gateway)就是一个网络连接到另一个网络的“关口”。网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。网关实质上是一个网络通向其他网

csp201803-2碰撞的小球_python满分代码_wyx翔的博客-程序员秘密

问题描述数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处。有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒。  当小球到达线段的端点(左端点或右端点)的时候,会立即向相反的方向移动,速度大小仍然为原来大小。  当两个小球撞到一起的时候,两个小球会分别向与自己原来移动的方向相反的方向,以原来的速度大小继续移动。  现在,告诉你线段的长度L,小球数量n,以及n个小球的初始位置,请你计算t秒之后,各个小球的位置。提示  因为所

AE - 03.符号库设计与实现_ae符号库设计与实现_Devin·Finn的博客-程序员秘密

03.符号库设计与实现流程图#####引用类库及接口描述引用类库:ESRI.ArcGIS.Carto:包括一些数据显示的接口和类,如ILegend,IMap,ILayerESRI.ArcGIS.Geodatabase:提供操作地理数据库的接口,如IWorkspace,IDataset,IFeatureESRI.ArcGIS.DataSourcesFile:提供打开矢量数据的接口...

推荐21个高质量图片网站,免费免版权,值得收藏_免费图片网站_搬砖精神爽的博客-程序员秘密

爆肝整理了21个高质量图片网站,免费免版权,收藏绝对不亏!!!全文将近4000字,建议先收藏在看!一、12个免版权图片网站先上总结图,大概12个免版权图片网站,简单罗列了特点和不足,下面文字版描述会放网链,建议先码后看!!!1、pixabay全球知名的图库网站,拥有上百万张免费正版高清图片素材,涵盖图片、插画、矢量图、视频等分类。特点:图片素材丰富;实时更新;支持中文搜索;图片质量高;不足:加载和下载都比较慢,有时候甚至会打不开;个人推荐指数:☆

C#如何设置session过期时间_c# session过期时间不起作用_Honey_Potter的博客-程序员秘密

1、操作系统  步骤:开始——〉管理工具——〉Internet信息服务(IIS)管理器——〉网站——〉默认网站——〉  右键“属性”——〉主目录——〉配置——〉选项——〉启用会话状态——〉会话超时(在这儿设置你要的超时时间,单位分钟)。确定即可。2、ASP.NET应用程序中Session过期时间的设置  在ASP.NET这样的Web应用中,Session是用来保存用户状态的常用手段

随便推点

ERROR: NMO not setuid-root (Unix-only)_cnyp2016的博客-程序员秘密

ERROR: NMO not setuid-root (Unix-only)一台服务器上运行多个数据库,EM无法正常使用,通过emca重建EM.命令如下:emca -config all db -repos recrea...

《王道》数据结构笔记整理2022_数据结构王道_胖胖的懒羊羊的博客-程序员秘密

数据结构第一章绪论1.1数据结构的基本概念1.2数据结构的三要素1.3算法的基本概念1.4算法的时间复杂度1.5算法的空间复杂度第一章绪论1.1数据结构的基本概念1.数据:数据是信息的载体,是描述客观事物属性的数、字符以及所有能输入到计算机中并被程序识别和处理的符号的集合。2.数据元素:数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可由若干数据项组成,数据项是构成数据元素的不可分割的最小单位。例如,学生记录就是一个数据元素,它由学号、姓名、性别等数据项组成。3.数据对象:数

微信小程序之引入vant-weapp组件库步骤非常详细(云开发)_vant weapp steps的用法_『 时光荏苒 』的博客-程序员秘密

微信小程序之引入vant-weapp组件库步骤非常详细(云开发)一、查看组件库样式:vant-weapp组件库链接:https://youzan.github.io/vant-weapp/#/intro二、初始化package.json文件、三、安装对应的vant-weapp组件库包:继续输入命令:npm i vant-weapp -S --production导入包![在这里...

揭秘第三方跟踪器对密码管理的威胁_神锁离线版的博客-程序员秘密

从 `权限`、`威胁`、`攻击` 三个方面逐步深入揭秘集成跟踪器的安全风险

Nexus 6p bootloop经历_anod的博客-程序员秘密

昨天,用了1年半的6p不知为什么就bootloop了。正常使用中,突然就重启,然后就在重启提示和google标之间来回换,完全停不下来。能进入刷机模式,回复出场什么的都用不了,都会回到bootloop。用power off可以关机,可是一旦接上电源,就又开始bootloop。白色google一出来几秒钟不动,就感觉不对头,让人崩溃。。。。一想买新机又要花钱,决定再抢救一下了。先google...

推荐文章

热门文章

相关标签