A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Day16 Cookie的使用和概述


Day16   会话技术 Cookie和Session
会话技术概述会话技术的作用和描述
  • 描述: 用户访问网站,每次从打开浏览器到关闭浏览器这一过程称之为一次会话
  • 作用:用户数据的私有化,将用户购物信息保存在会话技术中,私有数据

Cookie的有效期
  • Cookie默认数据的存储默认的是一次会话,就是一次浏览器的打开关闭

Cookie保存数据的使用  //向浏览器保存数据:
  HttpServletResponse有一个方法: 服务器通过响应向客户端发送数据,存取在客户端
      * response.addCookie(Cookie cookie);
  //获得浏览器带过来的Cookies存储的数据;
  HttpServletRequest有一个方法:
      * Cookie[] cook=request.getCookie();
  //创建一个Cookie对象:
      * Cookie(String name,String value);Cookie的常用APICookie中存储中文的实现对中文的编码和解码编码
  • String value=URLEncoder.encode("二哈傻中无敌","UTF-8");

解码
  • String value= URLDecoder.decode(value,"UTF-8");

代码实现  
  //首先获取Cookie中存取的值
  Cookie[] cookies=request.getCookies();
  //通过CookieUtils工具类来获取指定的名字的value值
  Cookie aa=CookieUtils.findCookie("vlaue","aa");
  if(aa!=null){
      //获取指定名字对应的value值
      String value=aa.getValue();
   //进行解码
      String a= URLDecoder.decode(value,"UTF-8");
  }
  //对添加到Cookie的中文数据进行编码
     String value=URLEncoder.encode("二哈傻中无敌","UTF-8");
  //用Cookie全参构造的方式将数据进行初始化
      Cookie cookie=new Cookie("aa",vlaue);//传入参数名字和对应的值
      //向客户端添加存储对数据
      response.addCookie(cookie);Cookie的常用API:
  • getName();
  • getValue();
  • setDomain(String domain);
  • setPath(String path);  设置cookie的有效路径  为了手动删除Cookie持久性保存的值,
  • setMaxAge(int maxAge);   用来设置Cookie的存活时间,** 指的是一次请求发生时,Cookie所存活的值**

Cookie的分类有关:
  • 会话级别的Cookie:默认的Cookie.关闭浏览器 Cookie就会销毁.
  • 持久级别的Cookie:可以设置Cookie的有效时间.那么关闭浏览器Cookie还会存在,手动销毁持久性Cookie.setMaxAge(0)-- 前提是有效路径必须一致

动态设置项目的路径
file://F:/JAVA%E8%AF%AD%E8%A8%80%E8%B5%84%E6%96%99/%E9%BB%91%E9%A9%AC%E4%BA%8C%E9%98%B6%E6%AE%B5_Web%E7%AC%94%E8%AE%B0/MyNoteBook/Day16%E6%88%AA%E5%9B%BE/1526541630403.png?lastModify=1526869247
  • 代码” ${pageContext.request.contextPath}”的作用是取出部署的应用程序名(例如:配置的网页的Servlet.java文件的绝对路径),这样不管如何部署,所用路径都是正确的。 缺点: 操作不便,其他工具无法正确解释${pageContext.request.contextPath}

    • ${pageContext.request.contextPath}


代码实现浏览记录步骤分析
  • 登陆完成后,显示商品列表页面
  • 为商品列表页面做一些准备工作(配置成动态页面jsp)
  • 点击某个商品,将商品ID传递一个Servlet(请求)
  • 在Servlet中,判断是否是第一次浏览商品
  • 如果是第一次:将商品的ID存入到Cookie中
  • 如果不是第一次:判断Cookie中是否由此数据,
  • 如果浏览过,删除原有的数据,将此数据重新在页面上靠前展示
  • 如果没有浏览过该商品,判断展示浏览记录栏展示数量的长度,没有超过限制,直接加到最前,如果已经超过限制,删除最后一个,将其插入到最前


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马