java - session有關 - 設定session超時 - 怎麼使用session 等
目錄
4、session有什麼特點,有什麼用,為什麼會出現session
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