Knight of the round table

          wansong

          session 超時問題處理 ajax(Extjs)

          2009-11-26

          Extjs session 超時問題處理

          關鍵字: extjs session 超時問題處理

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

           

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

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

            

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

          Xml代碼 復制代碼
          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>    

           

          在每個功能JS中添加代碼:

           

          Js代碼 復制代碼
          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('提示''會話超時,請重新登錄!'function(btn, text){      
          8.                 if (btn == 'ok'){      
          9.                     var redirect = 'http://localhost:8080/項目名/login.jsp';      
          10.                     window.location = redirect;      
          11.                 }      
          12.             });      
          13.          }        
          14. }     

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

          主站蜘蛛池模板: 图片| 华池县| 潼南县| 马鞍山市| 乌鲁木齐市| 丹寨县| 兰溪市| 梧州市| 桑日县| 华阴市| 玉树县| 栾川县| 新丰县| 资溪县| 新密市| 邵武市| 大余县| 寿阳县| 偏关县| 长岭县| 阿拉善右旗| 和平县| 临海市| 大同县| 石屏县| 长岭县| 聂荣县| 建阳市| 和静县| 长汀县| 萨迦县| 新民市| 夹江县| 庆城县| 涞源县| 南平市| 嵊泗县| 林口县| 漳浦县| 石狮市| 永定县|