版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Java WebJava Web開發(fā)開發(fā)第四課第四課 跟蹤客戶狀態(tài)跟蹤客戶狀態(tài)講師:李玉明講師:李玉明目標(biāo)l掌握cookie技術(shù)l掌握會(huì)話跟蹤技術(shù)l掌握URL重寫技術(shù)l了解隱藏表單技術(shù)跟蹤客戶狀態(tài)l用Cookie來傳送用于跟蹤客戶狀態(tài)的數(shù)據(jù);l使用會(huì)話(Session)機(jī)制;l重寫URL,使它包含用于跟蹤客戶狀態(tài)的數(shù)據(jù);l在HTML表單中加入隱藏字段,它包含用于跟蹤客戶狀態(tài)的數(shù)據(jù)。CookielCookie是在客戶端訪問Web服務(wù)器時(shí),服務(wù)器在客戶端硬盤上存放的信息。服務(wù)器可以根據(jù)cookie來跟蹤客戶狀態(tài),對(duì)于需要區(qū)別客戶的場(chǎng)合(如電子商務(wù))特別有用。lTomcat對(duì)Cookie提供了良好的
2、支持;l寫cookie:Cookie theCookie=new Cookie(“username”,”Tom”);response.addCookie(theCookie);l讀cookie:Cookie cookies=request.getCookies();Cookie的有效期l當(dāng)Servlet向客戶端寫Cookie時(shí),可以通過Cookie類的setMaxAge(int expiry)方法來設(shè)置Cookie的有效期,單位:秒如果expiry大于零,就指示瀏覽器在客戶端硬盤上保存Cookie的時(shí)間為expiry秒;如果expiry等于零,就指示瀏覽器刪除當(dāng)前Cookie;如果expiry
3、小于零,就指示瀏覽器不要把Cookie保存到客戶端硬盤,Cookie僅僅存在于當(dāng)前的瀏覽器進(jìn)程中,當(dāng)瀏覽器進(jìn)程關(guān)閉,Cookie也就消失。Cookie默認(rèn)有效期為-1.CookieServlet.javapublic class CookieServlet extends HttpServlet int count=0;public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException response.setContentType(text
4、/plain);PrintWriter out = response.getWriter();/獲取cookieCookie cookies=request.getCookies();if(cookies!=null)for(int i=0;icookies.length;i+)out.println(Cookie name:+cookiesi.getName();out.println(Cookie name:+cookiesi.getValue();out.println(Cookie name:+cookiesi.getMaxAge()+rn);elseout.println(No Co
5、okie.);/寫入cookieresponse.addCookie(new Cookie(cookieName+count,cookieValue+count);count+;Web.xml內(nèi)容 cookie lesson3.CookieServlet cookie /cookie 新瀏覽器進(jìn)程public class Cookie1Servlet extends HttpServlet public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOEx
6、ception Cookie cookie=null;response.setContentType(text/plain);PrintWriter out = response.getWriter();/獲取cookieCookie cookies=request.getCookies();if(cookies!=null)for(int i=0;icookies.length;i+)out.println(Cookie name:+cookiesi.getName();out.println(Cookie name:+cookiesi.getValue();if(cookiesi.getN
7、ame().equals(username)cookie=cookiesi;elseout.println(No Cookie.);if(cookie=null)cookie=new Cookie(username,Tom);cookie.setMaxAge(60*60);response.addCookie(cookie);else if(cookie.getValue().equals(Tom)cookie.setValue(Jack);response.addCookie(cookie);else if(cookie.getValue().equals(Jack)cookie.setMa
8、xAge(0);response.addCookie(cookie);Web.xml內(nèi)容 cookie1 lesson3.Cookie1Servlet cookie1 /cookie1 Session l會(huì)話指在一段時(shí)間內(nèi),單個(gè)客戶與Web應(yīng)用的一連串相關(guān)的交互過程。在一個(gè)會(huì)話中,客戶可能會(huì)多次請(qǐng)求訪問Web應(yīng)用的同一個(gè)網(wǎng)頁,也有可能請(qǐng)求訪問同一個(gè)Web應(yīng)用中的多個(gè)網(wǎng)頁;l在Servlet API中定義了代表會(huì)話的javax.servlet.http.HttpSession接口,Servlet容器必須實(shí)現(xiàn)這一接口;l當(dāng)一個(gè)會(huì)話開始時(shí),Servlet容器將創(chuàng)建一個(gè)HttpSession對(duì)象,在該
9、對(duì)象中存放表示客戶狀態(tài)的信息,Servlet容器為每個(gè)HttpSession對(duì)象分配一個(gè)唯一標(biāo)示符,稱為Session ID。Sessionl默認(rèn)情況下,JSP網(wǎng)頁都支持會(huì)話,顯示聲明:l如果一個(gè)Web組件支持會(huì)話,表示:當(dāng)客戶請(qǐng)求訪問該組件時(shí),Servelet容器會(huì)自動(dòng)查找HTTP請(qǐng)求中表示SessionID的Cookie,以及向HTTP響應(yīng)結(jié)果中添加表示SessionID的Cookie;Web組件可以訪問代表當(dāng)前會(huì)話的Httpsession對(duì)象。%Cookie cookies=request.getCookies();if(cookies=null)out.println(no cooki
10、e);return;for(int i=0;iCookie name:Cookie value:max age in seconds:HttpSession的生命周期l開始新的會(huì)話,即開始新的會(huì)話,即Servlet容器創(chuàng)建一個(gè)新的容器創(chuàng)建一個(gè)新的HttpSession對(duì)象:對(duì)象:一個(gè)瀏覽器進(jìn)程第一次訪問一個(gè)瀏覽器進(jìn)程第一次訪問Web應(yīng)用中支持會(huì)話的任意一個(gè)網(wǎng)頁。應(yīng)用中支持會(huì)話的任意一個(gè)網(wǎng)頁。當(dāng)瀏覽器進(jìn)程與當(dāng)瀏覽器進(jìn)程與Web應(yīng)用的一次會(huì)話被銷毀后,再次訪問應(yīng)用的一次會(huì)話被銷毀后,再次訪問Web應(yīng)用中支應(yīng)用中支持會(huì)話的任意一個(gè)網(wǎng)頁。持會(huì)話的任意一個(gè)網(wǎng)頁。l會(huì)話銷毀,即會(huì)話銷毀,即Servlet容
11、器使容器使HttpSession對(duì)象結(jié)束生命周期,且存對(duì)象結(jié)束生命周期,且存放在會(huì)話范圍內(nèi)的共享數(shù)據(jù)也都被銷毀:放在會(huì)話范圍內(nèi)的共享數(shù)據(jù)也都被銷毀:瀏覽器進(jìn)程終止;瀏覽器進(jìn)程終止;服務(wù)器端執(zhí)行服務(wù)器端執(zhí)行httpSession對(duì)象的對(duì)象的invalidate()方法;()方法;會(huì)話過期。會(huì)話過期。使用會(huì)話的jsplServlet容器為JSP提供了隱含的HttpSession對(duì)象,JSP可以直接通過固定引用變量session來引用HttpSession對(duì)象。maillogin.jspmaillogin歡迎光臨郵件系統(tǒng)Session ID:User Name:input type=text nam
12、e=username value=Password: mailcheck.jspmailcheck登錄注銷當(dāng)前用戶為:你的信箱中有10封郵件maillogout.jspmaillogout,再見!重新登錄郵件系統(tǒng)使用會(huì)話的ServletlHttpServlet默認(rèn)不支持會(huì)話;l在HttpRequest接口中提供了2種與會(huì)話相關(guān)的方法:getSession():是當(dāng)前HttpServlet支持會(huì)話。若會(huì)話已存在,返回相應(yīng)的httpSession對(duì)象,否則創(chuàng)建一個(gè)新的對(duì)象并返回。getSession(boolean create):如果為true,等價(jià)于方法1;如果為false,
13、若會(huì)話已存在,返回相應(yīng)的httpSession對(duì)象,否則返回null。public class ShoppingCart implements Serializable Mapitems = new HashMap();int numberOfItems=0;public synchronized void add(String itemName)if(items.containsKey(itemName)Integer itemCount=(Integer)items.get(itemName);items.put(itemName, new Integer(itemCount+1);els
14、e items.put(itemName, new Integer(1);numberOfItems+;public synchronized int getNumberOfItems()return numberOfItems;public synchronized Map getItems()return items;public class ShoppingServlet extends HttpServlet public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletE
15、xception, IOException String itemNames=彩電,冰箱,電視機(jī);/獲取httpsession對(duì)象HttpSession session = request.getSession(true);ShoppingCart cart = (ShoppingCart)session.getAttribute(cart);if(cart=null)cart = new ShoppingCart();session.setAttribute(cart, cart);response.setContentType(text/html;charset=GB2312);Print
16、Writer out = response.getWriter();/讀取表單數(shù)據(jù)String itemSelected;String itemIndex;/商品索引String itemName;/商品名稱itemSelected=request.getParameterValues(item);/讀取界面復(fù)選框值if(itemSelected!=null)for(int i=0;i續(xù)/輸出out.println(購(gòu)物車內(nèi)容);out.println(SessionID:+session.getId()+);out.println(你的購(gòu)物車有+cart.getNumberOfItems()
17、+個(gè)商品:);Map items=cart.getItems();IteratorMap.Entry it=items.entrySet().iterator();while(it.hasNext()Map.Entry entry=it.next();out.println(entry.getKey()+: +entry.getValue()+);out.println(繼續(xù)購(gòu)物);out.println();out.close();public void doPost(HttpServletRequest request,HttpServletResponse response)throws
18、 ServletException, IOException doGet(request,response);Web.xml增加內(nèi)容 shopping lesson4.ShoppingServlet shopping /shopping shopping.html選購(gòu)商品百貨商場(chǎng)選購(gòu)商品第一種:彩電第二種:冰箱第三種:電視機(jī)重寫URLqURL(統(tǒng)一資源定位) 重寫技術(shù) 當(dāng)客戶端不接受Cookie的時(shí)候,可以使用URL重寫機(jī)制將一個(gè)唯一的會(huì)話 ID 添加到 URL 結(jié)尾,以標(biāo)識(shí)該會(huì)話。Servlet容器解釋URL,取出SessionID,根據(jù)SessionID將請(qǐng)求與特定的Session關(guān)聯(lián)。重寫URLl瀏覽器禁用遠(yuǎn)程Cookie:隱私高級(jí)重寫URLl瀏覽器禁用本地服務(wù)器Cookie:安全本地重寫URLl如果瀏覽器不支持cookie,Servlet容器可以重寫Web組件的URL,把sessionID添加到URL信息中。lHttpServletResponse提供了重寫URL的方法:public String encodeURL(String
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年沿街店鋪物業(yè)租賃合同3篇
- 2025年度集裝箱班輪運(yùn)輸合同標(biāo)的運(yùn)輸成本優(yōu)化服務(wù)協(xié)議4篇
- 2025年度車庫(kù)門安全性能提升與維修合同3篇
- 二零二四年度醫(yī)療器械產(chǎn)品營(yíng)銷策劃合同規(guī)范3篇
- 二零二五版國(guó)防生實(shí)訓(xùn)培養(yǎng)合同3篇
- 2025版事故車事故處理與車輛事故鑒定合同3篇
- 2025年度深海油氣田鉆井平臺(tái)租賃合同3篇
- 個(gè)性化離婚合同模板(2024年版)版B版
- 2025年度車輛報(bào)廢回收與環(huán)保處理合同4篇
- 二零二五版工程機(jī)械設(shè)備銷售與售后服務(wù)體系合同3篇
- 江蘇省南京市第二十九中2025屆數(shù)學(xué)高二上期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)模擬試題含解析
- 2024年公需科目培訓(xùn)考試題及答案
- 2024年江蘇鑫財(cái)國(guó)有資產(chǎn)運(yùn)營(yíng)有限公司招聘筆試沖刺題(帶答案解析)
- 2024年遼寧石化職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)含答案
- 廣西桂林市2023-2024學(xué)年高二上學(xué)期期末考試物理試卷
- 財(cái)務(wù)指標(biāo)與財(cái)務(wù)管理
- 部編版二年級(jí)下冊(cè)道德與法治第三單元《綠色小衛(wèi)士》全部教案
- 保安春節(jié)安全生產(chǎn)培訓(xùn)
- 初一語文上冊(cè)基礎(chǔ)知識(shí)訓(xùn)練及答案(5篇)
- 血液透析水處理系統(tǒng)演示
- GB/T 27030-2006合格評(píng)定第三方符合性標(biāo)志的通用要求
評(píng)論
0/150
提交評(píng)論