Spring boot 專案HttpSessionListener用於監聽session失效時移除線上使用者的全域性引數
阿新 • • 發佈:2019-01-02
在專案中會出現使用者不點選登出時間觸發session.invalidate()方法,此時我們就無法確定使用者的實際登入狀態,再次我們使用HttpSessionListener監聽器來管理使用者session失效,進而解決了線上使用者的統計或者全域性引數的控制
值得注意的是:
- @ServletComponentScan註解需要新增到springboot啟動類中,否則監聽器無法被掃描到而不能執行
- @WebListenter註解,新增到實現類上,如果沒有新增那麼將不能使用
/** * 使用說明 需要在啟動類上新增@ServletComponentScan註解,以掃描到該監聽器 * 使用者監聽器實現用於移除線上登入使用者資訊 * @author kexin 2018/11/19 * */ @WebListener//監聽器註解 public class OpOnlineUserSessionListener implements HttpSessionListener { /** * session被銷燬時觸發,如下情況 * 1.主動呼叫session.invalidate() * 2.session超時 */ @Override public void sessionDestroyed(HttpSessionEvent event) { HttpSession session = event.getSession(); //獲取當前使用者資訊 User loginUser = (User)session.getAttribute(Constant.LOGIN_USER); //移除線上使用者 GlobalVariable.loginMap.remove(loginUser.getUserId()); } //session被建立時觸發 @Override public void sessionCreated(HttpSessionEvent event) {} }