本篇文章給大家分享的是有關(guān)Session的基礎是什么,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
由于Cookie有一很大的局限,于是Session出現(xiàn)了
Session的作用就是在服務器端保存一些用戶的數(shù)據(jù),然后傳遞給用戶一個名字為JSESSIONID的Cookie,所以本質(zhì)上它也是一個Cookie,這個JESSIONID對應這個服務器中的一個Session對象,通過它就可以獲取到保存用戶信息的Session。
首先Session是jsp中九大內(nèi)置對象之一
其次Session是一個域?qū)ο?/p>
然后Session是在服務器端用來保存用戶數(shù)據(jù)的一種技術(shù)。并且Session會話技術(shù)是基于Cookie實現(xiàn)的。
Session的創(chuàng)建時機是在request.getSession()方法第一次被調(diào)用時。
補充:request.getSession()之后的調(diào)用都是獲取已經(jīng)創(chuàng)建了的Session對象,單例模式
Session被創(chuàng)建后,同時還會有一個名為JSESSIONID的Cookie被創(chuàng)建。
這個Cookie的默認時效就是當前會話。
Session被創(chuàng)建后,對應的Cookie被保存到瀏覽器中,之后瀏覽器每次訪問項目時都會攜帶該Cookie。
當我們再次調(diào)用時會根據(jù)該JSESSIONID獲取已經(jīng)存在的Cookie,而不是再創(chuàng)建一個新的Cookie。
如果Cookie中有JSESSIONID,但是JSESSIONID沒有對應的Session存在,則會重新創(chuàng)建一個HttpSession對象,并重新設置JSESSIONID。
setAttribute設置屬性
getAttribute獲取屬性
Session的作用域是當前會話,即對應的一個瀏覽器客戶端,一個瀏覽器一個session對象非一個網(wǎng)頁
Session對象在服務器端不能長期保存,它是有時間限制的,超過一定時間沒有被訪問過的Session對象就應該釋放掉,以節(jié)約內(nèi)存。Session的計時是從最后一次被訪問開始計時,統(tǒng)計其“空閑”的時間。
說明:Session對象默認的最長有效時間為30分鐘。在tomcat的conf目錄下web.xml配置文件中
設置
我們在web.xml文件中配置的Session會話超時時間是對所有Session都生效的。
setMaxInactiveInterval(intseconds)設置用戶多長時間沒有操作之后就會Session過期。以秒為單位。
如果是正數(shù)。表示用戶在給定的時間內(nèi)沒有任意操作,Session會話就會過期。
如果是非正數(shù)(零&負數(shù))。表示Session永不過期。
intgetMaxInactiveInterval()獲取超時時間。以秒為單位。
invalidate()強制失效
Session鈍化:Session在一段時間內(nèi)沒有被使用或關(guān)閉服務器時,會將當前存在的Session對象及Session對象中的數(shù)據(jù)序列化到磁盤的過程,稱之為鈍化。
Session活化:Session被鈍化后,服務器再次調(diào)用Session對象或重啟服務器時,將Session對象及Session對象中的數(shù)據(jù)從磁盤反序列化到內(nèi)存的過程,稱之為活化。
如果希望Session作用域中的對象也能夠隨Session鈍化過程一起序列化到磁盤上,則對象的實現(xiàn)類也必須實現(xiàn)java.io.Serializable接口。不僅如此,如果對象中還包含其他對象的引用,則被關(guān)聯(lián)的對象也必須支持序列化。
以上就是Session的基礎是什么,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。