【黑馬程序員】JavaWeb之核心技術(shù)-Cookie與Session.docx 免費下載
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rè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的腳本元素<%! %>:翻譯成類中的成員局部.定義變量,定義方法,定義類是線程不平安的,盡量少在類中定義成員屬性?。?lt;% %>:翻譯成類的service寫代碼塊.<%= serviceout.print();步驟分析:【步驟一】:準(zhǔn)備登陸的案例.【步驟二】:在統(tǒng)計人數(shù)的Servlet中.判斷是否是第一次訪問.【步驟三】:根據(jù)是否是第一次顯示不同的信息,同時將當(dāng)前的時候保存到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 **如果是第一次:顯示歡送,記錄當(dāng)前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)站上瀏覽商品的信息,商家為了留住用戶,記住之前瀏覽的一些商品.分析:步驟分析:【步驟一】:在登錄完成后,顯示商品列表頁面.【步驟二】:為商品列表頁面做一些準(zhǔn)備工作.【步驟三】:點擊某個商品,將商品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不是第一次瀏覽商品判斷當(dāng)前的商品*已經(jīng)存1在:2-1移除當(dāng)前元素,將當(dāng)前元素添加到最開始.* *沒在瀏覽記錄中:1 * *判斷是否已經(jīng)超過了最大長度:如果超過2-1-3:刪除最后一個將當(dāng)前元素添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();作用范圍:屢次請求.(一次會話)案例四:進(jìn)行一次性驗證碼的校驗需求:在登錄的頁面中,需要有一個驗證碼的校驗.分析:技術(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年版貨車司機雇傭勞動合同
- 2024汽車制造商關(guān)于新型汽車零部件采購的合同
- 夜間交通指示照明合同(2篇)
- 2024橋梁工程橋梁檢測與評估承包合同樣本2篇
- 2024年雞蛋供貨商協(xié)議
- 數(shù)字健康服務(wù)推廣協(xié)議
- 土地居間合同1
- 16-2《登泰山記》(說課稿)高一語文同步高效課堂(統(tǒng)編版 必修上冊)
- 2《觀察蝸牛的反應(yīng)》說課稿-2023-2024學(xué)年科學(xué)二年級上冊湘科版
- 能源行業(yè)設(shè)備采購合同
- 2023-2024學(xué)年《Web開發(fā)基礎(chǔ)》試卷及答案解析
- 標(biāo)準(zhǔn)化考場方案
- 遙感技術(shù)在地表水源地水體監(jiān)測中的應(yīng)用研究
- 鐵路職業(yè)病防治工作課件
- 核電經(jīng)驗反饋培訓(xùn)課件
- 環(huán)境影響評價技術(shù)方案
- 部隊預(yù)防醉駕
- 皖醫(yī)大兒科學(xué)習(xí)題及答案
- 急診科護(hù)士的病人投訴處理與糾紛解決
- 幼兒園建筑設(shè)計與建筑信息模型應(yīng)用
- 中外設(shè)計史授課教案
評論
0/150
提交評論