瀏覽器多視窗共用session引發的混亂

2021-08-23 14:54:10 字數 1579 閱讀 1733

話說上禮拜到浙江移動給客服mm演示我們系統的**,「...支援普通客服和客服管理員兩種不同級別。您看工作量統計這裡,咱們用admin這個號登入,然後...」

「打斷下,你用ie再開乙個標籤頁,用custom登入下,我想先看下普通客服流程的演示」。順利通過,我正暗自松了一口氣,「現在看admin吧」。操作了兩下我突然眼前一黑,怎麼變成普通客服了。哦賣糕的,為什麼每次做公開培訓和系統演示的時候總會出現嚴重bug呢?和萬有引力定律一樣難以解釋。

我沮喪地意識到問題的原因,兩個標籤頁共用乙個session。後乙個把前乙個的同名attribute域覆蓋了,致使資料混亂。action中像這樣:

session.setattribute("session_urname", urname);
然後在jsp中利用el取值:

$
****************************************偶是華麗的分隔線****************************************

回到賓館,回想起剛才mm難以捉摸的微笑。儘管我憑藉大於200的apm + 滔滔不絕地東拉西扯蒙混過關,但下一次就沒這好運氣了,改!

首先action中attribute的名字不能重複,看**:

//  避免同一pc多瀏覽器視窗不同賬戶共用session

random random = new random();

stringbuffer sid = new stringbuffer();

// 加上10為0-9隨機數確保sid不重複

for (int i = 0; i < 10; i++)

// 把所有需要放進session的attribute放進乙個mapbar// 一是便於el中取值、二是便於統一管理

map sessionmap = new hashmap();

sessionmap.put("session_urname", urname);

session.setattribute(sid.tostring(), sessionmap);

string rd = "detail.jsp?sid=" + sid.tostring();

request.getrequestdispatcher(rd).forward(request, response);

然後在jsp中用el取值:

$
session.setattribute("name" + sid.tostring(), urname);

session.setattribute("pwd" + sid.tostring(), urpassword);

你也許會想el中取值時加上字首唄:

$
很可惜el並不支援+號的字串連線操作,這樣寫就不能用el了;二是把所有需要放入session的變數都放入map裡便於管理,特別是在字段很多的情況下。

最後反思下過去對session的濫用,好好反省潛意識中server page的殘念。附件中是我寫的乙個demo,需要的童鞋拿去吧。。。

selenium java 瀏覽器多視窗切換處理

要在多個視窗直接切換,首先獲取每個視窗的唯一標示符 控制代碼 通過 getwindowhandles 視窗屬性可以獲取所有開啟視窗的標示符,以集合的形式返回 以下示例 setwinhandels driver getwindowhandles 得到當前視窗的set集合 listit new arra...

十 selenium10 瀏覽器多視窗處理

瀏覽器多視窗處理 有時候我們在測試乙個web應用的時候會出現多個瀏覽器視窗的情況,webdriver提供了相應的解決方案,如下 首先要獲得每乙個視窗的唯一識別符號號 控制代碼 通過獲得的控制代碼來區分不同的 視窗,從而對不同視窗上的元素進行操作。nowhandle driver.current wi...

360安全瀏覽器多視窗開啟怎麼設定

360安全瀏覽器多視窗開啟怎麼設定 初次在使用360瀏覽器時候會很不習慣,因為360瀏覽器開啟多個網頁都是在同乙個瀏覽視窗開啟,一旦從瀏覽器右上角關閉網頁,會將所有該瀏覽器中的網頁都都是關閉。那麼360安全瀏覽器怎麼設定多視窗呢?其實很簡單,只要簡單設定一下即可實現類似於ie6 7 8多視窗瀏覽效果...