




【黑馬程序員】JavaWeb之核心技術(shù)-Cookie與Session.docx 免費下載
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
..『黑馬程序員』JavaEEJavaWeb--CookieSession案例一:記錄用戶的上次登陸訪問時間.需求:用戶登錄完成后,顯示您是第x位訪問的用戶,您的上次訪問時間是:yyyy-MM-dd.xx是:yyyy-MM-dd.分析:技術(shù)分析:【會話技術(shù)】成后將瀏覽器關(guān)閉的過程稱為是一次會話.常見的會話技術(shù):Cookie :將數(shù)據(jù)保存到客戶端瀏覽器.Session :將數(shù)據(jù)保存到效勞器端.為什么使用會話技術(shù)?參見圖一和圖二使用會話技術(shù):【Cookie技術(shù)的使用】向瀏覽器保存數(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]純文本查看復(fù)制代碼?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的分類有關(guān):Cookie:Cookie.CookieCookie:CookieCookieCookie.setMaxAge(0)案例二:記錄用戶的商品瀏覽記錄:需求:在購物網(wǎng)站上瀏覽商品的信息,商家為了留住用戶,記住之前瀏覽的一些商品.分析:步驟分析:【步驟一】:在登錄完成后,顯示商品列表頁面.【步驟二】:為商品列表頁面做一些準備工作.【步驟三】:點擊某個商品,將商品ID傳遞一個Servlet.【步驟四】:在Servlet中:判斷是否是第一次瀏覽商品【步驟五】:如果是第一次:將商品的ID存入到Cookie中即可.【步驟六】:如果不是第一次:判斷該商品是否已經(jīng)瀏覽了.【步驟七】:如果瀏覽器過.刪除之前元素,將該元素添加到最前面.前,如果已經(jīng)超過限制,刪除最后一個,將其插入到最前.代碼實現(xiàn):[AppleScript]純文本查看復(fù)制代碼?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技術(shù)分析:【Session的概述】Cookie.Session.Cookie戶端,SessionCookieSession:Session:request.getSession();3.2.2步驟分析:【步驟一】:點擊參加購物車提交到Servlet【步驟二】:在Servlet將購物的商品存入到Session中.MapMapkey名稱,Mapvalue【步驟四】:在購物車頁面中顯示Map中的數(shù)據(jù)就可以.代碼實現(xiàn):[AppleScript]純文本查看復(fù)制代碼?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();作用范圍:屢次請求.(一次會話)案例四:進行一次性驗證碼的校驗需求:在登錄的頁面中,需要有一個驗證碼的校驗.分析:技術(shù)分析:使用session保存生產(chǎn)的驗證碼.步驟分析:4中.【步驟二】:在頁面中輸入驗證碼值,點提交.【步驟
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年數(shù)控雕銑機項目發(fā)展計劃
- 山東省沂水一中2025年高考沖刺模擬化學(xué)試題含解析
- 2025屆山西省大同市平城區(qū)第一中學(xué)高三二診模擬考試化學(xué)試卷含解析
- 學(xué)前教育活動評價
- 弱電工程項目管理
- 江西省七校2025屆高三第三次測評化學(xué)試卷含解析
- 四年級數(shù)學(xué)(除數(shù)是兩位數(shù))計算題專項練習(xí)及答案
- 2025年智能食品營養(yǎng)秤項目建議書
- 2025年動力轉(zhuǎn)向泵合作協(xié)議書
- 陜西藝術(shù)職業(yè)學(xué)院《舞蹈技能(男生)實訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 8.3 法治社會 課件高中政治統(tǒng)編版必修三政治與法治
- (完整版)臨建施工方案
- 北師大版2019 選擇性必修第三冊Unit 7 Careers Lesson 1 IQ EQ 教學(xué)設(shè)計
- GB/T 44325-2024工業(yè)循環(huán)冷卻水零排污技術(shù)規(guī)范
- 鋼鐵項目環(huán)評報告 - 10環(huán)境風(fēng)險評價
- 成人鼻腸管的留置與維護(2021團體標準解讀)-20221004172843
- 《功能性食品開發(fā)與應(yīng)用》課件-抗氧化功能食品的開發(fā)與應(yīng)用
- 緩坡型臺地完整版本
- 燃氣經(jīng)營安全重大隱患判定標準課件
- CHT 8023-2011 機載激光雷達數(shù)據(jù)處理技術(shù)規(guī)范(正式版)
- 《民航客艙設(shè)備操作與管理》課件-項目一 飛機主要機型概述
評論
0/150
提交評論