1. 程式人生 > >傳送AJAX請求前先校驗伺服器是否重啟過

傳送AJAX請求前先校驗伺服器是否重啟過

調整起因:當用戶處於應用登入後的介面內時,專案重啟後未重新登入而直接發起ajax請求不能轉至登入 頁面,介面不友好使用者未看到系統響應

解決方案: a.後端:在攔截器處進行AJAX請求過濾完成處理。發現Session不存在後,返回對$.ajaxSetup({})請求的響應。部分程式碼如下:

LsUser user = (LsUser) session.getAttribute("user"); if(ValidateUtil.isEmpty(user)){//session過期

           String ajaxSubmit = request.getHeader("X-Requested-With");             if(ajaxSubmit != null && ajaxSubmit.equals("XMLHttpRequest")){                 //AJAX_TIMEOUT                 PrintWriter printWriter = response.getWriter();                    printWriter.print("AJAX_TIMEOUT");                    printWriter.flush();                    printWriter.close();                             }else{                 //UN_AJAX_TIMEOUT                 response.sendRedirect("/project/views/return");             }

} b.前端:發起AJAX請求前先發送$.ajaxSetup({})請求。當發現Session過期後,跳轉到指定頁面。部分程式碼如下:

$.ajaxSetup({                      type : 'POST',                      dataFilter : function(data, type) {                          if (data == "AJAX_TIMEOUT" || data == "[object XMLDocument]") {                              var top = window;                              while (top != top.parent) {                                    top = top.parent;                               }                               $.toast("登入已超時,請重新登入","forbidden");                                top.location.href="${path}/views/return";                           }else{                              return data;                          }                      }   })

狀態:已實現。