java session原理_java web开发—session的工作原理总结
session的工作原理總結
一、什么是session
session是一次瀏覽器和服務器交互的會話,在jsp中,作為一個內置對象存在.我的理解,就是當用戶打開網頁時,程序會在瀏覽器中開辟一段空間來存儲作為session的存儲,可以對一些用戶信息進行保存.session就是一個會話級別的cokkie,外加服務器內存中的一組散列表.當關閉瀏覽器時,cookie會消失,session也就消失了,這個cookie不寫在磁盤上,而是寫在瀏覽器的緩存中.
二、session和cookie的區別
cookie數據存放在客戶的瀏覽器中,session數據放在服務器上
cookie不是很安全,別人可以輕易的獲取本地的cookie并獲取相關信息進行欺詐
session有時間限制,會在設置的一定時間內保存到服務器上.
cookie有限制,單個為3k,一個站點在客戶端存放的cookie不能超過3k
所以一般將登陸的用戶信息保存到session上,以防被盜,如果是其他信息,可以放在cookie里面,如果考慮到服務器的性能,減輕壓力,應該使用cookie
三、session的工作原理
服務器和瀏覽器采用的是http無狀態的通訊,那么如果多客戶對服務器進行訪問的話,服務器怎么區分呢,那就是使用session.在session的機制中,有一個session_id,作為一個獨一無二的標識,來對客戶端進行區分.每次瀏覽器請求的時候,就會帶上這個標識.這個標識由服務器生成.
簡述一下工作的流程:
當瀏覽器訪問服務器時,服務器根據需求設置session,并將會話的信息保存在服務器上,并將標志著session的session_id傳遞給瀏覽器.
瀏覽器會將收到的session_id保存在內存中,這個便是無過期時間的cookie,當瀏覽器關閉時,cookie會被清理,同理session_id也就沒有了.
當每次瀏覽器訪問服務器的時候,都會帶上這個session_id,服務器根據這個id獲取瀏覽器的狀態返回數據.
session有一個超時時間,當瀏覽器因為一些原因被關閉的時候,服務器端的session不會馬上被釋放,只要我們知道session_id,一樣可以獲取到服務器端的應用數據.一般會給服務器端的session設置一個過期時間,保證了數據的安全性.
總結:
正常的web中的C/S模式下,在兩端都會保存session,兩者通過一個唯一的session_id相關聯.client端的session保存在cookie中,當關閉瀏覽器的時候,cookie清空,session也同樣沒有了.server端的session保存在內存中,在client端關閉后,還會存在一段時間,到達超時時間后,生命周期完成被回收.在被回收前的這個過程中,只要知道這個唯一的session_id,就可以獲取到session中存儲的信息.
如上圖:紅框內的就是session_id
應用:
大部分的web開發,session都用來保存用戶的登錄狀態以及用戶名密碼等信息
總結
以上是生活随笔為你收集整理的java session原理_java web开发—session的工作原理总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 调用servlet_[Java
- 下一篇: java框架核心技术_你必须掌握的 21