【轉】介紹設置Session失效的幾種方法

轉載地址:http://developer.51cto.com/art/201106/269493.htm

Session對象是HttpSessionState的一個實例。該類為當前用戶會話提供信息,還提供對可用于存儲信息會話范圍的緩存的訪問,以及控制如何管理會話的方法。下面介紹設置session失效的幾種方法。

在系統登錄后,都會設置一個當前session失效的時間,以確保在用戶長時間不與服務器交互,自動退出登錄,銷毀session。
具體設置很簡單,方法有三種:

(1)在主頁面或者公共頁面中加入:session.setMaxInactiveInterval(900);參數900單位是秒,即在沒有活動15分鐘后,session將失效。

這里要注意這個session設置的時間是根據服務器來計算的,而不是客戶端。所以如果是在調試程序,應該是修改服務器端時間來測試,而不是客戶端。

(2)也是比較通用的設置session失效時間的方法,就是在項目的web.xml中設置

  1. <!--?設置session失效,單位分?-->?
  2. <session-config>?
  3. <session-timeout>1</session-timeout>?
  4. </session-config>?

(3)直接在應用服務器中設置,如果是tomcat,可以在tomcat目錄下conf/web.xml中找到<session-config>元素,tomcat默認設置是30分鐘,只要修改這個值就可以了。

需要注意的是如果上述三個地方如果都設置了,有個優先級的問題,從高到低:(1)>(2)>(3)

在一般系統中,也可能需要在session失效后做一些操作,

(1)控制用戶數,當session失效后,系統的用戶數減少一個等,控制用戶數在一定范圍內,確保系統的性能。

(2)控制一個用戶多次登錄,當session有效時,如果相同用戶登錄,就提示已經登錄了,當session失效后,就可以不用提示,直接登錄了。

那么如何在session失效后,進行一系列的操作呢?

這里就需要用到監聽器了,即當session因為各種原因失效后,監聽器就可以監聽到,然后執行監聽器中定義好的程序就可以了。

監聽器類為:HttpSessionListener類,有sessionCreated和sessionDestroyed兩個方法

自己可以繼承這個類,然后分別實現。

sessionCreated指在session創建時執行的方法

sessionDestroyed指在session失效時執行的方法

給一個簡單的例子:

  1. public?class?SessionListener?implements?HttpSessionListener{? ?
  2. public?void?sessionCreated(HttpSessionEvent?event)?{? ?
  3. HttpSession?ses?=?event.getSession();? ?
  4. String?id=ses.getId()+ses.getCreationTime();? ?
  5. SummerConstant.UserMap.put(id,?Boolean.TRUE);?//添加用戶? ?
  6. }? ?
  7. public?void?sessionDestroyed(HttpSessionEvent?event)?{? ?
  8. HttpSession?ses?=?event.getSession();? ?
  9. String?id=ses.getId()+ses.getCreationTime();? ?
  10. synchronized?(this)?{? ?
  11. SummerConstant.USERNUM--;?//用戶數減一? ?
  12. SummerConstant.UserMap.remove(id);?//從用戶組中移除掉,用戶組為一個map? ?
  13. }? ?
  14. }? ?
  15. }?

然后只需要把這個監聽器在web.xml中聲明就可以了

  1. <listener>? ?
  2. <listener-class>? ?
  3. com.demo.SessionListener? ?
  4. </listener-class>? ?
  5. </listener>??

三種方法,到這里介紹完了,希望對你有幫助。

轉載于:https://www.cnblogs.com/csshaw/p/3700825.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/260530.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260530.shtml
英文地址,請注明出處:http://en.pswp.cn/news/260530.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql導入數據load data infile用法整理

有時候我們需要將大量數據批量寫入數據庫&#xff0c;直接使用程序語言和Sql寫入往往很耗時間&#xff0c;其中有一種方案就是使用MySql Load data infile導入文件的形式導入數據&#xff0c;這樣可大大縮短數據導入時間。 假如是從MySql客戶端調用&#xff0c;將客戶端的文件導…

python3循環一直到一個值結束_一步一步學Python3(小學生也適用) 第十七篇:循環語句for in循環...

一、Python for in循環Python for in 循環&#xff0c;是用來遍歷任何數據序列&#xff0c;如一個列表&#xff0c;一個字符串&#xff0c;一個字典&#xff0c;一個元組等。for in 循環的一般語法如下&#xff1a;for item in 序列:語句塊else:語句塊for in 字符串&#xff1…

設置Jupyter notebook 默認工作路徑,修改Jupyter notebook 默認瀏覽器為Chrome

這里寫目錄標題一 設置Jupyter notebook 默認工作路徑二 修改Jupyter notebook 默認瀏覽器為Chrome一 設置Jupyter notebook 默認工作路徑 安裝好anaconda 后&#xff0c;jupyter notebook默認是有安裝好的。在windows的菜單欄找到anaconda目錄&#xff0c;如下圖 鼠標右鍵點…

python調用c#注意事項_Python調用C#編寫的DLL

起因是工作中需要用的開發編寫的DLL&#xff0c;但是它是使用C#編寫的&#xff0c;本人不想使用C#去寫測試代碼&#xff0c;所以需要使用Python來掉這個DLL內的方法 就用這個就很好&#xff0c;不要問為啥不用微軟的Ironpython和別的啥&#xff0c;好用就行了&#xff0c;解決問…

jquery實戰--定寬

大家有沒有遇到過一個問題&#xff0c;就是一個列表&#xff0c;或是一段文字過多時&#xff0c;截取多余的部分用省略號&#xff0c;好吧&#xff0c;證明你實力的時候到了&#xff0c;我下面先分解一下方法&#xff0c;再用插件寫出來,首先我們說的是&#xff0c;用到的第一個…

struts2 Action獲取表單數據

1.通過屬性驅動式 1.首先設置 表單中的數據的name值 如&#xff1a;<input type"text" name"username" value""> 2.你用的是struts2&#xff0c;那么就在java類中寫一個變量&#xff1a;變量名和頁面上的name值一致 并有這個變量的get 和…

python 計算器 eval ctf_CTF逆向--.NET與Python篇

題目(來源&#xff1a;Jarvis-OJ)&#xff1a;Classical CrackmeClassical CrackMe2FindKeyLoginClassical Crackme首先查殼沒有殼&#xff0c;不過發現這是一個.net的程序&#xff0c;將其拖進dnSpy中&#xff0c;找到主程序&#xff0c;同時發現關鍵代碼&#xff0c;如下所示…

2016年秋季個人閱讀計劃

閱讀書目&#xff1a;《軟件需求十步走》 讀后感發表日期&#xff1a;閱讀書目&#xff1a;《用戶故事與敏捷方法》 讀后感發表日期&#xff1a;第一篇&#xff1a;10月1日 第二篇&#xff1a;10月3日 第三篇&#xff1a;10月7日 第四篇&#xff1a;10月15日 第五篇&#xff1a…

第10章 Python 數字圖像處理(DIP) - 圖像分割 基礎知識 標準差分割法

This Chapter is all about image segmentation. I still not finished whole chapter, but here try to publish some for reference. 這里寫目錄標題基礎知識import sys import numpy as np import cv2 import matplotlib import matplotlib.pyplot as plt import PIL from …

OFBiz的探索進階

主要參照https://cwiki.apache.org/OFBIZ/ofbiz-tutorial-a-beginners-development-guide.html這個教程&#xff0c;實現的過程教程上很詳細&#xff0c;故這里不多說 還參考了下http://www.hotwaxmedia.com/apache-ofbiz-blog/ofbiz/ofbiz-tutorials/ofbiz-tutorial-building-…

python3語法都相同嗎_python2 與 python3 語法區別--轉

原文地址&#xff1a;http://old.sebug.net/paper/books/dive-into-python3/porting-code-to-python-3-with-2to3.html 使用2to3將代碼移植到Python 3 ? Life is pleasant. Death is peaceful. It’s the transition that’s troublesome. ? — Isaac Asimov (attributed) 概…

對GCD的一些理解和實踐

對GCD的一些理解和實踐GCD GCD&#xff0c;全程Grand Central Dispatch&#xff0c;是蘋果為了多核并行提出的解決方案。它是使用C語言實現&#xff0c;但是由于用了block來處理回調&#xff0c;所以使用起來十分方便。并且GCD會自動管理線程的生命周期&#xff0c;不需要我們去…

python scrapy爬蟲遇見301_在Pycharm中運行Scrapy爬蟲項目的基本操作

目標在Win7上建立一個Scrapy爬蟲項目&#xff0c;以及對其進行基本操作。運行環境&#xff1a;電腦上已經安裝了python(環境變量path已經設置好)&#xff0c;以及scrapy模塊&#xff0c;IDE為Pycharm 。操作如下&#xff1a;一、建立Scrapy模板。進入自己的工作目錄&#xff0c…

[Buzz Today]2012.08.08

# Dark Reign 2 源代碼現身Google Code Pandemic工作室開發的即時戰略游戲《Dark Reign 2》源代碼被泄露到了Google Code http://code.google.com/p/darkreign2/ # Warsow 1.0發布 Set in a futuristic cartoonish world, Warsow is a completely free fast-paced first-person…

PyTorch訓練中Dataset多線程加載數據,比Dataloader里設置多個workers還要快

PyTorch訓練中Dataset多線程加載數據&#xff0c;而不是在DataLoader 背景與需求 現在做深度學習的越來越多人都有用PyTorch&#xff0c;他容易上手&#xff0c;而且API相對TF友好的不要太多。今天就給大家帶來最近PyTorch訓練的一些小小的心得。 大家做機器學習、深度學習都…

Trading

http://v.youku.com/v_show/id_XMTA0OTcxMjgw.html?fromy1.2-1-87.3.8-1.1-1-1-7 轉載于:https://www.cnblogs.com/wangjianping/p/3705524.html

算法9---二叉樹的遍歷不用棧和遞歸

二叉樹的遍歷不用棧和遞歸 轉自&#xff1a;ACM之家 http://www.acmerblog.com/inorder-tree-traversal-without-recursion-and-without-stack-5988.html我們知道&#xff0c;在深度搜索遍歷的過程中&#xff0c;之所以要用遞歸或者是用非遞歸的棧方式&#xff0c;參考二叉樹非…

python調用攝像頭人臉識別代碼_利用face_recognition,dlib與OpenCV調用攝像頭進行人臉識別...

用已經搭建好 face_recognition&#xff0c;dlib 環境來進行人臉識別 未搭建好環境請參考&#xff1a; 使用opencv 調用攝像頭 import face_recognition import cv2 video_capture cv2.videocapture(0) # videocapture打開攝像頭&#xff0c;0為筆記本內置攝像頭&#xff0c;1…

python列表批量 修改_python實現多進程按序號批量修改文件名的方法示例

本文實例講述了python實現多進程按序號批量修改文件名的方法。分享給大家供大家參考&#xff0c;具體如下&#xff1a;說明文件名命名方式如圖&#xff0c;是數字序號開頭&#xff0c;但是中間有些文件刪掉了&#xff0c;序號不連續&#xff0c;這里將序號連續起來&#xff0c;…

Struts1 tag

標簽庫&#xff1a; a) struts框架下的struts標簽庫 b) sun jstl c標簽庫 作用: 1) jsp 和 java代碼分離 -- 自定義標簽 用標簽來替代Java的代碼 2) struts標簽 能夠和struts-config.xml actionForm等特有的對象進行交互 stru…