在Java中判斷session是否過期,可以通過以下方式:
session.getLastAccessedTime()
方法獲取上一次訪問時間,再與當前時間進行比較,如果超過了session的最大生存時間(可以通過session.getMaxInactiveInterval()
方法獲取),則說明session已過期。示例代碼:
HttpSession session = request.getSession(false); // 獲取session,如果不存在則返回null
if (session != null) {
long lastAccessedTime = session.getLastAccessedTime(); // 獲取上一次訪問時間
long currentTime = System.currentTimeMillis(); // 獲取當前時間
int maxInactiveInterval = session.getMaxInactiveInterval(); // 獲取session的最大生存時間(以秒為單位)
long maxInactiveTime = maxInactiveInterval * 1000; // 將最大生存時間轉換為毫秒
if (currentTime - lastAccessedTime > maxInactiveTime) {
// session已過期
// 執行相應的處理邏輯
} else {
// session未過期
// 執行相應的處理邏輯
}
} else {
// session不存在,即未登錄或已注銷
// 執行相應的處理邏輯
}
session.isNew()
方法判斷session是否為新創建的,如果為新創建的session,則說明session未過期;如果不是新創建的session,則根據上一次訪問時間和最大生存時間判斷是否過期。示例代碼:
HttpSession session = request.getSession(false); // 獲取session,如果不存在則返回null
if (session != null) {
if (session.isNew()) {
// session為新創建的,未過期
// 執行相應的處理邏輯
} else {
long lastAccessedTime = session.getLastAccessedTime(); // 獲取上一次訪問時間
long currentTime = System.currentTimeMillis(); // 獲取當前時間
int maxInactiveInterval = session.getMaxInactiveInterval(); // 獲取session的最大生存時間(以秒為單位)
long maxInactiveTime = maxInactiveInterval * 1000; // 將最大生存時間轉換為毫秒
if (currentTime - lastAccessedTime > maxInactiveTime) {
// session已過期
// 執行相應的處理邏輯
} else {
// session未過期
// 執行相應的處理邏輯
}
}
} else {
// session不存在,即未登錄或已注銷
// 執行相應的處理邏輯
}
以上是兩種判斷session是否過期的方法,可以根據實際情況選擇適合的方式進行判斷。