Session簡介
2020-02-15 21:13 作者:艾銻無限 瀏覽量:
迎戰(zhàn)疫情,艾銻無限用愛與您同行
為中國中小企業(yè)提供免費(fèi)IT外包服務(wù)

這次的肺炎疫情對中國的中小企業(yè)將會是沉重的打擊,據(jù)釘釘和微信兩個辦公平臺數(shù)據(jù)統(tǒng)計(jì)現(xiàn)有2億左右的人在家遠(yuǎn)程辦公,那么對于中小企業(yè)的員工來說不懂IT技術(shù)將會讓他們面臨的最大挑戰(zhàn)和困難。
電腦不亮了怎么辦?系統(tǒng)藍(lán)屏如何處理?辦公室的電腦在家如何連接?網(wǎng)絡(luò)應(yīng)該如何設(shè)置?VPN如何搭建?數(shù)據(jù)如何對接?服務(wù)器如何登錄?數(shù)據(jù)安全如何保證?數(shù)據(jù)如何存儲?視頻會議如何搭建?業(yè)務(wù)系統(tǒng)如何開啟等等一系列的問題,都會困擾著并非技術(shù)出身的您。
好消息是當(dāng)您看到這篇文章的時候,就不用再為上述的問題而苦惱,您只需撥打艾銻無限的全國免費(fèi)熱線電話:400 650 7820,就會有我們的遠(yuǎn)程工程師為您解決遇到的問題,他們可以遠(yuǎn)程幫您處理遇到的一些IT技術(shù)難題。
如遇到免費(fèi)熱線占線,您還可以撥打我們的24小時值班經(jīng)理電話:15601064618或技術(shù)經(jīng)理的電話:13041036957,我們會在第一時間接聽您的來電,為您提供適合的解決方案,讓您無論在家還是在企業(yè)都能無憂辦公。
那艾銻無限具體能為您的企業(yè)提供哪些服務(wù)呢?

艾銻無限始創(chuàng)于2005年,歷經(jīng)15年服務(wù)了5000多家中小企業(yè)并保障了幾十萬臺設(shè)備的正常運(yùn)轉(zhuǎn),積累了豐富的企業(yè)IT緊急問題和特殊故障的解決經(jīng)驗(yàn),制定了相對應(yīng)的解決方案。我們?yōu)槟钠髽I(yè)提供的IT服務(wù)分為三大版塊:
第一版塊是保障性IT外包服務(wù):如電腦設(shè)備運(yùn)維,辦公設(shè)備運(yùn)維,網(wǎng)絡(luò)設(shè)備運(yùn)維,服務(wù)器運(yùn)維等綜合性企業(yè)IT設(shè)備運(yùn)維服務(wù)。
第二版塊是功能性互聯(lián)網(wǎng)外包服務(wù):如網(wǎng)站開發(fā)外包,小程序開發(fā)外包,APP開發(fā)外包,電商平臺開發(fā)外包,業(yè)務(wù)系統(tǒng)的開發(fā)外包和后期的運(yùn)維外包服務(wù)。
第三版塊是增值性云服務(wù)外包:如企業(yè)郵箱上云,企業(yè)網(wǎng)站上云,企業(yè)存儲上云,企業(yè)APP小程序上云,企業(yè)業(yè)務(wù)系統(tǒng)上云,阿里云產(chǎn)品等后續(xù)的云運(yùn)維外包服務(wù)。
您要了解更多服務(wù)也可以登錄艾銻無限的官網(wǎng):www.bjitwx.com查看詳細(xì)說明,在疫情期間,您企業(yè)遇到的任何困境只要找到艾銻無限,能免費(fèi)為您提供服務(wù)的我們絕不收一分錢,我們?nèi)w艾銻人承諾此活動直到中國疫情結(jié)束,我們將這次活動稱為——春雷行動。
以下還有我們?yōu)槟峁┑囊恍┘夹g(shù)資訊,以便可以幫助您更好的了解相關(guān)的IT知識,幫您渡過疫情中辦公遇到的困難和挑戰(zhàn),艾銻無限愿和中國中小企業(yè)一起共進(jìn)退,因?yàn)槲覀兿嘈湃f物同體,能量合一,只要我們一起齊心協(xié)力,一定會成功。再一次祝福您和您的企業(yè),戰(zhàn)勝疫情,您和您的企業(yè)一定行。
北京艾銻無限告訴您:Session簡介
一、Session簡單介紹
在WEB開發(fā)中,服務(wù)器可以為每個用戶瀏覽器創(chuàng)建一個會話對象(session對象),注意:一個瀏覽器獨(dú)占一個session對象(默認(rèn)情況下)。因此,在需要保存用戶數(shù)據(jù)時,服務(wù)器程序可以把用戶數(shù)據(jù)寫到用戶瀏覽器獨(dú)占的session中,當(dāng)用戶使用瀏覽器訪問其它程序時,其它程序可以從用戶的session中取出該用戶的數(shù)據(jù),為用戶服務(wù)。
二、Session實(shí)現(xiàn)與工作原理
瀏覽器和服務(wù)器采用http無狀態(tài)的通訊,為了保持客戶端的狀態(tài),使用session來達(dá)到這個目的。在session機(jī)制中,也采用了這樣的一個唯一的session_id來標(biāo)示不同的用戶,不同的是:瀏覽器每次請求都會帶上由服務(wù)器為它生成的session_id。
簡單介紹一下流程:當(dāng)客戶端訪問服務(wù)器時,服務(wù)器根據(jù)需求設(shè)置session,將會話信息保存在服務(wù)器上,同時將標(biāo)示session的session_id傳遞給客戶端瀏覽器,瀏覽器將這個session_id保存在內(nèi)存中(還有其他的存儲方式,例如寫在url中),我們稱之為無過期時間的cookie。瀏覽器關(guān)閉后,這個cookie就清掉了,它不會存在用戶的cookie臨時文件。
以后瀏覽器每次請求都會額外加上這個參數(shù)值,再服務(wù)器根據(jù)這個session_id,就能取得客戶端的數(shù)據(jù)狀態(tài)。
如果客戶端瀏覽器意外關(guān)閉,服務(wù)器保存的session數(shù)據(jù)不是立即釋放,此時數(shù)據(jù)還會存在,只要我們知道那個session_id,就可以繼續(xù)通過請求獲得此session的信息;但是這個時候后臺的session還存在,但是session的保存有一個過期時間,一旦超過規(guī)定時間沒有客戶端請求時,他就會清除這個session。
下面介紹一下session的存儲機(jī)制,默認(rèn)的session是保存在files中,即以文件的方式保存session數(shù)據(jù)。在php中主要根據(jù)php.ini的配置session.save_handler來選擇保存session的方式。
這里順便說明一下,如果要做服務(wù)器的lvs,即多臺server的話,我們一般使用memcached的方式session,否則會導(dǎo)致一些請求找不到session。
一個簡單的memcache配置:
session.save_handler = memcache
session.save_path = "tcp://10.28.41.84:10001"
當(dāng)然如果一定要使用files文件緩存,我們可以將文件作nfs,將所有的保存session文件定位到一個地方。
剛才講返回給用戶的session-id最終保存在內(nèi)存中,這里我們也可以設(shè)置參數(shù)將其保存在用戶的url中。
三、session對象的生命周期
問題:用戶開一個瀏覽器訪問一個網(wǎng)站,服務(wù)器是不是針對這次會話創(chuàng)建一個session?
答:不是的。session的創(chuàng)建時機(jī)是在程序中第一次去執(zhí)行request.getSession();這個代碼,服務(wù)器才會為你創(chuàng)建session。
問題:關(guān)閉瀏覽器,會話結(jié)束,session是不是就銷毀了呢?
答:不是的。session是30分鐘沒人用了才會死,服務(wù)器會自動摧毀session。
-
在web.xml文件中可以手工配置session的失效時間。例如:
-
<?xml version="1.0" encoding="UTF-8"?>
-
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
-
<display-name>day07</display-name>
-
-
<!-- 設(shè)置Session的有效時間:以分鐘為單位-->
-
<session-config>
-
<session-timeout>10</session-timeout>
-
</session-config>
-
-
<welcome-file-list>
-
<welcome-file>index.html</welcome-file>
-
<welcome-file>index.htm</welcome-file>
-
<welcome-file>index.jsp</welcome-file>
-
<welcome-file>default.html</welcome-file>
-
<welcome-file>default.htm</welcome-file>
-
<welcome-file>default.jsp</welcome-file>
-
</welcome-file-list>
</web-app>
當(dāng)需要在程序中手動設(shè)置Session失效時,可以手工調(diào)用session.invalidate方法,摧毀session。
-
HttpSession session = request.getSession();
-
// 手工調(diào)用session.invalidate方法,摧毀session
-
session.invalidate();
總結(jié):開一個瀏覽器訪問服務(wù)器,第一次去執(zhí)行request.getSession();那個代碼,服務(wù)器為你創(chuàng)建session。然后故意不關(guān)閉瀏覽器,跑去玩了1個小時,session也沒了,即使會話沒結(jié)束,服務(wù)器發(fā)現(xiàn)session沒人用也會將其摧毀掉。
四、session對象的創(chuàng)建和銷毀時機(jī)
session對象的創(chuàng)建時機(jī):在程序中第一次調(diào)用request.getSession()方法時就會創(chuàng)建一個新的Session,可以用isNew()方法來判斷Session是不是新創(chuàng)建的。
session對象的銷毀時機(jī):session對象默認(rèn)30分鐘沒有使用,則服務(wù)器會自動銷毀session,在web.xml文件中可以手工配置session的失效時間。
五、session和Cookie的主要區(qū)別
-
Cookie是把用戶的數(shù)據(jù)寫給用戶的瀏覽器。
-
Session技術(shù)把用戶的數(shù)據(jù)寫到用戶獨(dú)占的session中。
-
Session對象由服務(wù)器創(chuàng)建,開發(fā)人員可以調(diào)用request對象的getSession方法得到session對象。