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

下载本文档

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

文档简介

1、IG黑马程序员 HYPERLINK 传智播客旗下 高端IT教育品牌改变中国IT教育,我们正在行动黑马程序员JavaEE就业班同步笔记第一阶段:JavaWeb 之核心技术一Cookie 与 Session1案例一:记录用户的上次登陆访问时间.需求:用户登录完成后,显示您是第x位访问的用户,您的上次访问时间是:yyyy-MM-dd.*如果第一次访问的话,只显示您是第x位用户.*如果不是第一次访问的话,显示您是第x位访问的用户,您的上次访问时间 是:yyyy-MM-dd.分析:技术分析:【会话技术】什么是会话:用户打开一个浏览器访问页面,访问网站的很多页面,访问完 成后将浏览器关闭的过程称为是一次会

2、话.常见的会话技术:Cookie:将数据保存到客户端浏览器.Session:将数据保存到服务器端.为什么使用会话技术?*私有的数据,购物信息数据保存在会话技术中.参见图一和图二使用会话技术:【Cookie技术的使用】向浏览器保存数据:黑马程序员合肥中心编著黑马程序员 HYPERLINK 黑马程序员 HYPERLINK 传智播客旗下 高端IT教育品牌改变中国IT教育,我们正在行动HttpServletResponse 有一个方法:* void addCookie(Cookie cookie);获得浏览器带过来的Cookie:HttpServletRequest 有一个方法:* Cookie口 g

3、etCookies();创建一个Cookie对象:* Cookie(String name,String value);【JSP的简单概述】什么是 JSP:Java Server Pages(Java 服务器端页面).JSP=Java代码+ HTML的元素+ JSP内置东西SUN公司为什么推出JSP动态网页开发技术:SUN公司推出的Servlet技术进行动态网页开发.发现Servlet自身有不足没 有办法与ASP,PHP技术竞争.想在动态网页中输出表单.在Servlet中获得 PrintWriter out = response.getWriter();out.println(“);out.p

4、rintln(“);SUN又推出了动态的网页开发技术就是JSP.JSP的执行过程:黑马程序员合肥中心编著黑马程序员 HYPERLINK 传智播客旗下 高端黑马程序员 HYPERLINK 传智播客旗下 高端IT教育品牌改变中国IT教育,我们正在行动* JSP会被翻译成Servlet,编译成class进行执行的.JSP的嵌入Java代码:JSP的脚本元素:翻译成类中的成员部分.定义变量,定义方法,定义类.Servlet是线程不安全的,尽量少在类中定义成员属性! :翻译成类的service方法内部的内容.定义变量,定义类,直接写代码块.:翻译成 service 方法内部的 out.print();1

5、.2.2步骤分析:【步骤一】:准备登陆的案例.【步骤二】:在统计人数的Servlet中.判断是否是第一次访问.【步骤三】:根据是否是第一次显示不同的信息,同时将当前的时候保存到Cookie 中.1.3代码实现AppleScript纯文本查看复制代码 ?0 public class CountServlet extends HttpServlet private static final long serialVersionUID = 1L;0protected void doGet(HttpServletRequest request,HttpServletResponse response)

6、 throws ServletException, IOException 0response.setContentType(text/html;charset=UTF-8);0Integer count = (Integer)this.getServletContext().getAttribute(count);0 /response.getWriter().println(5现在网站被访问的次数为:+count+/h1);0/*0*获得浏览器中带过来的所有的Cookie信息,从数组中查找有没有指定名称的Cookie0*判断用户是否是第一次访问:(从数8组中没有找到指定名称的Cookie)

7、0* *如果是第一次:显示欢迎,记录当前9访问的时间存入到Cookie中.1* *如果不是第一次:显示欢迎,上一次0访问时间,同时记录当前访问的时间存入到Cookie中。1*/1/获得浏览器带过来的所有的Cookie:Cookie cookies =request.getCookies();黑马程序员合肥中心编著31415161718192 02122232425262728293 031323334黑马程序员 HYPERLINK 传智播客旗下 高端黑马程序员 HYPERLINK 传智播客旗下 高端IT教育品牌改变中国IT教育,我们正在行动/从数组中查找指定名称的Cookie:Cookie c

8、ookie = CookieUtils.findCookie(cookies, lastVisit);/判断是否是第一次: if(cookie = null)/第一次访问 response.getWriter( ).println(您是第+count+位访客!);else(/不是第一次Long l =Long.parseLong(cookie.getValue();Date d = new Date(l); response.getWriter( ).println(您是第+count+位访客!上次访问时间是 :+d.toLocaleString();)/创建一个Cookie对象:Cookie

9、 c = new Cookie(lastVisit,+System.currentTimeMillis();/保存到浏览器端: response.addCookie(c);)protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException doGet(request, response);)黑马程序员 HYPERLINK 传智播客旗下 高端黑马程序员 HYPERLINK 传智播客旗下 高端IT教育品牌改变中国IT教育,我们正在行

10、动3536371.4总结:Cookie 的常用 API: Cookie的常用的API:getName();getValue();setDomain(String domain);-设置 Cookie 的有效域名./ HYPERLINK setPath(String path);-设置 Cookie 的有效路径.setMaxAge(int maxAge);-设置 Cookie 的有效时间. Cookie的分类有关:*会话级别的Cookie:默认的Cookie.关闭浏览器Cookie就会销毁.*持久级别的Cookie:可以设置Cookie的有效时间.那么关闭浏览器Cookie还会存在.手动销毁持久

11、性Cookie. setMaxAge(0)前提是有效路径必须一致.2案例二:记录用户的商品浏览记录:需求:在购物网站上浏览商品的信息,商家为了留住用户,记住之前浏览的一些商品.分析:步骤分析:【步骤一】:在登录完成后,显示商品列表页面.【步骤二】:为商品列表页面做一些准备工作.【步骤三】:点击某个商品,将商品ID传递一个Servlet.【步骤四】:在Servlet中:判断是否是第一次浏览商品【步骤五】:如果是第一次:将商品的ID存入到Cookie中即可.【步骤六】:如果不是第一次:判断该商品是否已经浏览了.【步骤七】:如果浏览器过.删除之前元素,将该元素添加到最前面.【步骤八】:如果没有浏览过

12、该商品.判断最大长度,没有超过限制,直接加到最 前,如果已经超过限制,删除最后一个,将其插入到最前.代码实现:AppleScript纯文本查看复制代码 ?0public class ProductServlet extends HttpServlet 1private static final long serialVersionUID = 1L;黑马程序员合肥中心编著黑马程序员 HYPERLINK 传智播客旗下 高端IT教育品牌改变中国IT教育,我们正在行动00304 Cookie.05 的 Cookie.0607存入到Cookie.08浏览器.091-210是否已经在浏览记录.10prot

13、ected void doGet(HttpServletRequest request,2HttpServletResponse response) throws ServletException, lOException /*接收商品id.*接收从客户端带过来的所有*从Cookie的数组中查找指定名称*判断是否是第一次浏览商品:*第一次浏览商品*直接将商品的ID*将Cookie回写到*不是第一次浏览商品*判断当前的商品*已经存1在:2-1移除当前元素,将当前元素添加到最开始.*没在浏*没在浏2览记录中:3判断是否已经超过了最大长度:如果超过2-1-3:删除最后一个 将当前元素添 1加到最前面

14、.1没有超过:直接将该元素添加到最前位置.51存入到Cookie,回写浏览器.6171request.getParameter(id);819request.getCookies();202CookieUtils.findCookie(cookies,1*将转换的id的值*/接收id:String id =/获得所有的Cookie的信息:Cookie口 cookies =/判断是否是第一次:Cookie cookie =history);if(cookie = null)Cookie c = newCookie c = newc.setPath(/day11)/第一次浏览商品22Cookie(

15、history,id);3黑马程序员合肥中心编著黑马程序员 HYPERLINK 传智播客旗下 高端IT教育品牌改变中国IT教育,我们正在行动2;4c.setMaxAge(60*60*22 4*7);response.addCookie(2c);else(2/不是第一次浏览/判断选择的商品是2否已经在浏览记录中2-1String value =2 cookie.getValue();9String口 ids =3 value.split(-);0/将数组变为集合:3LinkedList1 list = new LinkedList(Arrays.asList(ids);32)(33之前浏览过该商

16、品332)(33之前浏览过该商品34 t.remove(id); / 1-2-335 t.addFirst(id);363没有浏览过该商品.73 list.size()83940414 se(2434445if(list.contains(id/lisliselse(/if(=3 )/超过3个list.removeLast();list.addFirst(id);/没到3个.list.addFirst(id);el)/将list中的元素取黑马程序员合肥中心编著黑马程序员 HYPERLINK 传智播客旗下 高端IT教育品牌4出,使用-连接上保存到Cookie,写回浏览器.4StringBuffe

17、r();748 append(s).append(-);4改变中国IT教育,我们正在行动StringBuffer sb = newfor(String s:list) sb.)String sValue =System.out.println(String sValue =System.out.println(/存入到Cookie中 Cookie c = newc.setPath(/day11)c.setMaxAge(60*60*2response.addCookie(5sb.toString().substring(0,sb.length()-1);05 sValue);152Cookie(

18、history,sValue);53 ;544*7);5c);55request.getRequestDispatcher(/demo7 2/product_info.htm).forward(request, response);5protected void doPost(HttpServletRequest request,9HttpServletResponse response) throws ServletException, IOException doGet(request, response);0)6)1626364656667黑马程序员合肥中心编著黑马程序员 HYPERLI

19、NK 传智播客旗下 高端IT教育品牌改变中国IT教育,我们正在行动686970717273742.4总结:清空浏览记录: 删除持久性的Cookie:AppleScript纯文本查看复制代码0 public class ClearServlet extends HttpServlet private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request,0HttpServletResponse response) throws ServletException, lOExce

20、ption 30 Cookie(history,null);4030 Cookie(history,null);405060 /product_list.jsp);Cookie cookie = newcookie.setPath(/day11); cookie.setMaxAge(0);response.addCookie(cookie);response.sendRedirect(/day11/demo270809 request,170809 request,10/* see HttpServlet#doPost(HttpServletRequestHttpServletResponse

21、 response)*/protected void doPost(HttpServletRequest request,1 HttpServletResponse response) throws ServletException, IOException / TODO Auto-generated method stub doGet(request, response);黑马程序员合肥中心编著黑马程序员 HYPERLINK 黑马程序员 HYPERLINK 传智播客旗下 高端IT教育品牌改变中国IT教育,我们正在行动103案例三:将商品添加到购物车:需求:查看某个商

22、品详情的时候,添加到购物车.需要将商品添加到购物车.分析:技术分析:Session的概述】Cookie本身是有大小和个数的限制.Session没有限制.Cookie的数据保存在客 户端,Session数据保存在服务器端. Session的执行原理:基于Cookie的.使用 Session:* 获得 Session:* request.getSession();3.2.2步骤分析:【步骤一】:点击加入购物车提交到Servlet【步骤二】:在Servlet将购物的商品存入到Session中.【步骤三】:可以创建一个Map集合用于保存购物信息Map的key可以是商品的 名称,Map的value是数量

23、.【步骤四】:在购物车页面中显示Map中的数据就可以.代码实现:AppleScript纯文本查看复制代码 ?0 public class CartServlet extends HttpServlet 黑马程序员合肥中心编著02 03 040506070809101112131415161718192 021222黑马程序员 HYPERLINK 传智播客旗下 高端黑马程序员 HYPERLINK 传智播客旗下 高端IT教育品牌改变中国IT教育,我们正在行动private static final long serialVersionUID = 1L;protected void doGet(Ht

24、tpServletRequest request, HttpServletResponse response) throws ServletException, IOException /接收商品名称: String name = newString(request.getParameter(name).getBytes(ISO-8859-1),UTF-8)/创建Map集合用于保存购物信息.Map Map的key是商品的名称value是购买的数量. Map map =(Map) request.getSession().getAttribute(cart); if(map = null)map

25、 = new LinkedHashMap();)/判断购物车中是否已经买了该商品.if(map.containsKey(name)/ map中已经有该商 品:/ *如果购物车中已经有该商品:获得到Map中该商品的数量+1。存回 到Map集合中.Integer count = map.get(name);count+;map.put(name, count);else(/ map中没有该商品./ *如果购物车中没有改商品:将商品添加到Map集合中数量1.map.put(name, 1);)/ *将Map集合保存到session中.request.getSession().setAttribute

26、( cart”, map);response.setContentType(text/html;charset=UTF-8);response.getWriter().println( 继续购物 | 去结算);)黑马程序员 HYPERLINK 传智播客旗下 高端黑马程序员 HYPERLINK 传智播客旗下 高端IT教育品牌改变中国IT教育,我们正在行动3242526总结:Session 是域对象:session何时创建和销毁?作用范围:*创建:服务器端第一次调用getSession()创建session.*销毁:三种情况销毁session:l.session过期.默认过期时间为30分钟.2.非正常关闭服务器.如果正常关闭session序列化到硬盘.3.手动调用 session.invalidate();*作用范围:多次请求.(一次会话)4案例四:进行一次性验证码的校验需求:在登录的页面中,需要

温馨提示

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

评论

0/150

提交评论