【黑马程序员】JavaWeb之核心技术-Cookie与Session_第1页
【黑马程序员】JavaWeb之核心技术-Cookie与Session_第2页
【黑马程序员】JavaWeb之核心技术-Cookie与Session_第3页
【黑马程序员】JavaWeb之核心技术-Cookie与Session_第4页
【黑马程序员】JavaWeb之核心技术-Cookie与Session_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

..『黑马程序员』JavaEEJavaWeb--CookieSession案例一:记录用户的上次登陆访问时间.需求:用户登录完成后,显示您是第x位访问的用户,您的上次访问时间是:yyyy-MM-dd.xx是:yyyy-MM-dd.分析:技术分析:【会话技术】成后将浏览器关闭的过程称为是一次会话.常见的会话技术:Cookie :将数据保存到客户端浏览器.Session :将数据保存到效劳器端.为什么使用会话技术?参见图一和图二使用会话技术:【Cookie技术的使用】向浏览器保存数据:ServletResponse有一个方法:voidaddCookie(Cookiecookie);获得浏览器带过来的Cookie:ServletRequest有一个方法:Cookie[]getCookies();创立一个Cookie对象:Cookie(Stringname,Stringvalue);【JSP的简单概述】什么是JSP :JavaServerPages(Java效劳器端页面).JSP=JavaHTMLJSPSUNJSPSUNServletServletASP,PHPServletout.println(“<formaction=’’method=’’>〞);out.println(“</form>〞);SUNJSP.JSP的执行过程:JSPServlet,classJSP的嵌入Java代码:JSP的脚本元素<%! %>:翻译成类中的成员局部.定义变量,定义方法,定义类是线程不平安的,尽量少在类中定义成员属性!!<% %>:翻译成类的service写代码块.<%= serviceout.print();步骤分析:【步骤一】:准备登陆的案例.【步骤二】:在统计人数的Servlet中.判断是否是第一次访问.【步骤三】:根据是否是第一次显示不同的信息,同时将当前的时候保存到Cookie中.代码实现[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现在网站被访问的次数为:"+count+"</h1>");06 /**0 *获得浏览器中带过来的所有的7Cookie信息,从数组中查找有没有指定名称的Cookie0 *判断用户是否是第一次访问:(从数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总结:Cookie的常用API:CookieAPI:getName();getValue();setDomain(Stringdomain);Cookie//setPath(Stringpath);CookiesetMaxAge(intmaxAge);CookieCookie的分类有关:Cookie:Cookie.CookieCookie:CookieCookieCookie.setMaxAge(0)案例二:记录用户的商品浏览记录:需求:在购物网站上浏览商品的信息,商家为了留住用户,记住之前浏览的一些商品.分析:步骤分析:【步骤一】:在登录完成后,显示商品列表页面.【步骤二】:为商品列表页面做一些准备工作.【步骤三】:点击某个商品,将商品ID传递一个Servlet.【步骤四】:在Servlet中:判断是否是第一次浏览商品【步骤五】:如果是第一次:将商品的ID存入到Cookie中即可.【步骤六】:如果不是第一次:判断该商品是否已经浏览了.【步骤七】:如果浏览器过.删除之前元素,将该元素添加到最前面.前,如果已经超过限制,删除最后一个,将其插入到最前.代码实现:[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是否已经在浏览记录.1*接收从客户端带过来的所有Cookie判断是否是第一次浏览商品:第一次浏览商品IDCookie不是第一次浏览商品判断当前的商品*已经存1在:2-1移除当前元素,将当前元素添加到最开始.* *没在浏览记录中:1 * *判断是否已经超过了最大长度:如果超过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//将数组变为集合:3LinkedList<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总结:清空浏览记录: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中的数据就可以.代码实现:[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是购置的数量.0 Map<String,Integer>map=6(Map<String,Integer>)request.getSession().getAttribute("cart");0 if(map==null){7 map=new0LinkedHashMap<String,Integer>();8 }0 //判断购物车中是否已经买了该商品.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集合中数量1.5 map.put(name,1);1 }61 //*Mapsession1cart",map);1charset=UTF-8");2ahref='/day11/demo2/product_list.jsp'>继续购物</a>|<a0href='/day11/demo2/cart.jsp'>去结算</a></h3>");2 }12223.242526总结:Sessionsession何时创立和销毁?作用范围:getSession()session.session:1.session302.session3.session.invalidate();作用范围:屡次请求.(一次会话)案例四:进行一次性验证码的校验需求:在登录的页面中,需要有一个验证码的校验.分析:技术分析:使用session保存生产的验证码.步骤分析:4中.【步骤二】:在页面中输入验证码值,点提交.【步骤

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论