版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
..『黑馬程序員』JavaEEJavaWeb--CookieSession案例一:記錄用戶的上次登陸訪問時間.需求:用戶登錄完成后,顯示您是第x位訪問的用戶,您的上次訪問時間是:yyyy-MM-dd.xx是:yyyy-MM-dd.分析:技術分析:【會話技術】成后將瀏覽器關閉的過程稱為是一次會話.常見的會話技術:Cookie :將數(shù)據(jù)保存到客戶端瀏覽器.Session :將數(shù)據(jù)保存到效勞器端.為什么使用會話技術?參見圖一和圖二使用會話技術:【Cookie技術的使用】向瀏覽器保存數(shù)據(jù):ServletResponse有一個方法:voidaddCookie(Cookiecookie);獲得瀏覽器帶過來的Cookie:ServletRequest有一個方法:Cookie[]getCookies();創(chuàng)立一個Cookie對象:Cookie(Stringname,Stringvalue);【JSP的簡單概述】什么是JSP :JavaServerPages(Java效勞器端頁面).JSP=JavaHTMLJSPSUNJSPSUNServletServletASP,PHPServletout.println(“<formaction=’’method=’’>〞);out.println(“</form>〞);SUNJSP.JSP的執(zhí)行過程:JSPServlet,classJSP的嵌入Java代碼:JSP的腳本元素<%! %>:翻譯成類中的成員局部.定義變量,定義方法,定義類是線程不平安的,盡量少在類中定義成員屬性!!<% %>:翻譯成類的service寫代碼塊.<%= serviceout.print();步驟分析:【步驟一】:準備登陸的案例.【步驟二】:在統(tǒng)計人數(shù)的Servlet中.判斷是否是第一次訪問.【步驟三】:根據(jù)是否是第一次顯示不同的信息,同時將當前的時候保存到Cookie中.代碼實現(xiàn)[AppleScript]純文本查看復制代碼?publicclassCountServletextends Servlet{privatestaticfinallongserialVersionUID=1L;0 protectedvoiddoGet( ServletRequest2ServletResponseresponse)throwsServletException,IOException0 3charset=UTF-8");0 Integercount=(Integer)4this.getServletContext().getAttribute("count");0// response.getWriter().println("<h1>5現(xiàn)在網(wǎng)站被訪問的次數(shù)為:"+count+"</h1>");06 /**0 *獲得瀏覽器中帶過來的所有的7Cookie信息,從數(shù)組中查找有沒有指定名稱的Cookie0 *判斷用戶是否是第一次訪問:(從數(shù)8組中沒有找到指定名稱的Cookie)0 **如果是第一次:顯示歡送,記錄當前9訪問的時間存入到Cookie中.1 **如果不是第一次:顯示歡送,上一次Cookie1 *///Cookie:Cookie[]cookies=request.getCookies();1 //Cookie:3 Cookiecookie=1CookieUtils.findCookie(cookies,"lastVisit");4 //判斷是否是第一次:1 if(cookie==null){5 //第一次訪問1 response.getWriter(6).println("您是第"+count+"位訪客!");1 }else{7 //不是第一次1 Longl=8Long.parseLong(cookie.getValue());1 Dated=newDate(l);9 response.getWriter(2).println("您是第"+count+"位訪客!上次訪問時間是:"+d.toLocaleString());2 }//CookieCookiec=new2Cookie("lastVisit",""+System.currentTimeMillis());2//保存到瀏覽器端:3response.addCookie(c);2}42protectedvoiddoPost( ServletRequestrequest,5ServletResponseresponse)throwsServletException,IOException{2doGet(request,response);6}2}728293031323334353637總結(jié):Cookie的常用API:CookieAPI:getName();getValue();setDomain(Stringdomain);Cookie//setPath(Stringpath);CookiesetMaxAge(intmaxAge);CookieCookie的分類有關:Cookie:Cookie.CookieCookie:CookieCookieCookie.setMaxAge(0)案例二:記錄用戶的商品瀏覽記錄:需求:在購物網(wǎng)站上瀏覽商品的信息,商家為了留住用戶,記住之前瀏覽的一些商品.分析:步驟分析:【步驟一】:在登錄完成后,顯示商品列表頁面.【步驟二】:為商品列表頁面做一些準備工作.【步驟三】:點擊某個商品,將商品ID傳遞一個Servlet.【步驟四】:在Servlet中:判斷是否是第一次瀏覽商品【步驟五】:如果是第一次:將商品的ID存入到Cookie中即可.【步驟六】:如果不是第一次:判斷該商品是否已經(jīng)瀏覽了.【步驟七】:如果瀏覽器過.刪除之前元素,將該元素添加到最前面.前,如果已經(jīng)超過限制,刪除最后一個,將其插入到最前.代碼實現(xiàn):[AppleScript]純文本查看復制代碼?publicclassProductServletextends Servlet{privatestaticfinallongserialVersionUID=1L;0 protectedvoiddoGet( ServletRequestrequest,...2ServletResponseresponse)throwsServletException,IOException0 /**3**3**0**4Cookie.0**5的Cookie.0**6*0*7存入到Cookie.0*8瀏覽器.0*91-21*0是否已經(jīng)在瀏覽記錄.1*接收從客戶端帶過來的所有Cookie判斷是否是第一次瀏覽商品:第一次瀏覽商品IDCookie不是第一次瀏覽商品判斷當前的商品*已經(jīng)存1在:2-1移除當前元素,將當前元素添加到最開始.* *沒在瀏覽記錄中:1 * *判斷是否已經(jīng)超過了最大長度:如果超過2-1-3:刪除最后一個將當前元素添1加到最前面.4 * *1沒有超過:直接將該元素添加到最前位置.51存入到Cookie,回寫瀏覽器.**id6*/1 //id:7 Stringid=1request.getParameter("id");8 //Cookie1 Cookie[]cookies=9request.getCookies();2 //判斷是否是第一次:0 Cookiecookie=2CookieUtils.findCookie(cookies,"history");if(cookie==null){//第一次瀏覽商品2 Cookiec=newCookie("history",id);c.setPath("/day11")2;424*7);5c.setMaxAge(60*60*2response.addCookie(2c);6}else{2//不是第一次瀏覽7//判斷選擇的商品是22-18Stringvalue=2cookie.getValue();9String[]ids=3value.split("-");0//將數(shù)組變?yōu)榧希?LinkedList<String>1list=newLinkedList<String>(Arrays.asList(ids));3 if(list.contains(id2)){3 //3之前瀏覽過該商品3 lis4t.remove(id);//1-2-33 lis5t.addFirst(id);3 }else{6 //3沒有瀏覽過該商品.7 if(3list.size()>=3){8//3904 list.addFirst(id);1 }el4se{24 //33list.addFirst(id);4 }4 }//將list4出,使用-連接上保存到Cookie,寫回瀏覽器.6 StringBuffersb=new4StringBuffer();7 for(Strings:list){4 sb.append(s).append("-");4 }StringsValue=5sb.toString().substring(0,sb.length()-1);0 System.out.println(5sValue);1 //Cookie5 Cookiec=new2Cookie("history",sValue);5 c.setPath("/day11")3;5 c.setMaxAge(60*60*244*7);5 response.addCookie(5c);5 }65 72/product_info.htm").forward(request,response);5 }8protectedvoiddoPost( ServletRequest9ServletResponseresponse)throwsServletException,IOException{doGet(request,response);0 }6}162636465666768697071727374總結(jié):清空瀏覽記錄:Cookie:[AppleScript]?publicclassClearServletextends Servlet{privatestaticfinallongserialVersionUID=0protectedvoiddoGet( ServletRequest0ServletResponseresponse)throwsServletException,IOExceptionCookiecookie=new0Cookie("history",null);4 cookie.setPath("/day11");0 cookie.setMaxAge(0);response.addCookie(cookie);00/product_list.jsp");7 }08 /**0 *@see Servlet#doPost( 9request, ServletResponseresponse)1 */protectedvoiddoPost( ServletRequest1ServletResponseresponse)throwsServletException,IOException{//TODOAuto-generatedmethodstub1 doGet(request,response);2 }1}314151617181920案例三:將商品添加到購物車:需求:查看某個商品詳情的時候,添加到購物車.需要將商品添加到購物車.分析:1.4.2.1技術分析:【Session的概述】Cookie.Session.Cookie戶端,SessionCookieSession:Session:request.getSession();3.2.2步驟分析:【步驟一】:點擊參加購物車提交到Servlet【步驟二】:在Servlet將購物的商品存入到Session中.MapMapkey名稱,Mapvalue【步驟四】:在購物車頁面中顯示Map中的數(shù)據(jù)就可以.代碼實現(xiàn):[AppleScript]純文本查看復制代碼?publicclassCartServletextends Servlet{privatestaticfinallongserialVersionUID=1L;.0 protectedvoiddoGet( ServletRequest2ServletResponseresponse)throwsServletException,IOException0 //接收商品名稱:3 Stringname=new0String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8")4;0 //Map5息.Map<String,Integer>Map的key是商品的名稱value是購置的數(shù)量.0 Map<String,Integer>map=6(Map<String,Integer>)request.getSession().getAttribute("cart");0 if(map==null){7 map=new0LinkedHashMap<String,Integer>();8 }0 //判斷購物車中是否已經(jīng)買了該商品.9 if(map.containsKey(name)){1 //map品://*Map+1。存回Map1 Integercount=map.get(name);count++;1 map.put(name,3count);1 }else{4 //map1品.//*如果購物車中沒有改商品:將商品添加到Map集合中數(shù)量1.5 map.put(name,1);1 }61 //*Mapsession1cart",map);1charset=UTF-8");2ahref='/day11/demo2/product_list.jsp'>繼續(xù)購物</a>|<a0href='/day11/demo2/cart.jsp'>去結(jié)算</a></h3>");2 }12223.242526總結(jié):Sessionsession何時創(chuàng)立和銷毀?作用范圍:getSession()session.session:1.session302.session3.session.invalidate();作用范圍:屢次請求.(一次會話)案例四:進行一次性驗證碼的校驗需求:在登錄的頁面中,需要有一個驗證碼的校驗.分析:技術分析:使用session保存生產(chǎn)的驗證碼.步驟分析:4中.【步驟二】:在頁面中輸入驗證碼值,點提交.【步驟
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版整式課件
- 守株待兔動畫課件
- 員工心態(tài) 課件
- 第四單元(復習)-二年級語文上冊單元復習(統(tǒng)編版)
- 西南林業(yè)大學《操作系統(tǒng)原理》2023-2024學年期末試卷
- 西京學院《融合新聞報道》2022-2023學年第一學期期末試卷
- 抗戰(zhàn)英雄家書
- 西京學院《基礎護理學》2023-2024學年第一學期期末試卷
- 西京學院《電氣控制技術與PLC》2021-2022學年期末試卷
- 西華師范大學《自然地理》2021-2022學年第一學期期末試卷
- 外研版五年級上冊說課標說教材課件
- 被巡察單位組織人事工作匯報集合5篇
- 青少年科技創(chuàng)新大賽培訓課件
- 新聞編輯學--新聞稿件的選擇與編輯-54新聞差錯的“更正”-課件
- 中學田徑基礎校本課程教材
- 人教版九年級英語全一冊(全套)課件
- 廣播操比賽打分表
- 學生奶培訓課件
- 安全生產(chǎn)專項檢查及整改臺賬
- 商務部專員績效考核指標量表
- 七律·到韶山-完整版獲獎課件
評論
0/150
提交評論