Knight of the round table

          wansong

          session 超時(shí)問題處理 ajax(Extjs)

          2009-11-26

          Extjs session 超時(shí)問題處理

          關(guān)鍵字: extjs session 超時(shí)問題處理

          對于普通的http請求,可以通過過濾器Filter來判斷session超時(shí),然后跳轉(zhuǎn)到登錄頁面;但是對于Ajax請求,則不會如期待的那樣自動(dòng)轉(zhuǎn)到登錄頁面(我試了網(wǎng)站上的許多種方案,都是停留在當(dāng)前頁面),好不容易找一篇,但是代碼還是有點(diǎn)問題,不能運(yùn)行,自己修改了下,并測試通過,所以拿出來分享下。
          不論是普通http請求還是ajax請求,都可以通過過濾器/攔截器來將請求捕獲,而且區(qū)分這兩種請求在于頭部信息的不同:普通http請求的header參數(shù)中沒有x-requested-with:XMLHttpRequest頭信息,而異步的有。

           

          自己定義一個(gè)Filter,然后在doFilter()中加如下代碼:

          Java代碼 復(fù)制代碼
          1. if (request.getHeader("x-requested-with") != null     
          2.         && request.getHeader("x-requested-with").equalsIgnoreCase(    //ajax超時(shí)處理      
          3.                 "XMLHttpRequest")) {      
          4.     response.addHeader("sessionstatus""timeout");      
          5. }else{//http超時(shí)的處理      
          6. }    

            

          再在WEB.XML文件中配置這個(gè)Filter,并且要放在STRUTS2的StrutsPrepareAndExecuteFilter前面,相關(guān)代碼:

          Xml代碼 復(fù)制代碼
          1. <filter>      
          2.        <filter-name>xxxFilter</filter-name>      
          3.        <filter-class>xx.xxx.xxx.xxxxFilter</filter-class>      
          4. </filter>      
          5.         
          6. <filter-mapping>      
          7.        <filter-name>xxxFilter</filter-name>      
          8.        <url-pattern>*.jsp</url-pattern>      
          9. </filter-mapping>    

           

          在每個(gè)功能JS中添加代碼:

           

          Js代碼 復(fù)制代碼
          1. Ext.Ajax.on('requestcomplete',checkUserSessionStatus, this);    
          2. function checkUserSessionStatus(conn,response,options) {      
          3.      
          4. var sessionStatus = response.getResponseHeade["sessionstatus"];    
          5.            
          6.         if(typeof(sessionStatus) != "undefined"){        
          7.             Ext.Msg.alert('提示''會話超時(shí),請重新登錄!'function(btn, text){      
          8.                 if (btn == 'ok'){      
          9.                     var redirect = 'http://localhost:8080/項(xiàng)目名/login.jsp';      
          10.                     window.location = redirect;      
          11.                 }      
          12.             });      
          13.          }        
          14. }     

          posted on 2010-10-14 13:12 w@ns0ng 閱讀(2797) 評論(0)  編輯  收藏 所屬分類: J2EE 、Java Securityjavascript html

          主站蜘蛛池模板: 手游| 图们市| 敖汉旗| 栾川县| 丽江市| 阿拉善右旗| 呼和浩特市| 道孚县| 青海省| 茂名市| 潞西市| 安龙县| 甘南县| 南丰县| 汕头市| 绥江县| 新源县| 城市| 黎城县| 上饶县| 芮城县| 平山县| 额尔古纳市| 苗栗县| 唐海县| 洛阳市| 富锦市| 兴义市| 寿宁县| 腾冲县| 三河市| 娄底市| 南开区| 永泰县| 广昌县| 澄迈县| 昌黎县| 建昌县| 徐州市| 上饶市| 垦利县|