作登陸過濾器的時候遇到的問題

一、不要把頁面要用的js,css等文件給攔截了css

1)ignoreUrls表示這兩個Url經過過濾器時放行session

2)ignoreType表示若是請求的文件的文件類型是這幾種的某一種時直接放行對象

固然放行的動做是在後臺實現的,只是進過濾器的時候會取得param-values的值,在根據這些值作是否放行的動做get

 

二、在Session中取當前登陸用戶名的問題io

我用的Struts2,登陸成功後,將用戶名放在Session裏面:session.put("loginMgName", vo.getMgName() ),登錄

在過濾器寫後臺

String userName = (String)request.getSession().getAttribute("loginMgName");獲得的userName是null,request

換做請求

String userName  = (String) ActionContext.getContext().getSession().get("loginMgName");獲得也是null,im

而後我在Action裏面,當登陸成功後加了下面這句:

HttpSession sess = ServletActionContext.getRequest().getSession();
sess.setAttribute("loginMgName", vo.getMgName());

結果仍是取到null

後來找來找去,也不到什麼狀況就改爲下面這樣

HttpSession sess = ServletActionContext.getRequest().getSession();
sess.setAttribute("userName", vo.getMgName());

過濾器寫

String userName = (String)request.getSession().getAttribute("userName"); 正確取到當前登陸用戶

目前還沒搞清楚 Action的Session和HttpSession究竟是什麼關係。。。

 

-----------------------------2016/7/14-----------------------------------------

今天發現關於上面session中取值的問題徹底是胡扯

之因此出現上面說的那種現象是由於我作了一個 退出 按鈕,沒有取到值是由於我點了退出按鈕的時候清掉了session的值

後面換了個key又往session中賦值了用戶名,而退出的動做並無清掉新key的value,因此致使從新登陸後請求其餘頁面通過過濾器的時候出現只能取到某一個key下的用戶名,因此最後結論是 Action的Session和HttpSession 實際上是同一個對象的不一樣表現形式

神吶,原諒這麼愚蠢的我吧!!!

相關文章
相關標籤/搜索