一、Cookie
    Cookie的数据是由客户端来保存和携带的,所以称之为客户端技术。
  1、属性:
    name:名称不能唯一确定一个Cookie。路径可能不同。
    value:不能存中文。
    path:默认值是写Cookie的那个程序的访问路径
      比如:http://localhost:8080/day10_00_cookie/servlet/ck1写的Cookie
        path就是:/day10_00_cookie/servlet 看当前创建cookie的资源(servlet)文件路径
          客户端在访问服务器另外资源时,根据访问的路径来决定是否带着Cookie到服务器
          当前访问的路径如果是以cookie的path开头的路径,浏览器就带。否则不带。

    maxAge:cookie的缓存时间。默认是-1(默认存在浏览器的内存中)。单位是秒。
      负数:cookie的数据存在浏览器缓存中
      0:删除。路径要保持一致,否则可能删错人。
      正数:缓存(持久化到磁盘上)的时间

二、HttpSession
  1、HttpSession定义
    > 它也是一个域对象: session servletContext request
    > 同一个会话下,可以使一个应用的多个资源共享数据
    > cookie客户端技术,只能存字符串。HttpSession服务器端的技术,它可以存对象。

  2、常用方法
    把数据保存在HttpSession对象中,该对象也是一个域对象。
    void setAttribute(String name,Object value);
    Object getAttribute(String name);
    void removeAttribute(String name);
    HttpSession.getId():

      setMaxInactiveInterval(int interval) 设置session的存活时间
      invalidate() 使此会话无效

  3、getSession():内部执行原理
      HttpSession request.getSession():内部执行原理
        1、获取名称为JSESSIONID的cookie的值。
        2、没有这样的cookie,创建一个新的HttpSession对象,分配一个唯一的SessionID,
          并且向客户端写了一个名字为JSESSIONID=sessionID的cookie
        3、有这样的Cookie,获取cookie的值(即HttpSession对象的值),

          从服务器的内存中根据ID找那个HttpSession对象:
          找到了:取出继续为你服务。
        找不到:从2开始。

    HttpSession request.getSession(boolean create):
      参数:
        true:和getSession()功能一样。
        false:根据客户端JSESSIONID的cookie的值,找对应的HttpSession对象,找不到返回null(不会创建新的,只是查询)。

  4、客户端禁用Cookie后的会话数据保存问题
    客户端禁用cookie:浏览器永远不会向服务器发送cookie的请求消息头

    解决方案:
      方案一:在主页上给出提示:请不要禁用您的cookie
      方案二:URL重写。必须对网站的所有地址都重写。

    http://url--->http://url;JSESSIONID=111

    response.encodeURL(String url);
      看浏览器有没有发送cookie请求消息头,没有就重写URL,有就不重写。

    request.getSession();必须写

coockie 和 session的更多相关文章

  1. session实现购物车

    为实现简单的购物功能(购物车添加.账户查看.购物车商品删除.实时的购物商品数量及价格的计算显示.购物车商品数量可手动输入等),用session实现了一简单的以php语言为基础.连接MySQL数据库的购 ...

  2. Asp.net Core中使用Session

    前言 2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Cor ...

  3. 懒加载session 无法打开 no session or session was closed 解决办法(完美解决)

           首先说明一下,hibernate的延迟加载特性(lazy).所谓的延迟加载就是当真正需要查询数据时才执行数据加载操作.因为hibernate当中支持实体对象,外键会与实体对象关联起来.如 ...

  4. 探索ASP.NET MVC5系列之~~~6.Session篇(进程外Session)

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...

  5. Nhibernate的Session管理

    参考:http://www.cnblogs.com/renrenqq/archive/2006/08/04/467688.html 但这个方法还不能解决Session缓存问题,由于创建Session需 ...

  6. nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)

    本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ...

  7. zookeeper源码分析之六session机制

    zookeeper中session意味着一个物理连接,客户端连接服务器成功之后,会发送一个连接型请求,此时就会有session 产生. session由sessionTracker产生的,sessio ...

  8. [转载]Cookie/Session的机制与安全

    Cookie和Session是为了在无状态的HTTP协议之上维护会话状态,使得服务器可以知道当前是和哪个客户在打交道.本文来详细讨论Cookie和Session的实现机制,以及其中涉及的安全问题. 因 ...

  9. 修改session垃圾回收几率

    <?php //修改session垃圾回收几率 ini_set('session.gc_probability','1'); ini_set('session.gc_divisor','2'); ...

随机推荐

  1. 在ASP.NET程序中用程序动态向<head>便签里添加<meta>标签

    在使用ASP.NET框架开发: 若要在Html网页中加入<meta>设置,但想通过程序动态加入: 1.如果是ASP.NET4.0以前版本: 使用HtmlMeta类加入<meta> ...

  2. python数据结构与算法第八天【冒泡排序】

    1.排序算法的稳定性 稳定排序算法会让原本有相同键值的记录维持相对次序 例如:对以下元组按照元组的第一个元素升序排列,元组如下: (4,1) (3,1) (3,7) (5,6) 若要满足条件,则可能的 ...

  3. 自定义组件Component

    定义compa组件 由4个页面构成 compa.js: compa.json: compa.wxml: compa:wxss: 1.compa.json:在json文件进行自定义组件声明 { &quo ...

  4. js笔记2

    原型:prototype 和 __proto__ prototype 给他即将生成的对象继承下去的属性 prototype: 显式原型,每个function下都有prototype属性,该属性是一个对 ...

  5. Lambda表达式Contains方法(等价于SQL语句中的like)使用注意事项

    貌似已经半年多没写一篇帖子了,充分的说明要么老总一天折腾的让人心齐疲惫,没心情去写:要么另外一种可能就是自己不思进取,说白了就是懒.好在这种状态在今天被打破了.MoNey加油. 众所周知,想在Enti ...

  6. How to hosts

    sudo cp /etc/hosts /etc/hosts.bak sudo cp ~/Desktop/hosts /etc/hosts sudo systemctl restart NetworkM ...

  7. Nginx 网络事件

    L27-29 应用层(如浏览器等一系列组成的发送get请求) 传输层 系统内核打开一个端口将客户端IP及端口和服务端IP及端口记录下来一并传输到网络层 网络层 打包后到链路层 再到客户端路由器至广域网

  8. notepad++上直接运行python文件

    一.打开notepad++,点击语言,选择python,这样就写的是python文件了 二.点击运行>运行:输入cmd /k python "$(FULL_CURRENT_PATH)& ...

  9. 基于虚拟主机的HAProxy配置实战

    本实例是如上图所示 主要实现的功能如下: 当客户访问www.tb.com/tb.com的时候HAProxy将网站提交到电商服务器集群当访问bbs.tb.com的时候,将访问请求调度到论坛集群,实现论坛 ...

  10. Elasticsearch 中数据类型 text 与 keyword 的区别

    随着ElasticSearch 5.X 系列的到来, 同时也迎来了该版本的重大特性之一: 移除了string类型. 这个变动的根本原因是string类型会给我们带来很多困惑: 因为ElasticSea ...