1. 程式人生 > >spring中session管理

spring中session管理

假設:在使用者登入系統一段時間沒有操作後,session失效,如果這時使用者有操作時應該跳轉到登入頁面要求重新登入。

一般解決方法:

(1)使用者首次登入成功時,將使用者物件存入session,如 session.setAttibute("loginUser", user);

(2)定義攔截器,對於所有關於某中url請求進行攔截,然後獲取loginUser的物件,如果不存在,那麼session過期:

  1. import org.springframework.stereotype.Repository;  
  2. import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;  
  3. @Repository
  4. publicclass LoginInterceptor extends HandlerInterceptorAdapter {  
  5.     @Override
  6.     publicboolean preHandle(HttpServletRequest request,   
  7.         HttpServletResponse response, Object handler) throws Exception {  
  8.         Object obj = request.getSession().getAttribute("loginUser");  
  9.         if
    (obj==null){  
  10.             request.getRequestDispatcher("/login.jsp").forward(request, response);   
  11.         returnfalse;  
  12.         }  
  13.         else{  
  14.             returnsuper.preHandle(request, response, handler);  
  15.         }  
  16.     }  
  17. }  

如果發現session失效,將會跳轉到login.jsp要求重新登入。

(3)配置攔截器:
  1. <mvc:interceptors
    >
  2.     <mvc:interceptor>
  3.         <mvc:mappingpath="/*.html"/>
  4.         <beanclass="com.xx.xxx.util.LoginInterceptor"/>
  5.     </mvc:interceptor>
  6. </mvc:interceptors>
這樣,當有以*.html結尾的請求時,將首先被攔截器LoginInterceptor攔截。