一種防止頁面後退的實現方法(jsp)
當用戶退出系統後,如果再重新開啟登入後的頁面,應該跳轉到一個提示使用者未登入的頁面,這很容易做到,只要在jsp頁面的頭部加上驗證session的程式碼既可以。但是由於瀏覽器有快取,可以後退,如果退出系統後後退,則還是可以開啟退出前的使用者頁面。如何禁止後退以後載入快取的頁面呢?
在網上搜到一種方法,就是設定jsp不可快取,程式碼如下:
<% response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires", 0); %>
但是這種方法,只針對ie有效。
後來我想了一個方法:因為後退之後,頁面也是按照html程式碼順尋載入的,比如說頁面頁面中有一段程式碼
<script>
alert();
</script>
那面後退至該頁面,也會彈出對話方塊。考慮到這一點,那麼我想可以讓頁面判斷是否使用者已登入,如果未登入則用js跳轉至提示頁面。由於後退到快取頁面之後js程式碼還要執行一次,那麼如果使用者未登入,後退至該頁面就會執行跳轉的程式碼。
這時問題又來了,由於後退到達的頁面是完全的html程式碼,不與伺服器交換資料,因此如果直接嵌入jsp程式碼判斷,那麼後退到達頁面中的jsp變數值實際上是上次與伺服器交換資料後的快取值,不會執行jsp程式碼。那麼必須要求用html程式碼與伺服器進行資料交換,也就是用js來與伺服器通訊,這就必須使用ajax了。
如果用dwr框架,則需要用dwr獲取session,dwr獲取session的方法如下:
HttpSession hs = WebContextFactory.get().getSession();
然後判斷session,返回一個值。js根據這個值來判斷是否需要跳轉。
這時候還有一個問題,在頁面中用dwr封裝的函式,預設是非同步操作的。當在頁面中使用dwr的函式與伺服器交換資料時,其他的html程式碼同時在進行載入。這時需要把dwr設定為同步執行,也就是呼叫的dwr函式後面的程式碼,需要等待函式進行完再進行載入。設定方法如下:
dwr.engine.setAsync(false);
該設定僅對當前頁面有效,其他頁面仍然是非同步執行在寫完呼叫的函式後面,再重新設定dwr為非同步操作:
dwr.engine.setAsync(true);
這樣函式執行完之後其他的dwr函式依然是非同步執行。
相關推薦
一種防止頁面後退的實現方法(jsp)
當用戶退出系統後,如果再重新開啟登入後的頁面,應該跳轉到一個提示使用者未登入的頁面,這很容易做到,只要在jsp頁面的頭部加上驗證session的程式碼既可以。但是由於瀏覽器有快取,可以後退,如果退出系統後後退,則還是可以開啟退出前的使用者頁面。如何禁止後退以後載入快取的頁
頁面加載動畫實現方法(轉)
sed javascrip orm load city eee display script bic html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.
快速排序的兩種實現方法(js)
while 交換 splice rt+ dex 進行 return ont mat 快速排序的基本思想:通過一趟排序,將待排記錄分割成獨立的兩部分,其中一部分記錄的關鍵字均比另外一部分記錄的關鍵字小,則可分別對著兩部分記錄繼續進行排序,以達到整個序列有序的目的。------
一種快速卷積實現方法
本文基於論文Fast Algorithms for Convolutional Neural Networks,並且整理了相關知識點。 我們首先了解一下傅立葉變換: 對於連續型傅立葉變換的頻域核時域轉換公式: 對於離散的傅立葉變換: 關於傅立葉的理解 可以看這篇文章
一種稀疏矩陣的實現方法
本文簡單描述了一種稀疏矩陣的實現方式,並與一般矩陣的實現方式做了效能和空間上的對比 矩陣一般以二維陣列的方式實現,程式碼來看大概是這個樣子: // C# public class Matrix { // methods // elements
一種單例的實現方法
核心方法: typedef void*(*FUNC)(); #define GETINSTANCE(interface, object)\ {\ FUNC func = (FUNC)GetCreateObjectFunc(#interface);\ if(nullptr
App主介面Tab的四種實現方法(下)
上一篇我們介紹了 ViewPager 實現 Tab 和 Fragment 實現 Tab,本篇會繼續介紹剩下的兩種。FragmentPagerAdapter+ViewPager 實現 Tab 和 ViewPagerIndicator+ViewPager 實現
android開發中監聽器的三種實現方法(OnClickListener)
宣告:本寶寶的畢業設計是基於Android開發的******** 所以對Android開發有用的文章就先轉載過來 對9月份寫論文起一定幫助作用 標籤: Android開發中監聽器的實現有三種方法,對於初學者來說,能夠很好地理解這三種方法,將能更好地增進自己對a
一種大氣簡單的Web管理(陳列)版面設計
borde absolut setup hid color 正常的 for pre == 在頁面的設計中,多版面是一種常見的設計樣式。本文命名一種 這種樣式。能夠簡單描寫敘述為一行top,一列左文件夾,剩余的右下的空間為內容展示區。這種樣式,便於高速定位
Delphi中MD5實現方法(轉)
file 單元 ava sender shm md5 文章 files admin 原來寫過一個計算MD5的程序,是用了一個叫MD5.pas的單元,使用起來還算簡單,但還有更簡單的辦法,安裝了indy就會有IdHashMessageDigest單元(delphi 7默認安裝
Spring的2.5版本中提供了一種:p名稱空間的注入(瞭解)
1. 步驟一:需要先引入 p 名稱空間 * 在schema的名稱空間中加入該行:xmlns:p="http://www.springframework.org/schema/p"(放到applicationContext.xml檔案中) 2. 步驟二:使用p名稱空間的語法 * p:屬性名 =
一種工業訊號線傳輸方案(想法)
背景: 目前所在公司主要做電氣成套,工控自動化電櫃,有時候控制檯和裝置之間距離上百米,控制訊號一般只是繼電器的接通訊號,通斷訊號。存在接線過長,抗干擾能力差;接線過多,0.75的線一大把;走線困難,線要架空纏繞等缺點。 設想: 使用兩個終端,之間通過通訊實現互通,實現類
selenium頁面元素定位方法(5)——表格的定位
被測試html程式碼:<!DOCTYPE html> <html> <body> <table width="400" border="1" id="table"></table> <tr> &l
卷積神經網路入門一種全卷積神經網路(LeNet),從左至右依次為卷積→子取樣→卷積→子取樣→全連線→全連線→高斯連線測試 最後,為了檢驗 CNN 能否工作,我們準備不同的另一組圖片與標記集(不能在訓練
轉載來自:http://blog.csdn.net/maweifei/article/details/52443995 第一層——數學部分 CNN 的第一層通常是卷積層(Convolutional Layer)。輸入內容為一個 32 x 32 x 3 的畫素值陣列。現在
selenium頁面元素定位方法(4)——jQuery定位
jQuery介紹 jQuery是一個相容多瀏覽器的JavaScript庫,核心是write less,do more。jQuery定位方式實際上是呼叫jQuery庫的查詢功能,主要用於不能良好支援CSS定位方式的瀏覽器。如果頁面本身就引入了jQuery庫操作頁面
JavaScript 系列--JavaScript一些奇淫技巧的實現方法(二)數字格式化 1234567890轉1,234,567,890;argruments 物件(類陣列)轉換成陣列
一、前言 之前寫了一篇文章:JavaScript 系列--JavaScript一些奇淫技巧的實現方法(一)簡短的sleep函式,獲取時間戳 https://www.mwcxs.top/page/746.html 介紹了sleep函式和獲取時間戳的方法。接下來我們來介紹數字格式化1234567890&nb
JavaScript 系列--JavaScript一些奇淫技巧的實現方法(三)數字取整,陣列求和
一、前言 簡短的sleep函式,獲取時間戳:https://www.mwcxs.top/page/746.html 數字格式化 1234567890 --> 1,234,567,890;argruments 物件(類陣列)轉換成陣列: https://www.mwcxs.top/page/749.
Qt之自定義搜索框——QLineEdit裏增加一個Layout,還不影響正常輸入文字(好像是一種比較通吃的方法)
too 步驟 set box 文本 csdn sub void 鼠標 簡述 關於搜索框,大家都經常接觸。例如:瀏覽器搜索、Windows資源管理器搜索等。 當然,這些對於Qt實現來說毫無壓力,只要思路清晰,分分鐘搞定。 方案一:調用QLineEdit現
初夏小談:斐波那契三種實現方法(C語言版)(第三種相信你沒見過)
斐波那契數列(Fibonaccisequnce),又稱黃金分割數列。研究斐波那契數列有相當重要的價值,例在現代物理、準晶體結構、化學等領域都有直接的應用。因此研究斐波那契數列也是很有必要的。 今天初夏將為大家帶來計算斐波那契數列第n位的三種方法 第一種利用遞迴的方法計算,程式碼相當簡單,但其
一種使用函式指標實現狀態機的方法
結構定義 1 struct state_machine { 2 int state; 3 4 }; 5 6 enum { 7 s1, 8 s2, 9 10 sn11 }; 假設s1為初始狀態,狀態變遷為s1->s2->