處理ajax的session超時

做web開發時,當session超時時,如果不是ajax請求,很簡單就能實現跳到指定的頁面。但是ajax請求就會有問題。session超時的時候,點擊到ajax請求就會彈出一些頁面源碼文件。

?首先建了個攔截器,來判斷session超時。用戶登錄后會保存用戶信息在一個session里,在session的監聽里,session超時會銷毀保存在session里的用戶信息,而攔截器就通過session里是否有用戶信息來判斷session超時。

?攔截器是spring-mvc的攔截器,在攔截器里判斷是不是ajax請求:

public class LoginInterceptor extends HandlerInterceptorAdapter{ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { Object obj = request.getSession().getAttribute(SecurityConstants.LOGIN_USER); if (null == obj) { //未登錄 if (request.getHeader("x-requested-with") != null && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){ //如果是ajax請求響應頭會有,x-requested-with  response.setHeader("sessionstatus", "timeout");//在響應頭設置session狀態  }else{ response.sendRedirect(request.getContextPath()+"/login.jsp"); } return false; } return super.preHandle(request, response, handler); } }

這樣,如果session超時,而且是ajax請求,就會在響應頭里,sessionstatus有一個timeout;

再用一個全局的方法來處理,session超時要跳轉的頁面。

jquery?可以用$.ajaxSetup?方法,ext也有類似的方法

   $.ajaxSetup({   contentType:"application/x-www-form-urlencoded;charset=utf-8", complete:function(XMLHttpRequest,textStatus){ var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); //通過XMLHttpRequest取得響應頭,sessionstatus,  if(sessionstatus=="timeout"){ alert("登錄超時,請重新登錄!"); //如果超時就處理 ,指定要跳轉的頁面  window.location.replace(webPath.webRoot + "/login.jsp"); } } });

轉載于:https://www.cnblogs.com/1001lsj/p/5069166.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257914.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257914.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257914.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

菜根譚#249

色欲火熾,而一念及病時便興似寒灰; 名利飴甘,而一想到死地便味如嚼蠟。 故人常憂死慮病,亦可消幻業而長道心。轉載于:https://www.cnblogs.com/star4knight/p/4154590.html

實現物聯網項目,你需要提前知道的6件事情

目前為止,對于大多數尋求數字化與服務化轉型的制造商來說,實現物聯網應用項目仍然是一個很大的挑戰。 我們此前做過一項研究,到2016年底,全球企業級物聯網項目將超過10000個。但是其中大部分的項目都還是處于初期概念驗證(PoC)階段&#xff0…

android腳本快捷方式,Android:如何創建主屏幕快捷方式啟動shell腳本?

答案:您的問題的答案應該是GScript(開放源代碼和“根除設備上的任何地方”),但是當腳本完成時,誰想要盯著該模態終端輸出屏幕?詳情如下.> SManager (free version)將讓您將自定義腳本存儲在設備的任何位置,即使您使用根設備的內部存儲也是如此.它將允…

讀書 文摘 筆記

鳳凰項目: 一個IT運維的傳奇故事 微信商城開發實戰 跨境電商多平臺運營 活出生命的意義 托馬斯阿爾瓦愛迪生 奇跡的一生 阿爾伯特愛因斯坦 固執 自信 專利局 我的世界觀 愛因斯坦 艾薩克牛頓 母親讓牛頓停學在家務農,贍養家庭。但牛頓一有機會便埋首書卷&#…

修改Visual Stdio 2010界面,以及添加一些其它VS2010的插件

打開 Tools\Extension Manager(工具\擴展管理器)。 點聯機庫。 搜索“visual studio color theme editor”,就能看到一個名為“visual studio color theme editor”的擴展, 下載安裝好這個擴展,重新啟動 Visual Studio…

【NOIP2013】貨車運輸

Description A 國有 n 座城市,編號從 1 到 n,城市之間有 m 條雙向道路。每一條道路對車輛都有重量限制,簡稱限重。現在有 q 輛貨車在運輸貨物,司機們想知道每輛車在不超過車輛限重的情況下,最多能運多重的貨物。 Input…

殺死應用進程 android,如何殺死Android應用程序啟動的logcat進程?

我有Android應用程序,在Service啟動實現后面跟著代碼:...Process process Runtime.getRuntime().exec("logcat -v time -s " arg);BufferedReader bufferedReader new BufferedReader(new InputStreamReader(process.getInputStream()));...如您所見,我…

Android筆記(六十七) 自定義控件

實際編程中,系統提供的控件往往無法滿足我們的需求,一來是樣子丑陋,二來是一些復雜的組合需要多次使用的話,每次都寫一堆控件的組合會很耗費時間,所以我們將這些組件的組合自定義為一個新的控件,以后使用的…

android 7.0原生room,小米5S 安卓9.0 原生體驗 LineageOS16.0 ROOT

介紹ROM為第三方編譯安卓9.0 LineageOS16.0 ,基本功能正常,如有其他bug,理性對待使用Magisk ROOT授權刷機完成后請務必到設置中手動設置當前系統時間和時區去網絡圖標上面的感嘆號和x號方法:打開CaptiveMgr軟件--自動彈出授權彈窗…

圖---互斥集

互斥集主要用于Kruskal算法中,用于求圖的最小生成樹。 互斥集主要有3個基本操作: 1. 初始化各個集合 Make(a)p[a] ← a 2. 查找各個集合的老祖宗 Find(a)if a p[a] : return aelse : return Find(p[a]) 3. 合并兩個集合 Union(a, b)p[Find(b)]…

Oracle配置監聽要注意的地方

昨天心血來潮,把Oracle的監聽都刪了,準備重新配一遍,結果弄了一天才配好,不過對Oracle的了解更深了一些。 對昨天的問題做一個總結: 1、直接在NetManager中刪掉監聽時,實際的監聽服務好像并沒有完全刪除&am…

signature=486e34400687432217e65e837b8e6753,PXE常見錯誤代碼表

在我們日常做無盤時,通常都會遇到一些這樣或那樣的問題,不過好在一般這些錯誤都會有些錯誤代碼,我們可以通過錯誤代碼查詢到一些有幫助的信息。下面是我轉載的一些PXE驅動錯誤代碼表,遇到PXE錯誤時,可查詢下看看&#…

12月25號 Category類別

Category類別 1.在已有類的基礎上進行擴展,無需像繼承一樣子類化,就可以直接添加一些方法 2.繼承不僅可以添加方法還可以添加屬性,類別只能添加方法 3.類別不會改變現有類的方法,萬一重寫,自己寫的優先級高 4.把類別中…

17---Net基礎加強

更新中,敬請期待。。。。。。。。。。。。 復習 將xml顯示到treeview 修改增加 刪除 foreach原理 深拷貝與淺拷貝 模擬數據庫及登陸 復習總結轉載于:https://www.cnblogs.com/yechangzhong-826217795/p/4157562.html

Linux系統rootpassword改動

重新啟動系統。 進入系統引導界面: 按下e鍵: 選擇第二項。內核啟動參數設置,按下e鍵: 在結尾處,輸入數字 1或者 英文 " single",再回車: 按下b鍵啟動。此時以單用戶模式級別引導啟動程…

關于OC-省市區習題

對于省市區的問題,關鍵在于搞清楚數組嵌套字典,字典里面裝數組的多重嵌套關系,沉下心來,捋清楚思路, 實在看不懂就多打幾遍,這道題理解了,熟練了對之后學習很有好處。 代碼如下: NSS…

23種設計模式----------代理模式(一)

代理模式也叫委托模式。 代理模式定義:對其他對象提供一種代理從而控制對這個對象的訪問。就是,代理類 代理 被代理類,來執行被代理類里的方法。 一般情況下,代理模式化有三個角色。 1,抽象的主題類(或者接口) IGamePl…

(轉) Quartz學習——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成詳解(四)

http://blog.csdn.net/u010648555/article/details/60767633 當任何時候覺你得難受了,其實你的大腦是在進化,當任何時候你覺得輕松,其實都在使用以前的壞習慣。 通過前面的學習,你可能大致了解了Quartz,本篇博文為你打…

被流氓360設置瀏覽器主頁的解決辦法(如果你也遇到了跟我一樣的問題,不妨看一下是不是這個原因)...

最近電腦罷工,重裝了系統;很多常用軟件都不得不重新安裝,其實這都不是事兒,現在基本上都是百兆光纖了,下載安裝都很順溜。 瀏覽器也在安裝之列,因為搞開發所以谷歌火狐瀏覽器都是必裝的;平時基本…

BZOJ1834 [ZJOI2010]network 網絡擴容

網絡流訓練好題。。。但是要給差評!蒟蒻表示這就是板子題,然后做了半個小時T T 先跑一邊最大流,得到第一問答案ans。 第二問:原先的邊不動,費用為0。 然后對每條邊在上面再加一條邊,流量為inf,費…