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

這次的肺炎疫情對中國的中小企業將會是沉重的打擊,據釘釘和微信兩個辦公平臺數據統計現有2億左右的人在家遠程辦公,那么對于中小企業的員工來說不懂IT技術將會讓他們面臨的最大挑戰和困難。
電腦不亮了怎么辦?系統藍屏如何處理?辦公室的電腦在家如何連接?網絡應該如何設置?VPN如何搭建?數據如何對接?服務器如何登錄?數據安全如何保證?數據如何存儲?視頻會議如何搭建?業務系統如何開啟等等一系列的問題,都會困擾著并非技術出身的您。
好消息是當您看到這篇文章的時候,就不用再為上述的問題而苦惱,您只需撥打艾銻無限的全國免費熱線電話:400 650 7820,就會有我們的遠程工程師為您解決遇到的問題,他們可以遠程幫您處理遇到的一些IT技術難題。
如遇到免費熱線占線,您還可以撥打我們的24小時值班經理電話:15601064618或技術經理的電話:13041036957,我們會在第一時間接聽您的來電,為您提供適合的解決方案,讓您無論在家還是在企業都能無憂辦公。
那艾銻無限具體能為您的企業提供哪些服務呢?
艾銻無限始創于2005年,歷經15年服務了5000多家中小企業并保障了幾十萬臺設備的正常運轉,積累了豐富的企業IT緊急問題和特殊故障的解決經驗,制定了相對應的解決方案。我們為您的企業提供的IT服務分為三大版塊:
第一版塊是保障性IT外包服務:如電腦設備運維,辦公設備運維,網絡設備運維,服務器運維等綜合性企業IT設備運維服務。
第二版塊是功能性互聯網外包服務:如網站開發外包,小程序開發外包,APP開發外包,電商平臺開發外包,業務系統的開發外包和后期的運維外包服務。
第三版塊是增值性云服務外包:如企業郵箱上云,企業網站上云,企業存儲上云,企業APP小程序上云,企業業務系統上云,阿里云產品等后續的云運維外包服務。
您要了解更多服務也可以登錄艾銻無限的官網:www.bjitwx.com查看詳細說明,在疫情期間,您企業遇到的任何困境只要找到艾銻無限,能免費為您提供服務的我們絕不收一分錢,我們全體艾銻人承諾此活動直到中國疫情結束,我們將這次活動稱為——春雷行動。
以下還有我們為您提供的一些技術資訊,以便可以幫助您更好的了解相關的IT知識,幫您渡過疫情中辦公遇到的困難和挑戰,艾銻無限愿和中國中小企業一起共進退,因為我們相信萬物同體,能量合一,只要我們一起齊心協力,一定會成功。再一次祝福您和您的企業,戰勝疫情,您和您的企業一定行。
北京艾銻無限告訴您:Session簡介
一、Session簡單介紹
在WEB開發中,服務器可以為每個用戶瀏覽器創建一個會話對象(session對象),注意:一個瀏覽器獨占一個session對象(默認情況下)。因此,在需要保存用戶數據時,服務器程序可以把用戶數據寫到用戶瀏覽器獨占的session中,當用戶使用瀏覽器訪問其它程序時,其它程序可以從用戶的session中取出該用戶的數據,為用戶服務。
二、Session實現與工作原理
瀏覽器和服務器采用http無狀態的通訊,為了保持客戶端的狀態,使用session來達到這個目的。在session機制中,也采用了這樣的一個唯一的session_id來標示不同的用戶,不同的是:瀏覽器每次請求都會帶上由服務器為它生成的session_id。
簡單介紹一下流程:當客戶端訪問服務器時,服務器根據需求設置session,將會話信息保存在服務器上,同時將標示session的session_id傳遞給客戶端瀏覽器,瀏覽器將這個session_id保存在內存中(還有其他的存儲方式,例如寫在url中),我們稱之為無過期時間的cookie。瀏覽器關閉后,這個cookie就清掉了,它不會存在用戶的cookie臨時文件。
以后瀏覽器每次請求都會額外加上這個參數值,再服務器根據這個session_id,就能取得客戶端的數據狀態。
如果客戶端瀏覽器意外關閉,服務器保存的session數據不是立即釋放,此時數據還會存在,只要我們知道那個session_id,就可以繼續通過請求獲得此session的信息;但是這個時候后臺的session還存在,但是session的保存有一個過期時間,一旦超過規定時間沒有客戶端請求時,他就會清除這個session。
下面介紹一下session的存儲機制,默認的session是保存在files中,即以文件的方式保存session數據。在php中主要根據php.ini的配置session.save_handler來選擇保存session的方式。
這里順便說明一下,如果要做服務器的lvs,即多臺server的話,我們一般使用memcached的方式session,否則會導致一些請求找不到session。
一個簡單的memcache配置:
session.save_handler = memcache
session.save_path = "tcp://10.28.41.84:10001"
當然如果一定要使用files文件緩存,我們可以將文件作nfs,將所有的保存session文件定位到一個地方。
剛才講返回給用戶的session-id最終保存在內存中,這里我們也可以設置參數將其保存在用戶的url中。
三、session對象的生命周期
問題:用戶開一個瀏覽器訪問一個網站,服務器是不是針對這次會話創建一個session?
答:不是的。session的創建時機是在程序中第一次去執行request.getSession();這個代碼,服務器才會為你創建session。
問題:關閉瀏覽器,會話結束,session是不是就銷毀了呢?
答:不是的。session是30分鐘沒人用了才會死,服務器會自動摧毀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>
-
-
<!-- 設置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>
當需要在程序中手動設置Session失效時,可以手工調用session.invalidate方法,摧毀session。
-
HttpSession session = request.getSession();
-
// 手工調用session.invalidate方法,摧毀session
-
session.invalidate();
總結:開一個瀏覽器訪問服務器,第一次去執行request.getSession();那個代碼,服務器為你創建session。然后故意不關閉瀏覽器,跑去玩了1個小時,session也沒了,即使會話沒結束,服務器發現session沒人用也會將其摧毀掉。
四、session對象的創建和銷毀時機
session對象的創建時機:在程序中第一次調用request.getSession()方法時就會創建一個新的Session,可以用isNew()方法來判斷Session是不是新創建的。
session對象的銷毀時機:session對象默認30分鐘沒有使用,則服務器會自動銷毀session,在web.xml文件中可以手工配置session的失效時間。
五、session和Cookie的主要區別
-
Cookie是把用戶的數據寫給用戶的瀏覽器。
-
Session技術把用戶的數據寫到用戶獨占的session中。
-
Session對象由服務器創建,開發人員可以調用request對象的getSession方法得到session對象。