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技術實現的
相關文章
- 會話技術 cookie和session 學習筆記會話CookieSession筆記
- 會話技術之 Session會話Session
- Flutter 開發一個 GitHub 客戶端 | 掘金技術徵文FlutterGithub客戶端
- 會話層技術-session會話Session
- 客戶端筆記客戶端筆記
- 您的客戶是一個技術威脅嗎?
- 巨杉核心筆記(一)| SequoiaDB 會話(session)簡介筆記會話Session
- Golang 學習筆記(一) - HTTP 客戶端 - 基礎Golang筆記HTTP客戶端
- 學習筆記:客戶端物件層次(一):BOM筆記客戶端物件
- UE 客戶端和伺服器上的時間同步客戶端伺服器
- Neeto-Vue:我為了記筆記,手寫了一個為知筆記客戶端Vue筆記客戶端
- Angular Universal 學習筆記 - 客戶端渲染和伺服器端渲染的區別Angular筆記客戶端伺服器
- 新一代Flex富客戶端技術特點Flex客戶端
- RMAN之客戶端互動(一)客戶端
- 客戶端儲存筆記客戶端筆記
- PHP,ASP一句話網馬客戶端PHP客戶端
- 手遊防破解防外掛技術方案(一)客戶端篇客戶端
- oracle 客戶端與伺服器端的關係Oracle客戶端伺服器
- 聊一聊 Zookeeper 客戶端之 Curator客戶端
- 客戶成功是一種思維模式 | ONES 人物模式
- 客戶端跳轉技術,服務端跳轉技術,兩種跳轉的各自使用場合和特點客戶端服務端
- 會話技術之Cookie會話Cookie
- 關於 WebSocket 和 HTTP 區別的思考以及一個最簡單的 WebSocket 的客戶端和伺服器實現WebHTTP客戶端伺服器
- 大話儲存——磁碟原理與技術筆記(一)筆記
- FishRedux完成一個玩安卓客戶端Redux安卓客戶端
- 手擼一個新聞客戶端客戶端
- 建立一個Twisted Reactor TCP客戶端ReactTCP客戶端
- 如何建立一個Java遊戲客戶端Java遊戲客戶端
- 一個端到端的基於 form 表單的檔案上傳程式,包含客戶端和伺服器端ORM客戶端伺服器
- CloudNotes之桌面客戶端篇:增強的筆記列表Cloud客戶端筆記
- 一個開源專案維護者的筆記:為什麼我關閉 PR筆記
- openssl客戶端程式設計:一個不起眼的函式導致的SSL會話失敗問題客戶端程式設計函式會話
- TCL內訓教材-客戶關係管理與客情維護
- 四種會話追蹤技術會話
- 《客戶端儲存技術》總結客戶端
- 如何編寫一個前端框架之七-客戶端路由(譯)前端框架客戶端路由
- 會話中,如何將訪客轉化為客戶的幾種方法會話
- 記筆記:C# Socket客戶端監聽伺服器端處理方案【同步】筆記C#客戶端伺服器