了解java中的session

先看看對(duì)session的一個(gè)比較好的闡述:

成都創(chuàng)新互聯(lián)公司是專(zhuān)業(yè)的定陶網(wǎng)站建設(shè)公司,定陶接單;提供成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行定陶網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

session就是一個(gè)會(huì)話(huà) ,在瀏覽器不關(guān)閉的前提下,可以保存用戶(hù)的信息,就是象一個(gè)臨時(shí)的容器,來(lái)存放這些臨時(shí)的東西。比如登錄的保存用戶(hù)信息從一個(gè)網(wǎng)頁(yè)跳轉(zhuǎn)到另一個(gè)網(wǎng)頁(yè),用戶(hù)信息就可以用session保存網(wǎng)站購(gòu)物車(chē)可以用session實(shí)現(xiàn)

為什么需要Session

這是為了填補(bǔ) Http 協(xié)議的局限,當(dāng)用戶(hù)去訪問(wèn)一個(gè)頁(yè)面,服務(wù)端返回完了請(qǐng)求(如,你訪問(wèn)完一個(gè)網(wǎng)頁(yè),這個(gè)頁(yè)面將頁(yè)面內(nèi)容,界面UI呈現(xiàn)給你),就算是結(jié)束了,就斷開(kāi)了,服務(wù)端不再去追蹤客戶(hù)端(瀏覽器)的任務(wù)狀態(tài),所以 Http 的每次請(qǐng)求都是獨(dú)立的,非連續(xù)的,Http 也稱(chēng)為無(wú)狀態(tài)協(xié)議。那我們?nèi)绻朐谝粋€(gè)場(chǎng)合,或是一個(gè)特定過(guò)程,操作些用戶(hù)自己的數(shù)據(jù),就會(huì)很麻煩,甚至很危險(xiǎn)。比如你可以通過(guò) url 傳參數(shù)的方式與服務(wù)器交互,并實(shí)現(xiàn)操作;

Session(會(huì)話(huà)) 的出現(xiàn)就解決了這樣的問(wèn)題,Session是創(chuàng)建在服務(wù)端的,在一定的時(shí)間后,由服務(wù)端來(lái)消毀。在這段時(shí)間,客戶(hù)端與服務(wù)端的會(huì)話(huà)就會(huì)保持著,客戶(hù)端就會(huì)利用服務(wù)端上的 Session 信息來(lái)找到或操作一些數(shù)據(jù);

如何使用 Session

Java Api 只給我們一種方式來(lái) 獲取 當(dāng)前會(huì)話(huà)相關(guān)的 session:

HttpSession session = request.getSession();
//或
HttpSession session = request.getSession(boolean);

設(shè)置值:

session.setAttribute("key", 值對(duì)象);

獲取值:

對(duì)象類(lèi)型 obj = (對(duì)象類(lèi)型)session.getAttribute("key");
//如
String name = (String)session.getAttribute("key");

刪除 session 指定屬性健:

session.removeAttribute("key");

清除所有的session,使當(dāng)前 session 完全失效:

session.invalidate();

session超時(shí)周期設(shè)置

1. Tomcat 安裝位置 conf/web.xml :

<session-config>
  <session-timeout>30</session-timeout>
 </session-config>

30分種

2. Tomcat 安裝位置 conf/server.xml :

<Context path="/test" docBase="/test" 
  defaultSessionTimeOut="3600" isWARExpanded="true" 
  isWARValidated="false" isInvokerEnabled="true" 
  isWorkDirPersistent="false"/>

單位為 秒

3. Java 代碼設(shè)置:

HttpSession session = request.getSession();
session.setMaxInactiveInterval(1200);

0 分種:

其他說(shuō)明:

1. session 過(guò)期情況:

1>. 客戶(hù)端瀏覽器關(guān)閉:

2>. session 會(huì)話(huà)過(guò)期;

3>. 客戶(hù)端會(huì)話(huà)調(diào)用了 .invalidate();

2. 瀏覽器關(guān)閉與session是否還在;

當(dāng)客戶(hù)端瀏覽器關(guān)閉后,session 在服務(wù)端還是會(huì)存在一定時(shí)間的,只是當(dāng)瀏覽器器再次打開(kāi)時(shí),就會(huì)生成一個(gè)新的 session ,瀏覽器通過(guò)生成的 sessionid 屬性來(lái) 匹配服務(wù)端的 session; 那上次的session 雖然還在,但是就訪問(wèn)不到了;

3. <% @ page session="false" %> 是什么情況?:

這句話(huà)的意思是,當(dāng)前不能使用 session, 但是 頁(yè)面 session 還是可以創(chuàng)建的;

4. session 在什么時(shí)候 被創(chuàng)建:

在 程序 調(diào)用 HttpServletRequest.getSession(true) 時(shí)創(chuàng)建;如果 頁(yè)面沒(méi)有使用 <%@ page session="false"%> 時(shí),在 jsp 頁(yè)面編譯成 Servlet 時(shí),會(huì)自動(dòng) 加上 HttpSession session = HttpServletRequest.getSession(true);

總結(jié)

以上就是本文關(guān)于了解java中的session的全部?jī)?nèi)容,希望對(duì)大家有所幫助。如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

本文標(biāo)題:了解java中的session
網(wǎng)站路徑:http://muchs.cn/article6/pppoig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)網(wǎng)站策劃、自適應(yīng)網(wǎng)站、微信公眾號(hào)、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)