Java Web 開發(fā)從入門到實踐課件 第6章 - 會話及會話技術(shù)_第1頁
Java Web 開發(fā)從入門到實踐課件 第6章 - 會話及會話技術(shù)_第2頁
Java Web 開發(fā)從入門到實踐課件 第6章 - 會話及會話技術(shù)_第3頁
Java Web 開發(fā)從入門到實踐課件 第6章 - 會話及會話技術(shù)_第4頁
Java Web 開發(fā)從入門到實踐課件 第6章 - 會話及會話技術(shù)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

JavaWeb開發(fā)從入門到實踐JavaWebDevelopmentFromIntroductiontoPractice會話及會話技術(shù)Chap06提綱會話及會話技術(shù)本章介紹會話管理的基本概念,包括Cookie和Session對象的作用。Cookie用于在客戶端保存數(shù)據(jù),而Session則在服務(wù)器端管理用戶會話信息。6.1會話概述6.2Cookie對象6.3Session對象6.4本章小結(jié)6.1會話概述用戶A用戶B會話:可以區(qū)分用戶A和用戶B的數(shù)據(jù)6.2Cookie對象6.2.1什么是Cookie6.2.2CookieAPI6.2.1什么是CookieCookie是一種將會話過程中的數(shù)據(jù)保存在客戶端瀏覽器,方便客戶端和服務(wù)器更好地進(jìn)行交互的會話技術(shù)。圖

6-1

客戶端瀏覽器和服務(wù)器之間傳遞Cookie的過程6.2.1什么是Cookie用戶第一次訪問服務(wù)器時,服務(wù)器會在響應(yīng)消息頭中增加Set-Cookie頭字段,并將用戶信息以Cookie的形式發(fā)送給瀏覽器。Set-Cookie:JSESSIONID=15816FE518E1586EDC5253512F7C272E;Path=/cookieSessionPro;JSESSIONID表示Cookie的屬性名,15816FE518E1586EDC5253512F7C272E表示Cookie的屬性值;Path表示Cookie的路徑屬性。瀏覽器接收到Cookie消息后,會將它保存在瀏覽器的緩沖區(qū)中,當(dāng)瀏覽器再次訪問服務(wù)器時,就會把用戶信息以Cookie形式發(fā)送給Web服務(wù)器Cookie:JSESSIONID=15816FE518E1586EDC5253512F7C272E6.2.2CookieAPI通過Java提供的CookieAPI,開發(fā)人員可以很方便地創(chuàng)建、發(fā)送、讀取和使用Cookie。構(gòu)造方法Cookiecookie=newCookie("username","Charles");resp.addCookie(cookie);通過HttpServletResponse對象通過HttpServletRequest對象Cookie[]cookies=request.getCookies();6.2.2CookieAPICookie類的常用方法表

6-1

Cookie類的常用方法及其描述方法描述Cookie(Stringname,Stringvalue)Cookie的構(gòu)造方法,例如,Cookiecookie=newCookie("subject","JavaWeb");voidsetMaxAge(intexpiry)設(shè)置Cookie過期時間,以秒為單位intgetMaxAge()獲取Cookie過期時間,以秒為單位StringgetName()獲取Cookie的名稱voidsetValue(Stringvalue)設(shè)置Cookie的值StringgetValue()獲取Cookie的值voidsetComment(Stringcomment)設(shè)置Cookie注釋StringgetComment()獲取Cookie注釋voidsetDomain(Stringpattern)設(shè)置Cookie的域名,例如,如果設(shè)置為“.”,則所有以“.”結(jié)尾的域名都可以訪問該Cookie。參數(shù)第一個字符必須是“.”voidsetPath(Stringuri)設(shè)置Cookie的使用路徑。例如,“/admin/”表示只有uri為“/admin”的程序可以訪問該Cooike。參數(shù)最后一個字符必須是“/”voidsetHttpOnly(booleanflag)參數(shù)設(shè)置為“true”,表示只能通過http訪問。voidsetSecure(booleanflag)是否加密后傳輸協(xié)議。參數(shù)設(shè)置為true時,只有https請求連接時才會把Cookie發(fā)送給服務(wù)器,而http不行,但是服務(wù)器是可以發(fā)送給瀏覽器。6.2.2CookieAPI案例:創(chuàng)建一個Cookie對象添加到響應(yīng)對象中,并獲取Cookie數(shù)組@WebServlet("/cookieServlet")

publicclassCookieServletextendsHttpServlet{

@Override

protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{

PrintWriterout=resp.getWriter();

Cookiecookie=newCookie("username","Charles");//創(chuàng)建Cookie

resp.addCookie(cookie);//cookie對象添加到響應(yīng)對象中

Cookie[]cookies=req.getCookies();//獲取Cookie

for(Cookiec:cookies){//遍歷Cookie

out.println(c.getName()+":"+c.getValue()+"<br/>");

}

}

}6.2.2CookieAPI圖

6-2瀏覽器端Cookie數(shù)據(jù)圖

6-3查看請求頭6.2.2CookieAPI刪除Cookie:Cookie對象在客戶端的存活時間可以通過setMaxAge()方法設(shè)置@WebServlet("/cookieDelServlet")publicclassCookieDelServletextendsHttpServlet{

@Override

protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{

PrintWriterout=resp.getWriter();

Cookiecookie=newCookie("username","");//創(chuàng)建一個值為空字串符的Cookie對象

cookie.setMaxAge(0);//設(shè)置Cookie的有效期為0

resp.addCookie(cookie);//將Cookie對象添加到響應(yīng)對象中

}

}6.2.2CookieAPI圖

6-4在瀏覽器中查看Cookie數(shù)據(jù)6.3Session對象6.3.1Session的概念6.3.2SessionAPI6.3.3Session中禁用Cookie6.3.4Session中生命周期6.3.5Session的有效期6.3.6Session與Cookie的區(qū)別6.3.1Session的概念Session(會話)是指使用HttpSession對象實現(xiàn)會話跟蹤的服務(wù)器端技術(shù)。Session對象存儲特定用戶會話所需的屬性及配置信息。圖

6-5

HttpSession會話管理示意圖6.3.1Session的概念SessionServlet.java@WebServlet("/sessionServlet")publicclassSessionServletextendsHttpServlet{ @Override protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{ req.getRequestDispatcher("session.jsp").forward(req,resp);//轉(zhuǎn)發(fā)到session.jsp頁面 }}session.jsp<body>

會話測試:<br/>

SessionId=<%=session.getId()%>

</body>案例:創(chuàng)建一個頁面session.jsp用來獲取SessionID6.3.1Session的概念圖

6-6查看存儲在瀏覽器客戶端Cookie中的SessionIDCookie對象中名稱為“JSESSIONID”的值和服務(wù)器響應(yīng)瀏覽器客戶端的SessionId是一致的瀏覽器地址欄輸入:“http://localhost:8080/cookieSessionPro/sessionServlet”6.3.2SessionAPI在JavaWeb應(yīng)用程序中,JavaSession對象的創(chuàng)建和管理都是由Servlet容器來完成的,軟件開發(fā)人員只需使用容器提供的API來訪問和操作Session對象即可。表

6-2

HttpSession類的常用方法及其描述方法描述StringgetId()獲取SessionIdvoidsetAttribute(Stringname,Objectvalue)設(shè)置Session屬性O(shè)bjectgetAttribute(Stringname)獲取Session屬性的值,如果屬性名不存在,則返回nullEnumerationgetAttributeNames()獲取Session所有的屬性voidremoveAttribute(Stringname)移除Session屬性voidsetMaxInactiveInterval(intinterval)設(shè)置超時時間,以秒為單位intgetMaxInactiveInterval()獲取超時時間,以秒為單位LonggetCreationTime()獲取Session的創(chuàng)建時間voidinvalidate()銷毀Session對象booleanisNew()Session是否是新創(chuàng)建的SessionlonggetLastAccessedTime()客戶端最后訪問的時間6.3.2SessionAPI案例:在服務(wù)器端存入國產(chǎn)操作系統(tǒng)麒麟信安,然后在瀏覽器讀取Session數(shù)據(jù)@WebServlet("/sessionAPIServlet")

publicclassSessionAPIServletextendsHttpServlet{

@Override

protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{

HttpSessionsession=req.getSession();

session.setAttribute("os","麒麟信安");

req.getRequestDispatcher("SessionExample.jsp").forward(req,resp);

}

}<body>

OS:<%=session.getAttribute("os")%></body>SessionAPIServlet.javaSessionExample.jsp6.3.2SessionAPI圖

6-7瀏覽器查看Session數(shù)據(jù)6.3.3Session中禁用Cookie禁用方法有以下二種方法:在web目錄下創(chuàng)建META-INF文件夾(跟WEB-INF文件夾是同級目錄),在該文件夾中創(chuàng)建context.xml文件<?xmlversion="1.0"encoding="UTF-8"?>

<Contextcookies="false"path="/cookieSessionPro">

</Context>修改Tomcat全局的conf/context.xml文件<?xmlversion="1.0"encoding="UTF-8"?><Contextcookies="false"> ...

</Context>6.3.4Session中生命周期Session的生命周期是:創(chuàng)建→使用→銷毀。Session對象的創(chuàng)建Session對象的銷毀當(dāng)客戶端第一次訪問服務(wù)器時,服務(wù)器為每個瀏覽器創(chuàng)建不同SessionID。在服務(wù)器端使用request.getSession()或者request.getSession(true)方法來獲取Session對象。Session對象的銷毀有以下三種方式。關(guān)閉瀏覽器或服務(wù)器卸載了當(dāng)前的WEB應(yīng)用調(diào)用HttpSession的invalidate()方法超出了Session的最大有效時間客戶端第一次訪問服務(wù)器時,服務(wù)器會生成SessionID,并將SessionID存入到Cookie中??蛻舳嗽俅伟l(fā)送請求時,會將SessionID傳送給服務(wù)器。服務(wù)器對比客戶端發(fā)送過來的SessionID和保存在服務(wù)器端的SessionID,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論