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