導航:首頁 > 編程語言 > javasession機制

javasession機制

發布時間:2024-07-17 06:13:16

1. 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。

2. java怎麼判斷兩個用戶同時登陸

Session的機制(為了安全)決定了Session A不能獲得Session B的信息,即Session之間是互相隔離的.

你可以在Login的時候,將當前登錄的用戶信息保存一份到Application中.
大致流程如下:
在Application放一個HashMap<String [userName],String[SessionId]> logins = new....
登錄的時候 logins.put(userName,sessionId);

許可權校驗的時候
String sessionId = logins.get(userName);
if(request.getSession().getSessionId().equals(sessionId)){
//允許繼續操作

}else{
//session.inValidate();//取消當前session的有效期.這個方法名我記不太清楚了.
//清空session里保存的內容,退出登錄,返回到登錄頁面.

}

退出的時候,
logins.remove(userName);

3. java能不能自己編輯一個session機制

你的意思是 自己使用代碼做一個類似 session 的功能嗎?
當然是可以的,session 主要用來使無狀態維持的Http 協議交互變的有狀態維持,這樣系統才能知道你登錄了。其實購物車功能就是一個典型的 session使用方式。
在Http協議中,session的實現本質上是使用的 cookie機制, cookie機制的實現可以通過 Http的頭信息來完成。 你使用Http協議的 cookie 頭欄位就可以實現自己的 session. (web容器已經提供了Session機制,所以一般情況下沒有必要自己實現)

4. Java中為什麼要使用Session

是因為目前網路中所使用的http協議造成的,http協議是無狀態協議,通俗點說就是當你發送一內次請求道伺服器端容,然後再次發送請求到伺服器端,伺服器是不知道你的這一次請求和上一次請求是來源於同一個人發送的。session就能很好解決這個問題。如果沒有session,很簡單例子說明:你在一個頁面提交的請求信息,當你跳轉到另一個頁面時,下一個頁面就不能得到你上個頁面的請求數據了。

5. java下 iso app登錄伺服器,如何保持伺服器session

app登錄伺服器Session的保持實現方式:
1 ) 使用Cookie來實現
伺服器給每個Session分配一個唯一的JSESSIONID,並通過Cookie發送給客戶端。
當客戶端發起新的請求的時候,將在Cookie頭中攜帶這個JSESSIONID。這樣伺服器能夠找到這個客戶端對應的Session。
2 )使用URL回顯來實現
URL回寫是指伺服器在發送給瀏覽器頁面的所有鏈接中都攜帶JSESSIONID的參數,這樣客戶端點擊任何一個鏈接都會把JSESSIONID帶給伺服器。
如果直接在瀏覽器中輸入url來請求資源,Session是匹配不到的。
Tomcat對 Session的實現,是一開始同時使用Cookie和URL回寫機制,如果發現客戶端支持Cookie,就繼續使用Cookie,停止使用URL回寫。如果發現Cookie被禁用,就一直使用URL回寫。jsp開發處理到Session的時候,對頁面中的鏈接記得使用 response.encodeURL() 。
一般手機端與伺服器交互沒有實現在同一session下:
因為手機端在訪問web伺服器時,沒有給http請求頭部設置sessionID,而使用web瀏覽器作為客戶端訪問伺服器時,在客戶端每次發起請求的時候,都會將交互中的sessionID:JSESSIONID設置在Cookie頭中攜帶過去,伺服器根據這個sessionID獲取對應的Session,而不是重新創建一個新Session(除了這個Session失效)。

6. JAVA中的session 是干什麼用的 怎麼給session賦值

session就是一個會話
,在瀏覽器不關閉的前提下,可以保存用戶的信息,就是象一個臨時的容器,來存放這些臨時的東西。比如登錄的保存用戶信息從一個網頁跳轉到另一個網頁,用戶信息就可以用session保存網站購物車可以用session實現
session賦值:
Request.getSession().setAttribute(key,value);

7. Java中session是怎樣定義的,它的作用域在哪

首先要明確一個概念,session並不是java獨有的,而是基於http的(jsp、asp.net、php等等技術都會涉及到session),下面我來講解一下sessin的具體內容:

session機制是一種伺服器端的機制,伺服器使用一種類似於散列表的結構(也可能就是使用散列表)來保存信息。
當程式需要為某個客戶端的請求創建一個session的時候,伺服器首先檢查這個客戶端的請求里是否已包含了一個session標識 - 稱為session id,如果已包含一個session id則說明以前已為此客戶端創建過session,伺服器就按照session id把這個session檢索出來使用(如果檢索不到,可能會新建一個),如果客戶端請求不包含session id,則為此客戶端創建一個session並且生成一個和此session相關聯的session id,session id的值應該是個既不會重復,植蝗菀妝徽業焦媛梢苑略斕淖址???飧?ession id將被在本次響應中返回給客戶端保存。
保存這個session id的方式能採用cookie,這樣在交互過程中瀏覽器能自動的按照規則把這個標識發揮給伺服器。一般這個cookie的名字都是類似於SEEESIONID,而。比如weblogic對於web應用程式生成的cookie,JSESSIONID=!-145788764,他的名字就是JSESSIONID。
由於cookie能被人為的禁止,必須有其他機制以便在cookie被禁止時仍然能夠把session id傳遞回伺服器。經常被使用的一種技術叫做URL重寫,就是把session id直接附加在URL路徑的後面,附加方式也有兩種,一種是作為URL路徑的附加信息,表現形式為http://...../xxx;jsessionid=ByOK ... 99zWpBng!-145788764另一種是作為查詢字元串附加在URL後面,表現形式為http://...../xxx?jsessionid=ByOK ... 99zWpBng!-145788764
這兩種方式對於用戶來說是沒有差別的,只是伺服器在解析的時候處理的方式不同,採用第一種方式也有利於把session id的信息和正常程式參數區分開來。
為了在整個交互過程中始終保持狀態,就必須在每個客戶端可能請求的路徑後面都包含這個session id。
另一種技術叫做表單隱藏欄位。就是伺服器會自動修改表單,添加一個隱藏欄位,以便在表單提交時能夠把session id傳遞回伺服器。
這種技術目前已較少應用,筆者接觸過的非常古老的iPlanet6(SunONE應用伺服器的前身)就使用了這種技術。實際上這種技術能簡單的用對action應用URL重寫來代替。
在談論session機制的時候,常常聽到這樣一種誤解「只要關閉瀏覽器,session就消失了」。其實能想像一下會員卡的例子,除非顧客主動對店家提出銷卡,否則店家絕對不會輕易刪除顧客的資料。對session來說也是相同的,除非程式通知伺服器刪除一個session,否則伺服器會一直保留,程式一般都是在用戶做log off的時候發個指令去刪除session。然而瀏覽器從來不會主動在關閉之前通知伺服器他將要關閉,因此伺服器根本不會有機會知道瀏覽器已關閉,之所以會有這種錯覺,是大部分session機制都使用會話cookie來保存session id,而關閉瀏覽器後這個session id就消失了,再次連接伺服器時也就無法找到原來的session。如果伺服器設置的cookie被保存到硬碟上,或使用某種手段改寫瀏覽器發出的HTTP請求頭,把原來的session id發送給伺服器,則再次打開瀏覽器仍然能夠找到原來的session。
恰恰是由於關閉瀏覽器不會導致session被刪除,迫使伺服器為seesion設置了一個失效時間,當距離客戶端上一次使用session的時間超過這個失效時間時,伺服器就能認為客戶端已停止了活動,才會把session刪除以節省存儲空間。

閱讀全文

與javasession機制相關的資料

熱點內容
電腦粉碎文件和卸載 瀏覽:365
怎麼查看共享電腦所有文件 瀏覽:617
創意編程社區賬號在哪裡 瀏覽:377
好用的壓縮文件 瀏覽:538
360下載的補丁包在哪個文件夾 瀏覽:988
微信54安卓版本官網 瀏覽:698
為什麼cnc編程找工作難 瀏覽:777
sql資料庫埠不通 瀏覽:361
javaword轉swf 瀏覽:174
cms數據更新是什麼 瀏覽:39
電腦保密櫃在文件里怎麼找不到了 瀏覽:225
nodejs前端後端 瀏覽:129
程序俠後台多少 瀏覽:32
mysqle執行sql文件在哪裡 瀏覽:466
資料庫iostat1 瀏覽:986
java圖片工具包 瀏覽:159
ps文件損壞出現不兼容情況 瀏覽:942
為什麼iphone耗wifi 瀏覽:495
網頁寬度代碼 瀏覽:144
編程踩坑路01怎麼免費用 瀏覽:612

友情鏈接