【学习笔记】【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]LeetCode53. 最大子序和 | Maximum Subarray
Given an integer array nums, find the contiguous subarray (containing at least one number) which has ...
- [Swift]LeetCode673. 最长递增子序列的个数 | Number of Longest Increasing Subsequence
Given an unsorted array of integers, find the number of longest increasing subsequence. Example 1: I ...
- [Swift]LeetCode875. 爱吃香蕉的珂珂 | Koko Eating Bananas
Koko loves to eat bananas. There are N piles of bananas, the i-th pile has piles[i]bananas. The gu ...
- markdown反射型xss漏洞复现
markdown xss漏洞复现 转载至橘子师傅:https://blog.orange.tw/2019/03/a-wormable-xss-on-hackmd.html 漏洞成因 最初是看到Hack ...
- Spring中的IOC_源码_随笔
Spring ioc 叫控制反转,也就是把创建Bean的动作交给Spring去完成. spring ioc 流程大致为 定位-> 加载->注册 先说几个比较有意思的点 1.Spring中 ...
- Xapian的内存索引-添加文档
本文主要记录Xapian的内存索引在添加文档过程中,做了哪些事情. 内容主要为函数执行过程中的流水线. demo代码: Xapian::WritableDatabase db = Xapian::In ...
- partition分区
1.按id拆分 mysql -uroot mysql>use test; mysql>create table topic ( tid ) not ),partition t1 value ...
- java面向对象三大特性:封装、继承、多态
一.封装 封装也称信息隐藏,是指利用抽象数据类型把数据和基于数据的操作封装起来,使其成为一个不可分割的整体,数据隐藏在抽象数据内部,尽可能的隐藏数据细节,只保留一些接口使其与外界发生联系.也就是说用户 ...
- Python内置函数(46)——oct
英文文档: oct(x) Convert an integer number to an octal string. The result is a valid Python expression. ...
- 并发编程(一)—— volatile关键字和 atomic包
本文将讲解volatile关键字和 atomic包,为什么放到一起讲呢,主要是因为这两个可以解决并发编程中的原子性.可见性.有序性,让我们一起来看看吧. Java内存模型 JMM(java内存模型) ...