• coockie 和 session


    一、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();必须写

  • 相关阅读:
    第二章函数对象
    2013/10/24初学BOOST
    [转]delete 多表删除的使用
    vs2010配置boost编程环境(照抄并简化)
    游戏服务器修改状态标志位方法
    小思 引用和指针
    第二章:UNIX标准化及实现
    const指针
    第一章:UNIX基础知识
    基础算法——位运算
  • 原文地址:https://www.cnblogs.com/soficircle/p/6898888.html
Copyright © 2020-2023  润新知