Session會話筆記,維護一個客戶端和伺服器之間關聯的一種技術
目錄
-
什麼是Session會話?
-
Session是一個HttpSession介面
-
Session是會話,它是用來維護一個客戶端和伺服器之間關聯的一種技術
-
每個客戶端都有自己的一個Session會話
-
Session會話中,我們經常用來儲存使用者登陸之後的資訊
-
-
Session的一些方法
-
request.getSession()
-
可用來建立和獲取Session
-
第一次呼叫是建立Session,之後再次呼叫就是獲取已經建立好的Session物件
-
-
isNew()
-
用來判斷Session是不是新的(剛建立的)(不懂啥時候變舊)
-
true:表示剛建立
-
false:表示是獲取之前建立好的
-
-
getId()
-
用來獲取會話的ID值
-
每個會話都有一個身份證號,也就是ID值,這個ID是唯一的
-
-
-
Session域資料的存取
- 存
// 往Session中儲存資料
protected void setAttribute(HttpServletRequest req, HttpServletResponse resp) throws Exception {
req.getSession().setAttribute("key1", "value1");
resp.getWriter().write("已往Session中儲存了資料");
}
- 取
// 往Session中取出資料
protected void getAttribute(HttpServletRequest req, HttpServletResponse resp) throws Exception {
Object attribute = req.getSession().getAttribute("key1");
resp.getWriter().write("從Session中獲取出的key1資料是" + attribute);
}
-
Session生命週期控制
-
Session的超時是指兩次請求的最長間隔時間(最長的不使用時間)
-
Session存在於伺服器端
-
一些方法
-
public void setMaxInactiveInterval(int interval)
-
設定Session的超時時間,超過指定的時長,Session就會銷燬
-
正值:設定Session的超時時長
-
負值:永不超時(極少使用)
-
-
public int getMaxInactiveInterval()
-
獲取Session的超時時間
-
-
public void invalidate()
-
讓當前Session會話馬上超時
-
-
-
時長的單位是:s(秒)
-
Session預設的超時時長是30分鐘
-
在Tomcat伺服器的配置檔案web.xml中預設有以下的配置,它表示當前Tomcat伺服器下的所有Session超時配置預設為30分鐘
-
-
<session-config>
<session-timeout>30</session-timeout>
</session-config>
-
修改整個工程的預設超時時長
-
在你web工程的web.xml配置檔案中做以上相同的配置,把30分鐘改為你想要的時間即可
-
-
修改個別Session的超時時長
-
setMaxInactiveInterval(int interval) 方法:單獨設定超時時長
-
-
程式碼展示
-
建立和獲取Session
-
// 建立和獲取Session
protected void createOrGetSession(HttpServletRequest req, HttpServletResponse resp) throws Exception {
// 建立和獲取Session會話物件
HttpSession session = req.getSession();
// 判斷 當前Session會話,是否是新建立出來的
boolean isNew = session.isNew();
// 獲取Session會話的唯一標識 id
String id = session.getId();
resp.getWriter().write("得到的Session,它的id是:" + id + " <br /> ");
resp.getWriter().write("這個Session是否是新建立的:" + isNew + " <br /> ");
}
-
往Session中儲存資料
// 往Session中儲存資料
protected void setAttribute(HttpServletRequest req, HttpServletResponse resp) throws Exception {
req.getSession().setAttribute("key1", "value1");
resp.getWriter().write("已往Session中儲存了資料");
}
-
往Session中取出資料
// 往Session中取出資料
protected void getAttribute(HttpServletRequest req, HttpServletResponse resp) throws Exception {
Object attribute = req.getSession().getAttribute("key1");
resp.getWriter().write("從Session中獲取出的key1資料是" + attribute);
}
-
獲取Session預設的超時時長
// 獲取Session預設的超時時長
protected void defaultLife(HttpServletRequest req, HttpServletResponse resp) throws Exception {
// 獲取Session的預設超時時長
int maxInactiveInterval = req.getSession().getMaxInactiveInterval();
resp.getWriter().write("Session的預設超時時長是:" + maxInactiveInterval + "秒");
}
-
設定超時時長為3秒
// 設定超時時長為30秒
protected void life3(HttpServletRequest req, HttpServletResponse resp) throws Exception {
// 1、先獲取Session物件
HttpSession session = req.getSession();
// 2、設定當前Session在30秒後超時
session.setMaxInactiveInterval(30);
resp.getWriter().write("當前Session已經設定30秒後超時");
}
-
設定馬上超時
// 設定馬上超時
protected void deleteNow(HttpServletRequest req, HttpServletResponse resp) throws Exception {
// 1、先獲取Session物件
HttpSession session = req.getSession();
// 2、讓Session會話馬上超時
session.invalidate();
resp.getWriter().write("Session已經無效");
}
-
瀏覽器與Session關聯的技術內幕
- Session技術在底層是基於Cookie技術實現的
相關文章
- 會話技術之 Session會話Session
- 會話層技術-session會話Session
- Flutter 開發一個 GitHub 客戶端 | 掘金技術徵文FlutterGithub客戶端
- 巨杉核心筆記(一)| SequoiaDB 會話(session)簡介筆記會話Session
- 客戶端筆記客戶端筆記
- Golang 學習筆記(一) - HTTP 客戶端 - 基礎Golang筆記HTTP客戶端
- UE 客戶端和伺服器上的時間同步客戶端伺服器
- Neeto-Vue:我為了記筆記,手寫了一個為知筆記客戶端Vue筆記客戶端
- Angular Universal 學習筆記 - 客戶端渲染和伺服器端渲染的區別Angular筆記客戶端伺服器
- RMAN之客戶端互動(一)客戶端
- 大話儲存——磁碟原理與技術筆記(一)筆記
- 關於 WebSocket 和 HTTP 區別的思考以及一個最簡單的 WebSocket 的客戶端和伺服器實現WebHTTP客戶端伺服器
- 客戶端跳轉技術,服務端跳轉技術,兩種跳轉的各自使用場合和特點客戶端服務端
- 聊一聊 Zookeeper 客戶端之 Curator客戶端
- 客戶成功是一種思維模式 | ONES 人物模式
- 會話技術之Cookie會話Cookie
- 一個端到端的基於 form 表單的檔案上傳程式,包含客戶端和伺服器端ORM客戶端伺服器
- 手遊防破解防外掛技術方案(一)客戶端篇客戶端
- openssl客戶端程式設計:一個不起眼的函式導致的SSL會話失敗問題客戶端程式設計函式會話
- 四種會話追蹤技術會話
- 如何編寫一個前端框架之七-客戶端路由(譯)前端框架客戶端路由
- 記筆記:C# Socket客戶端監聽伺服器端處理方案【同步】筆記C#客戶端伺服器
- 會話中,如何將訪客轉化為客戶的幾種方法會話
- Laravel 遠端一對多關係,中間表模型和關聯模型不能是同一個模型Laravel模型
- Redis學習筆記(十) 客戶端Redis筆記客戶端
- JavaFX及Java客戶端技術的未來Java客戶端
- 客戶端與伺服器之間雙向通訊的5種方式總結(完整程式碼演示)客戶端伺服器
- 用Vue來進行移動Hybrid開發和客戶端間資料傳輸的一種方法Vue客戶端
- FishRedux完成一個玩安卓客戶端Redux安卓客戶端
- 如何建立一個Java遊戲客戶端Java遊戲客戶端
- netty系列之:自建客戶端和HTTP伺服器互動Netty客戶端HTTP伺服器
- 使用dbms_monitor.session_trace_enable跟蹤一個會話Session會話
- iOS呼叫QQ客戶端發起臨時會話iOS客戶端會話
- 如果你想在Java中寫一個Http客戶端,你會選擇哪一種方式?Okhttp vs Apache vs JdkJavaHTTP客戶端ApacheJDK
- 一次獲取客戶端 IP 記錄客戶端
- 青芒 for Mac客戶端開發筆記Mac客戶端筆記
- MQTT伺服器搭建服務端和客戶端MQQT伺服器服務端客戶端
- 一個高顏值Flutter版WanAndroid客戶端FlutterNaNAndroid客戶端