1. 程式人生 > >java - session有關 - 設定session超時 - 怎麼使用session 等

java - session有關 - 設定session超時 - 怎麼使用session 等

目錄

 

1、設定session超時失效

1.1、springboot 專案設定

1.2、web.xml

1.3、java程式碼設定

1.4、tomcat 伺服器設定

1.5、其他

2、什麼是session

3、怎麼使用session

增:

刪:

改:

查:

4、session有什麼特點,有什麼用,為什麼會出現session

5、request、response

6、servlet

7、其他

8、面試問:


 

1、設定session超時失效

幾種方式中   程式碼設定> 專案配置檔案 > Tomcat配置 。 專案配置檔案用的較多

1.1、springboot 專案設定

springboot 1.x  : 

server.session.timeout=300  
單位 秒

springboot 2.0 :

server.servlet.session.timeout = 10000000
單位 秒

1.2、web.xml

<session-config>
<session-timeout>15</session-timeout>
</session-config>
單位 分

1.3、java程式碼設定

session.setMaxInactiveInterval(30*60);//以秒為單位,即在沒有活動30分鐘後,session將失效
設定為-1永不過期

 springboot(未試):

 @Bean
public EmbeddedServletContainerCustomizer containerCustomizer(){
       return new EmbeddedServletContainerCustomizer() {
           @Override
           public void customize(ConfigurableEmbeddedServletContainer container) {
                container.setSessionTimeout(1800);//單位為S
          }
    };
}

--------------------- 
在啟動器中加上 ↑

1.4、tomcat 伺服器設定

tomcat預設session超時失效時間為30分鐘。

修改:在tomcat-7.0\conf\web.xml中設定,以下是tomcat7.0中預設配置:

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

1.5、其他

 

2、什麼是session

開會談話,資訊包含在話語中,所以它能儲存資訊。

3、怎麼使用session

增:

在servlet中呼叫request.getSession();或者request.getSession(true); 伺服器會產生session

然後可以在session中設定值:session.setAttribute("一個key", 一個value);

如果要覆蓋session需要在配置檔案中設定。

如果呼叫request.getSession(false);將不會產生session

需要注意的是,單純使用servlet不會產生session,使用jsp預設會產生session。因為jsp編譯成class檔案時會呼叫到上面產生session的方法。

jsp產生session參考:https://blog.csdn.net/cxl0921/article/details/76854313

刪:

刪除一個鍵:session.removeAttribute("key");

刪除所有鍵:session.invalidate(); 

改:

獲取後重新設定。

查:

HttpSession session=request.getSession();

session.getAttribute("name"); 獲取對應的name引數資訊,

查詢所有session 看 7。

還有一個查詢id方法getid

String getId( ),獲取當前的會話ID。每個會話在伺服器端都存在一個唯一的標示sessionID,session物件傳送到瀏覽器的唯一資料就是sessionID,它一般儲存在cookie中。

4、session有什麼特點,有什麼用,為什麼會出現session

保持狀態:比如保持登入狀態。

session類似於map是鍵值對的形式存在的。

session的過期時間是從session不活動的時候開始計算,如果session一直活動,session就總不會過期,從該Session未被訪問,開始計時; 一旦Session被訪問,計時清0;

為什麼出現:因為他有狀態,http是無狀態的(沒有記憶功能),兩次請求時不知道是不是訪問過。

5、request、response

待續

6、servlet

待續

7、其他

遍歷所有session:

    //方法一:通過遍歷的方法進行遍歷
        String FileName="";
        HttpSession session=request.getSession();//獲取session
        Object name=session.getAttribute("AddFileName");
        System.out.println(name);
        Enumeration enumeration =session.getAttributeNames();//獲取session中所有的鍵值對
        //遍歷enumeration中的鍵值對
        String[] names=session.getValueNames();
        for(int i=0;i<names.length;i++){
            if(names[i].equals("AddFileName")){
                FileName+=session.getValue(names[i])+"@";
            System.out.println(FileName);
            }
        }
        
    //方法二:通過for迴圈進行遍歷
        while(enumeration.hasMoreElements()){
            String AddFileName=enumeration.nextElement().toString();//獲取session中的鍵值
            String value=(String)session.getAttribute(AddFileName);//根據鍵值取出session中的值
            System.out.println(value);
            FileName+=value+"@";
            System.out.println(FileName);
            //String FileName= (String)session.getAttribute("AddFileName");
        }

設定session可覆蓋:待續

8、面試問:

待續

 

參考來源:

https://www.cnblogs.com/diewufeixian/p/4221747.html

https://blog.csdn.net/fanbingfu/article/details/78318855

https://blog.csdn.net/qq_31971675/article/details/52081742

https://zh.wikipedia.org/wiki/%E4%BC%9A%E8%AF%9D_(%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6)

https://zhidao.baidu.com/question/758123072726759484.html

https://blog.csdn.net/cxl0921/article/details/76854313