【学习笔记】【Javaweb】二、Session对象过期时间三种设置方法、Session失效监听器
一、前言
本文:https://www.cnblogs.com/Twobox/p/10361712.html
参考:https://www.cnblogs.com/diewufeixian/p/4221747.html
自己设计SSO系统的时候,需要考虑多个客户网站与中心网站的Session有效期同步问题。
即需要满足:
客户端网站Session剩余失效时间必须短于中心网站。
中心网站Session失效的时候,客户端网站必须全部声明失效。
场景:
用户第一次在中心网站登陆的时候会创建并刷新 中心网站 的Session过期时间。但随后就去访问子网站,后面可能就不会再访问中心网站。
故:用户访问某子网站时,子网站通知中心网站刷新Session过期时间。
子网站毕竟是别人的网站,中心网站无法保证子网站会及时通知自己刷新Session过期时间。所以也可能存在某子网站Session待过期时间长于中心网站。
故:为了安全保证并瞒住上面两个要求。监听器监听中心网站某Session失效后,随后通知相关子网站强制声明Session失效。
二、开始
按照优先级,从小到大介绍:
① 在web容器中设置(以tomcat为例)

tomcat/conf/web.xml 下 12%左右的位置。

单位为分钟!!!
tomcat默认session超时时间为30分钟,负数或0为不限制session失效时间。
② 在程的web.xml中设置

单位为分钟!!!
③ 过java代码设置
session.setMaxInactiveInterval(30*60);
单位为 秒!!!!!!
即在没有活动30分钟后,此session将失效。
三种方式优先等级:1 < 2 < 3
三、session监听器
当session因为各种原因失效后,监听器就可以监听到,然后执行监听器中定义好的程序就可以了。
监听器类为:HttpSessionListener类,有sessionCreated和sessionDestroyed两个方法
自己可以继承这个类,然后分别实现
sessionCreated指在session创建时执行的方法
sessionDestroyed指在session失效时执行的方法
例子:
public class OnlineUserListener implements HttpSessionListener{
public void sessionCreated(HttpSessionEvent event){
// session创建后
HttpSession session=event.getSession;
// 有了 session后,巴拉巴拉巴拉一顿操作。
}
public void sessionDestroyed(HttpSessionEvent event){
// session 立马销毁前
HttpSession session=event.getSession;
// 有了 session后,巴拉巴拉巴拉一顿操作。
}
}
}
四、后言
然后就可以胡作非为了。
2019-02-11 14:14:48
【学习笔记】【Javaweb】二、Session对象过期时间三种设置方法、Session失效监听器的更多相关文章
- JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别
JavaScript:学习笔记(7)——VAR.LET.CONST三种变量声明的区别 ES2015(ES6)带来了许多闪亮的新功能,自2017年以来,许多JavaScript开发人员已经熟悉并开始使用 ...
- Dynamic CRM 2013学习笔记(二十八)用JS动态设置字段的change事件、必填、禁用以及可见
我们知道通过界面设置字段的change事件,是否是必填,是否可见非常容易.但有时我们需要动态地根据某些条件来设置,这时有需要通过js来动态地控制了. 下面分别介绍如何用js来动态设置. 一.动态设 ...
- Redis学习笔记(二)Redis支持的5种数据类型的总结之String和Hash
引言 在Redis学习笔记(一)中我们已经会安装并且简单使用Redis了,接下来我们一起来学习下Redis支持的5大数据类型. 简介 Redis是REmote DIctionary Server(远程 ...
- JavaWeb关于session生命周期的几种设置方法
一般session的生命周期都是建立在用户登录系统后对用户信息进行一个记录,session类似于你有一张银行卡,而卡里的钱就是属于session存储的信息,卡掉了就不能取出里面的钱. 以前sessio ...
- O(n*logn)级别的算法之二(快速排序)的三种实现方法详解及其与归并排序的对比
一,单路快排1.测试用例: #ifndef INC_06_QUICK_SORT_DEAL_WITH_NEARLY_ORDERED_ARRAY_SORTTESTHELPER_H #define INC_ ...
- DOM学习笔记(二)对象方法与属性
所有 HTML 元素被定义为对象,而编程接口(对象的访问)则是对象方法和对象属性. 事实上,常用的只用window对象及其子对象document对象,以及事件Event对象. Window 对象 Wi ...
- Java并发编程学习笔记(二)——对象的共享
主要概念:可见性.重排序.失效数据.最低安全性.发布.逸出.线程封闭(Ad-hoc.栈封闭.ThreadLocal类).不变性.Final域.事实不可变对象. 1.在没有同步的情况下,编译器.处理器以 ...
- spring学习笔记2---MVC处理器映射(handlerMapping)三种方式(附源码)
一.根据Beanname访问controller: 在springmmvc-servlet.xml的配置handlermapping中加入beanname,通过该beanname找到对应的contro ...
- Java学习笔记之linux配置java环境变量(三种环境变量)
0x00 压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586.bin 这时会出现一段协议,连继敲回车 ...
随机推荐
- [Swift]LeetCode62. 不同路径 | Unique Paths
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...
- [Swift]LeetCode329. 矩阵中的最长递增路径 | Longest Increasing Path in a Matrix
Given an integer matrix, find the length of the longest increasing path. From each cell, you can eit ...
- [Swift]LeetCode763. 划分字母区间 | Partition Labels
A string S of lowercase letters is given. We want to partition this string into as many parts as pos ...
- C# 当中 LINQ 的常规用法(Lambda 方式)
仅以本篇博文记录 LINQ 相关操作的基本知识,原型参考自 MSDN 相关知识,中间加以自己的理解与 DEMO. 1. IEnuemrable<T>.Select() Select 方法比 ...
- 一条命令解决mac版本python IDLE无法输入中文问题
安装完Python通常自动就有了一个简易的集成环境IDLE,但在mac上,无法在IDLE中使用中文. 通常故障有两种情况: 在IDLE中,中文输入法根本无法工作,不会弹出输入框,所有的输入都被当做英文 ...
- synchronized底层实现学习
上文我们总结了 synchronized 关键字的基本用法以及作用,并未涉及 synchronized 底层是如何实现的,所谓刨根问底,本文我们就开始 synchronized 原理的探索之旅吧(*& ...
- leetcode — symmetric-tree
import java.util.Stack; /** * Source : https://oj.leetcode.com/problems/symmetric-tree/ * * * Given ...
- CVE漏洞—PHPCMS2008 /type.php代码注入高危漏洞预警
11月4日,阿里云安全首次捕获PHPCMS 2008版本的/type.php远程GetShell 0day利用攻击,攻击者可以利用该漏洞远程植入webshell,导致文件篡改.数据泄漏.服务器被远程控 ...
- ES6 系列之 Babel 是如何编译 Class 的(下)
前言 ES5 寄生组合式继承 function Parent (name) { this.name = name; } Parent.prototype.getName = function () { ...
- 图示Java类的初始化顺序
Java类的初始化顺序 在开发中,知道Java类的初始化顺序才能让我们更加清楚地掌握程序的执行流程.先把结论贴出来,Java里,从图里的1~6,分别按顺序执行. 以下为代码验证阶段,一共三个类 ...