java的sessionid
『壹』 java 開發問題,sessionId,相關,如下
是的, 完全正確。sessionId相當於伺服器產生的一個很長的隨機數, 所以,一般很難猜中, 滿足了一般級別的安全通信。 如果需要更高級別的安全通信, 可以使用https
『貳』 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刪除以節省存儲空間。
『叄』 java中 Session ID問題
相同。session一般通過cookie或者URL里的一個參數來實現。 第一次訪問,產生一個唯一的session編號,然後發送給客戶端,比如傳遞cookie,或者在url裡面加上額外的參數 伺服器在一個Map里保存此編號對應的信息 用戶下一次訪問,會再次傳遞這個編號,伺服器在map里查找對應編號的信息是否存在,並進行後面的操作。
『肆』 java jsessionid什麼時候 生成的
如果客戶端請求的cookie中不包含JSESSIONID,服務端調用request.getSession()時就會生成並傳遞給客戶端,此次響應頭會包含設置cookie的信息
徹底的動靜分離,對session並無影響,無論是直接瀏覽器url請求還是ajax請求都會在客戶端cookie生成sessionid;如果要通過緩存進行自行管理session也是可以的。
『伍』 java如何通過sessionid獲取session對象
這個功能老版本servlet規范中有,新版本中好像被屏蔽了。可以換一種做法,寫一個session監聽。創建時將session id與session對象構造一個hashMap放到 application中去,銷毀時從application中移除。然後你就可以獲取了。
『陸』 javaweb為什麼瀏覽器的地址欄會出現sessionid
是為了讓web伺服器能記住你!
第一次訪問:請求中不會有sessionid,響應中會有sessionid,這是伺服器發給你的身份標識;
第二次訪問:你的瀏覽器會自動把這個sessionid發給伺服器,伺服器就能認出你是上次訪問過的那個用戶;
第三次和以後都是這樣;
當瀏覽器關閉後,這個sessionId就會失效;
sessionid就是在瀏覽器一次開閉過程中,讓伺服器能記住你的一種機制;
因為不同的http請求之間是沒有關聯的,伺服器為了分辨哪些請求來自同一台電腦,就有了session機制,
『柒』 java的sessionid有什麼用
唯一性標識客戶端的,由於c/s 連接是無狀態的,在第一次瀏覽和第二次瀏覽直接沒有任何直接聯系,所以瀏覽第一次時候伺服器會生產一個sessionid給瀏覽器,瀏覽器在訪問該網站時候會自動帶上這個sessionid這樣伺服器就知道是不是同一個用戶進行了不同的請求什麼的
『捌』 java怎麼取sessionid
StringsessionId=request.getSession().getId();
首先要獲得request對象,然後調用getSession()方法。
『玖』 關於java session 設置
看到這個問題就能想到你應該還沒了解session的生命周期,session在一個會話創建時出現,
並生成唯一標識符sessionid,在一個會話關閉時session銷毀。也就是說你在關閉瀏覽器時,存在於瀏覽器上的sessionid 消失了,但是伺服器中存放的sessionid並沒有立馬銷毀。
『拾』 java給sessionid賦值
sessionid在cookie里,key可以自定義的,不過一般叫jsessionid