亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

設(shè)置session有效時間的三種方式

 更新時間:2023年05月11日 10:15:05   作者:晚期鍵怒癥患者  
這篇文章主要介紹了設(shè)置session有效時間的三種方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

設(shè)置session有效時間的三種方式

session的默認(rèn)有效時間是30分鐘(min)

方法一

使用java函數(shù):session.setMaxInactiveInterval()

舉例:

設(shè)置的有效期是30分鐘(min)

session.setMaxInactiveInterval(30 * 60); //30分*60秒

注意:以秒(s)為單位。

如果設(shè)置的值為零或負(fù)數(shù),則表示會話將永不超時!

方法二

在項目中web.xml的session-config中配置

舉例:

設(shè)置有效期為30分鐘(min)

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

注意:以分鐘為單位,必須為整數(shù)。

如果 session-timeout元素的值為零或負(fù)數(shù),則表示會話將永不超時!

方法三

直接在應(yīng)用服務(wù)器中設(shè)置

舉例:

在tomcat安裝目錄中conf/web.xml找到<session-config>元素,tomcat默認(rèn)設(shè)置是30分鐘。

注意:以分鐘為單位,必須為整數(shù)。

如果 session-timeout元素的值為零或負(fù)數(shù),則表示會話將永不超時!

這三種方法設(shè)置session有效期的優(yōu)先級(此處優(yōu)先級指的是如果1、2、3三種方法同時使用時的優(yōu)先級)。  即:1>2>3

session詳細解析(是否過期、失效時間)

Session一直是我們做web項目經(jīng)常使用的,以前沒太注意,這次又細致的看了下!

1.session其實就是一個Map,鍵=值對,通過session.getAttribute("name");獲得session中設(shè)置的參數(shù)

2.session的過期時間是從什么時候開始計算的?是從一登錄就開始計算還是說從停止活動開始計算?

答:從session不活動的時候開始計算,如果session一直活動,session就總不會過期。

從該Session未被訪問,開始計時; 一旦Session被訪問,計時清0;

3.設(shè)置session的失效時間

  • a) web.xml中
<session-config>?
? ? <session-timeout>30</session-timeout> //單位為分鐘
</session-config>
  • b) 在程序中手動設(shè)置
session.setMaxInactiveInterval(30 * 60);//設(shè)置單位為秒,設(shè)置為-1永不過期
  • c) tomcat也可以修改session過期時間,在server.xml中定義context時采用如下定義:
<Context path="/livsorder" docBase="/home/httpd/html/livsorder"  
? ? ? ? ?defaultSessionTimeOut="3600" isWARExpanded="true"  
? ? ? ? ?isWARValidated="false" isInvokerEnabled="true"  ? ? ? ??
? ? ? ? ?isWorkDirPersistent="false"/>

4.如何判斷session過沒過期

1) 以前是根據(jù) if (session.getAttribute('user')==null) 判斷是否為空 

2) 如下為看到的一個帖子,判斷session不為空的好方法:request.getSeesion(boolean)方法,一下子讓我恍然大悟。

這個方法里面?zhèn)髁艘粋€boolean值,值為true時,若request中的session不存在,那么就創(chuàng)建新的會話,如果存在就返回當(dāng)前的會話;值為false時,若request中的session不存在就返回null。           

這樣我們就可以很容易的聯(lián)想到這個所謂的request的當(dāng)前會話是否存在和session過期的聯(lián)系,所以我們就可以“近似地”認(rèn)為session不存在就是session過期了,那么我們就可以很容易地判斷session是否過期了。

方法如下:     

? ? if(request.getSession(false)==null){
? ? ? ?System.out.println("Session has been invalidated!");
? ? }else{
? ? ? System.out.println("Session is active!");
? ? }

可能大家注意到我上面有一個“近似地”字眼,也就是說存在特別情況。       

這個特殊情況就是第一次請求還沒有創(chuàng)建會話的時候,那么用這個方法返回的仍然是null。       

也有很多人覺得應(yīng)該使用javax.servlet.http.HttpSessionBindingListener接口來實現(xiàn)類似功能。       

他們的意思是當(dāng)session創(chuàng)建的時候session.setAttribute("isActive","yes"),只要session沒有過期,那么我們就可以 session.getAttribute("isActive")==null來判斷,但是如果session過期以后就不能用這個辦法了,因為此時我們使用session.getAttribute()方法就會拋出java.lang.IllegalStateException,這時候我們只能通過捕捉這個異常來進行判斷,這會打亂我們整個程序的邏輯流程。

當(dāng)然我們也可以在session過期的時候這樣處理,在HttpSessionBindingListener接口的onValueUnbound()方法里面通過設(shè)置一個flag來標(biāo)志session已過期,之后都使用這個flag,那么這個flag一定是要放在application里面,application是HttpServletContex類的對象,所以我們必須對這個flag加入是哪個session過期的信息,這樣一來整個的過程就十分麻煩。      

關(guān)于用監(jiān)聽器實現(xiàn)我要補充一點,我的方法是站在某一個session的角度來實現(xiàn)的。如果說要監(jiān)測多個session就應(yīng)該站在application的角度來分析,這時候的最佳選擇就是HttpSessionBindingListener或者HttpSessionListener。     

寫這個文章的目的就是讓大家在需要判斷的時候(不管session是否過期都OK)用這樣的一條語句來簡單的實現(xiàn)功能,至于意義我們姑且不談。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot自動重啟的兩種方法

    SpringBoot自動重啟的兩種方法

    我們在項目開發(fā)階段,可能經(jīng)常會修改代碼,修改完后就要重啟Spring Boot,本文主要介紹了SpringBoot自動重啟的兩種方法,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • logback自定義json日志輸出示例詳解

    logback自定義json日志輸出示例詳解

    這篇文章主要為大家介紹了logback自定義json日志輸出,就是通過logback日志體系以及l(fā)ogstash提供的json?log依賴將數(shù)據(jù)以json格式記錄到日志文件的例子
    2022-03-03
  • SpringBoot整合EasyExcel?3.x的完整示例

    SpringBoot整合EasyExcel?3.x的完整示例

    EasyExcel 是一個基于 Java 的、快速、簡潔、解決大文件內(nèi)存溢出的 Excel 處理工具,它能讓你在不用考慮性能、內(nèi)存的等因素的情況下,快速完成 Excel 的讀、寫等功能,這篇文章主要介紹了SpringBoot整合EasyExcel3.x的過程,需要的朋友可以參考下
    2023-07-07
  • 基于Spring Boot的Environment源碼理解實現(xiàn)分散配置詳解

    基于Spring Boot的Environment源碼理解實現(xiàn)分散配置詳解

    這篇文章主要給大家介紹了基于Spring Boot的Environment源碼理解實現(xiàn)分散配置的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • maven如何查看jar的pom引入來源

    maven如何查看jar的pom引入來源

    這篇文章主要介紹了maven查看jar的pom引入來源,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • JAVA基礎(chǔ)之注解與反射的使用方法和場景

    JAVA基礎(chǔ)之注解與反射的使用方法和場景

    這篇文章主要給大家介紹了關(guān)于JAVA基礎(chǔ)之注解與反射的使用方法和場景的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • java鍵盤錄入的方法舉例詳解

    java鍵盤錄入的方法舉例詳解

    這篇文章主要給大家介紹了關(guān)于java鍵盤錄入的相關(guān)資料,我們在寫程序的時候,數(shù)據(jù)值都是固定的,但是實際開發(fā)中,數(shù)據(jù)值肯定是變化的,所以,把數(shù)據(jù)改進為鍵盤錄入,提高程序的靈活性,需要的朋友可以參考下
    2023-10-10
  • Springboot Thymeleaf數(shù)字對象使用方法

    Springboot Thymeleaf數(shù)字對象使用方法

    這篇文章主要介紹了Springboot Thymeleaf數(shù)字對象使用方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2007-09-09
  • Linux(centos7)安裝jdk1.8的詳細步驟

    Linux(centos7)安裝jdk1.8的詳細步驟

    Linux的使用相信大家都要用到j(luò)ava吧,在使用java前我們得先安裝jdk以及配置環(huán)境變量等工作,下面這篇文章主要給大家介紹了關(guān)于Linux(centos7)安裝jdk1.8的詳細步驟,需要的朋友可以參考下
    2023-10-10
  • Spring中@Scope注解用法解析

    Spring中@Scope注解用法解析

    這篇文章主要介紹了Spring中@Scope注解用法解析,@Scope注解主要作用是調(diào)節(jié)Ioc容器中的作用域,在Spring IoC容器中主要有以下五種作用域,需要的朋友可以參考下
    2023-11-11

最新評論