1. 程式人生 > >struts2攔截器判斷使用者是否為ajax請求

struts2攔截器判斷使用者是否為ajax請求

      現在的網站,應該絕大多數用jquery作為基礎類庫了。假設有這樣的需求,在用struts2做許可權管理的時候,我們可以攔截使用者請求的資源,然後判斷該使用者是否有相應資源的許可權。如果沒有就返回一個字串,讓其跳轉相應的頁面,問題來了。如果是ajax請求呢,使用者是不會跳轉的,雖然使用者的操作被攔截,但是使用者卻不知道。所以我們可以在攔截成功的時候,響應一個字元,但是必須先判斷出,使用者的當前請求是否ajax請求。

這段程式碼只是針對jquery的ajax請求。 如果經常用firebug進行除錯的話,會發現jquery的ajax都會向後退傳送一個X-Requested-With報頭,其值為XMLHttpRequest。所以我們可以利用這個特點來判斷。

  1. privateboolean isAjaxRequest(HttpServletRequest request) {  
  2.     String header = request.getHeader("X-Requested-With");  
  3.     if (header != null && "XMLHttpRequest".equals(header))  
  4.         returntrue;  
  5.     else
  6.         returnfalse;  
  7. }