黑馬程序員WEB11-Cookie和Session篇筆記_第1頁
黑馬程序員WEB11-Cookie和Session篇筆記_第2頁
黑馬程序員WEB11-Cookie和Session篇筆記_第3頁
黑馬程序員WEB11-Cookie和Session篇筆記_第4頁
黑馬程序員WEB11-Cookie和Session篇筆記_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

傳閭播在以下商瑞傳閭播在以下商瑞IT教苴品理獨(dú)變中國IT教育,我們正在行動黑馬程序員www.itiieirr^.cQin傳閭播在以下商瑞黑馬程序員www.itiieirr^.cQin傳閭播在以下商瑞IT教苴品理獨(dú)變中國IT教育,我們正在行動第11章案例一:記錄用戶的上次登陸訪問時間.需求:用戶登錄完成后,顯示您是第X位訪問的用戶,您的上次訪問時間是:yyyy-MM-dd.*如果第一次訪問的話,只顯示您是第x位用戶.*如果不是第一次訪問的話,顯示您是第x位訪問的用戶,您的上次訪問時間是:yyyy-MM-dd.分析:技術(shù)分析:【會話技術(shù)】什么是會話:用戶打開一個瀏覽器訪問頁面,訪問網(wǎng)站的很多頁面,訪問完成后將瀏覽器關(guān)閉的過程稱為是一次會話.常見的會話技術(shù):Cookie:將數(shù)據(jù)保存到客戶端瀏覽器.Session:將數(shù)據(jù)保存到服務(wù)器端.>為什么使用會話技術(shù)?*私有的數(shù)據(jù),購物信息數(shù)據(jù)保存在會話技術(shù)中.參見圖一和圖二使用會話技術(shù):【Cookie技術(shù)的使用】向?yàn)g覽器保存數(shù)據(jù):HttpServletResponse有一個方法:*voidaddCookie(Cookiecookie);>獲得瀏覽器帶過來的Cookie:HttpServletRequest有一個方法:*Cookie[]getCookies();>創(chuàng)建一個Cookie對象:*Cookie(Stringname,Stringvalue);【JSP的簡單概述】>什么是JSP:JavaServerPages(Java服務(wù)器端頁面).JSP=Java代碼+HTML的元素+JSP內(nèi)置東西I黑馬程序員www.itne<macom>SUN公司為什么推出JSP動態(tài)網(wǎng)頁開發(fā)技術(shù):SUN公司推出的Servlet技術(shù)進(jìn)行動態(tài)網(wǎng)頁開發(fā).發(fā)現(xiàn)Servlet自身有不足沒有辦法與ASP,PHP技術(shù)競爭.想在動態(tài)網(wǎng)頁中輸出表單.在Servlet中獲得PrintWriterout=response.getWriter();out.println(“<formaction=’’method=’’>”);out.println(“</form>”);SUN又推出了動態(tài)的網(wǎng)頁開發(fā)技術(shù)就是JSP.>JSP的執(zhí)行過程:*JSP會被翻譯成Servlet,編譯成class進(jìn)行執(zhí)行的.>JSP的嵌入Java代碼:JSP的腳本元素<%!%>:翻譯成類中的成員部分.定義變量,定義方法,定義類.Servlet是線程不安全的,盡量少在類中定義成員屬性??!<%%>:翻譯成類的service方法內(nèi)部的內(nèi)容.定義變量,定義類,直接寫代碼塊.<%=%>:翻譯成service方法內(nèi)部的out.print();步驟分析:【步驟一】:準(zhǔn)備登陸的案例.【步驟二】:在統(tǒng)計人數(shù)的Servlet中.判斷是否是第一次訪問.【步驟三】:根據(jù)是否是第一次顯示不同的信息,同時將當(dāng)前的時候保存到Cookie中.1.1.3代碼實(shí)現(xiàn)publicclassCountServletextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType("text/html;charset=UTF-8");Integercount=(Integer)this.getServletContext().getAttribute("count");//response.getWriter().println("<h1>現(xiàn)在網(wǎng)站被訪問的次數(shù)為:"+count+"</h1〉");///**獲得瀏覽器中帶過來的所有的Cookie信息,從數(shù)組中查找有沒有指定名稱的Cookie判斷用戶是否是第一次訪問:(從數(shù)組中沒有找到指定名稱的Cookie)*如果是第一次:顯示歡迎,記錄當(dāng)前訪問的時間存入到Cookie中.*如果不是第一次:顯示歡迎,上一次訪問時間,同時記錄當(dāng)前訪問的時間存入到Cookie中。*///獲得瀏覽器帶過來的所有的Cookie:Cookie[]cookies=request.getCookies();//從數(shù)組中查找指定名稱的Cookie:Cookiecookie=CookieUtils.findCookie(cookies,"lastvisit");傳閭局客承下高調(diào)傳閭局客承下高調(diào)IT教苴品牌曲變中國IT教育,理們正在行動傳閭局客承下高調(diào)傳閭局客承下高調(diào)IT教苴品牌曲變中國IT教育,理們正在行動I繇馬程序員www.itiiennacQnn//判斷是否是第一次:if(cookie==null){//第一次訪問response.getWriter().println「您是第"+count+"位訪客!");}else{//不是第一次Longl=Long.parseLong(cookie.getValue());Dated=newDate(l);response.getWriter().println("您是第"+count+”位訪客!上次訪問時間是:"+d.toLocaleString());}//創(chuàng)建一個Cookie對象:Cookiec=newCookie("lastVisit",""+System.currentTimeMillis());//保存到瀏覽器端:response.addCookie(c);protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGet(request,response);1.1.4總結(jié):Cookie的常用API:>Cookie的常用的API:getName();getValue();setDomain(Stringdomain);--設(shè)置Cookie的有效域名.//setPath(Stringpath);--設(shè)置Cookie的有效路徑.setMaxAge(intmaxAge);一設(shè)置Cookie的有效時間.>Cookie的分類有關(guān):*會話級別的Cookie:默認(rèn)的Cookie.關(guān)閉瀏覽器Cookie就會銷毀.*持久級別的Cookie:可以設(shè)置Cookie的有效時間.那么關(guān)閉瀏覽器Cookie還會存在.手動銷毀持久性Cookie.setMaxAge(0)前提是有效路徑必須一致.曇期傍豁需京改變中國曇期傍豁需京改變中國IT教育,我們正在行動曇期傍豁需京改變中國曇期傍豁需京改變中國IT教育,我們正在行動1.2案例二:記錄用戶的商品瀏覽記錄:需求:在購物網(wǎng)站上瀏覽商品的信息,商家為了留住用戶,記住之前瀏覽的一些商品.需求:在購物網(wǎng)站上瀏覽商品的信息,商家為了留住用戶,記住之前瀏覽的一些商品.±S±s商城價:¥299.00分析:技術(shù)分析:黑馬程序員www.itiieirr^.cQin傳閭播在以下商瑞黑馬程序員www.itiieirr^.cQin傳閭播在以下商瑞IT教苴品理獨(dú)變中國IT教育,我們正在行動黑馬程序員www.itiieirr^.cQin傳閭播在以下商瑞黑馬程序員www.itiieirr^.cQin傳閭播在以下商瑞IT教苴品理獨(dú)變中國IT教育,我們正在行動步驟分析:【步驟一】:在登錄完成后,顯示商品列表頁面.【步驟二】:為商品列表頁面做一些準(zhǔn)備工作.【步驟三】:點(diǎn)擊某個商品,將商品ID傳遞一個Servlet.【步驟四】:在Servlet中:判斷是否是第一次瀏覽商品【步驟五】:如果是第一次:將商品的ID存入到Cookie中即可.【步驟六】:如果不是第一次:判斷該商品是否已經(jīng)瀏覽了.【步驟七】:如果瀏覽器過.刪除之前元素,將該元素添加到最前面.【步驟八】:如果沒有瀏覽過該商品.判斷最大長度,沒有超過限制,直接加到最前,如果已經(jīng)超過限制,刪除最后一個,將其插入到最前.1.2.3代碼實(shí)現(xiàn):publicclassProductServletextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{/***接收商品id.*接收從客戶端帶過來的所有Cookie.*從Cookie的數(shù)組中查找指定名稱的Cookie.*判斷是否是第一次瀏覽商品:*第一次瀏覽商品*直接將商品的ID存入到Cookie.*將Cookie回寫到瀏覽器.*不是第一次瀏覽商品1-2*判斷當(dāng)前的商品是否已經(jīng)在瀏覽記錄.*已經(jīng)存在:2-1移除當(dāng)前元素,將當(dāng)前元素添加到最開始.*沒在瀏覽記錄中:*判斷是否已經(jīng)超過了最大長度:如果超過2-1-3:刪除最后一個將當(dāng)前元素添加到最前面.*沒有超過:直接將該元素添加到最前位置.*將轉(zhuǎn)換的id的值存入到Cookie,回寫瀏覽器.*///接收id:Stringid=request.getParameter("id");//獲得所有的Cookie的信息:Cookie[]cookies=request.getCookies();//判斷是否是第一次:Cookiecookie=CookieUtils.findCookie(cookies,"history");if(cookie==null){//第一次瀏覽商品Cookiec=newCookie("history",id);c.setPath("/day11");c.setMaxAge(60*60*24*7);response.addCookie(c);}else{//不是第一次瀏覽//判斷選擇的商品是否已經(jīng)在瀏覽記錄中2-1Stringvalue=cookie.getValue();String[]ids=value.split("-");//將數(shù)組變?yōu)榧希篖inkedList<String>list=newLinkedList<String>(Arrays.asList(ids));if(list.contains(id)){//之前瀏覽過該商品list.remove(id);//1-2-3list.addFirst(id);}else{//沒有瀏覽過該商品.if(list.size()>=3){//超過3個list.removeLast();list.addFirst(id);}else{//沒到3個.list.addFirst(id);}}//將list中的元素取出,使用-連接上保存到Cookie,寫回瀏覽器.StringBuffersb=newStringBuffer();for(Strings:list){sb.append(s).append("-");}StringsValue=sb.toString().substring(0,sb.length()-1);System.out.println(sValue);//存入至1Cookie中Cookiec=newCookie("history",sValue);c.setPath("/day11");c.setMaxAge(60*60*24*7);response.addCookie(c);里罌I里罌I翳牌需牌改變中國IT教育,我們正在行劭傳閭播在以下商瑞傳閭播在以下商瑞IT教苴品理獨(dú)變中國IT教育,我們正在行動IG)黑馬程序員www.iitri€fma.cQinrequest.getRequestDispatcher("/demo2/product_info.htm").forward(request,response);}protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGet(request,response);}}1.2.4總結(jié):清空瀏覽記錄:刪除持久性的Cookie:publicclassClearServletextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Cookiecookie=newCookie("history",null);cookie.setPath("/day11");cookie.setMaxAge(0);response.addCookie(cookie);response.sendRedirect("/day11/demo2/product_list.jsp");}/***@seeHttpServlet#doPost(HttpServletRequestrequest,HttpServletResponseresponse)*/protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//TODOAuto-generatedmethodstubdoGet(request,response);

1.3案例三:將商品添加到購物車:需求:查看某個商品詳情的時候,添加到購物車.需要將商品添加到購物車.分析:技術(shù)分析:【Session的概述】Cookie本身是有大小和個數(shù)的限制.Session沒有限制.Cookie的數(shù)據(jù)保存在客戶端,Session數(shù)據(jù)保存在IG)黑馬程序員www.iitri€fma.cQin服務(wù)器端.Session的執(zhí)行原理:基于Cookie的.使用Session:*獲得Session:*request.getSession();步驟分析:【步驟一】:點(diǎn)擊加入購物車提交到Servlet【步驟二】:在Servlet將購物的商品存入到Session中.【步驟三】:可以創(chuàng)建一個Map集合用于保存購物信息Map的key可以是商品的名稱,Map的value是數(shù)量.【步驟四】:在購物車頁面中顯示Map中的數(shù)據(jù)就可以.代碼實(shí)現(xiàn):publicclassCartServletextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//接收商品名稱:Stringname=newString(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");//倉|」建Map集合用于保存購物信息,Map<String,Integer>Map的key是商品的名稱value是購買的數(shù)量.Map<String,Integer>map=(Map<String,Integer>)request.getSession().getAttribute("cart");if(map==null){map=newLinkedHashMap<String,Integer>();}//判斷購物車中是否已經(jīng)買了該商品.if(map.containsKey(name)){//map中已經(jīng)有該商品://*如果購物車中已經(jīng)有該商品:獲得到Map中該商品的數(shù)量+1。存回到Map集合中.Integercount=map.get(name);count++;map.put(name,count);}else{//map中沒有該商品.//*如果購物車中沒有改商品:將商品添加到Map集合中數(shù)量1.map.put(name,1);黑馬程序員www.itiieirr^.cQin傳閭播在以下商瑞黑馬程序員www.itiieirr^.cQin傳閭播在以下商瑞IT教苴品理獨(dú)變中國IT教育,我們正在行動傳閭播在以下商瑞傳閭播在以下商瑞IT教苴品理獨(dú)變中國IT教育,我們正在行動IG)黑馬程序員www.iitri€fma.cQin//*將Map集合保存到session中.request.getSession().setAttribute("cart",map);response.setContentType("text/html;charset=UTF-8");response.getWriter().println("<h3><ahref='/day11/demo2/product_listjsp'>繼續(xù)購物</a>|<ahref='/day11/demo2/cart.jsp'>i結(jié)算</a></h3>");}總結(jié):Session是域?qū)ο螅簊ession何時創(chuàng)建和銷毀?作用范圍:*創(chuàng)建:服務(wù)器端第一次調(diào)用getSession()創(chuàng)建session.*銷毀:三種情況銷毀session:l.session過期.默認(rèn)過期時間為30分鐘.2.非正常關(guān)閉服務(wù)器.如果正常關(guān)閉session序列化到硬盤.3.手動調(diào)用session.invalidate();*作用范

溫馨提示

  • 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

提交評論