『壹』 java的session什麼時候清空
一般情況下,session都是存儲在內存里,當伺服器進程被停止或者重啟的時候,內存里的session也會被清空,如果設置了session的持久化特性,伺服器就會把session保存到硬碟上,當伺服器進程重新啟動或這些信息將能夠被再次使用。1、session在何時被創建一個常見的誤解是以為session在有客戶端訪問時就被創建,然而事實是直到某server端程序調用HttpServletRequest.getSession(true)這樣的語句時才被創建,注意如果jsP沒有顯示的使用 <%@page session="false"%>關閉session,則JSP文件在編譯成Servlet時將會自動加上這樣一條語句HttpSession session = HttpServletRequest.getSession(true);這也是JSP中隱含的session對象的來歷。
由於session會消耗內存資源,因此,如果不打算使用session,應該在所有的JSP中關閉它。
2、session何時被刪除
綜合前面的討論,session在下列情況下被刪除a.程序調用HttpSession.invalidate();或b.距離上一次收到客戶端發送的session id時間間隔超過了session的超時設置;或c.伺服器進程被停止(非持久session)
3、如何做到在瀏覽器關閉時刪除session
嚴格的講,做不到這一點。可以做一點努力的辦法是在所有的客戶端頁面里使用javascript代碼window.oncolose來監視瀏覽器的關閉動作,然後向伺服器發送一個請求來刪除session。但是對於瀏覽器崩潰或者強行殺死進程這些非常規手段仍然無能為力。
4、有個HttpSessionListener是怎麼回事
你可以創建這樣的listener去監控session的創建和銷毀事件,使得在發生這樣的事件時你可以做一些相應的工作。注意是session的創建和銷毀動作觸發listener,而不是相反。類似的與HttpSession有關的listener還有HttpSessionBindingListener,HttpSessionActivationListener和HttpSessionAttributeListener。
『貳』 Java中怎麼判斷Session是否過期
調用request.getSession(false),如果返回null,代表沒有該session即已經過期,反之則沒有過期
『叄』 java web 驗證用戶是否已登錄有哪些方式。
首先,你的web需要有登入後將登錄信息保存到session的過程,在用戶訪問那些需要登錄的頁面或者action的時候(可以用過過濾器,或者直接在相應的頁面判斷),從session裡面獲取登錄信息,如果沒有,則說明沒有登錄.跳轉到登錄頁面後,登陸成功,保存登錄信息到session,這個時候再訪問原先的,就可以通過驗證..一整個流程大概就是這樣.重點就是登錄信息保存在session裡面,驗證用戶是否登錄,就依據這個了
『肆』 java裡面如何在用戶登錄管理頁面時判斷用戶是否登錄
給你詳細講一下。
比如系統有個登陸頁面(login.jsp):
name:_________
password:____________
(登陸按鈕)
你按下登陸按鈕,就根據name和password去資料庫裡面查,如果判斷有此用戶並且密碼正確,就設置一個session的鍵對應的值,鍵名字自己取,統一即可,比如"userInfo",代碼就是servlet的doPost裡面
HttpSession session = request.getSession();
Hashtable userInfo = new Hashtable();
userInfo.setAttribute("userName", request.getParameter("userName");
userInfo.setAttribute("passWords", Util.toSecret( request.getParameter("passWords)); //密碼最好加密
session.setAttribute("userInfo", userInfo);
session是在一定時期(超時時間內)一直存在的,這段時間內你可以隨時判斷用戶是否合法,否則就退回登陸頁面。
在任何除了登陸頁面以外的頁面訪問,只需判斷有沒有這個鍵值,沒就到登陸頁面,否則進正常頁面。(最好寫在servlet中,讓servlet當頁面控制器)代碼如下:
if ( session.getAttribute("userInfo")==null ) {
response.sendRedirect(request.getServletContext.getPath() + "/login.jsp");
} else {
request.getRequestDispatcher("/正常頁面.jsp").forward(request,response);
}