Cookie And Session用法解析

Cookie And Session用法解析

Cookie技术

  1. Cookie技术使用场景:
    将会话数据保存在浏览器客户端。
  2. Cookie原理:
    2.1 服务器端创建Cookie数据,然后通过set-cookie的响应头把cookie数据发送给浏览器保存。
    响应头:例如set-cookie:name=admin
    2.2 浏览器第一次访问服务器,同时将cookie数据保存在浏览器cookie目录中。
    2.3 浏览器在下次访问服务器时,会带cookie数据访问服务器,通过cookie的请求头将数据发送给服务器。
    请求头:例如cookie:name=admin
    2.4 服务器接受浏览器发送的cookie数据
    request.getCookies()
  3. Cookie常用API方法:
    3.1 创建cookie对象,用于保存会话数据,
    new Cookie(String name,String value);
    3.2 设置cookie对象
    void setPath(String url);设置cookie有效路径,表示只有访问此路径的时候才会带cookie数据。
    void setMaxAge(int time);设置cookie有效时间。
    void setValue(String value);设置value值;
    3.3 发送浏览器数据到浏览器保存。
    response.addCookie(cookie);
    3.4 接收浏览器发送的cookie数据
    Cookie[] request.getCookies();
  4. Cookie细节:
    4.1设置cookie的有效路径:setPath(uri);如果访问的路径是有效路径,那么下次访问的时候请求会带着cookie数据到服务器。
    4.2设置cookie有效时长:setMaxAge(int time);
    time:
    正整数—-cookie数据保存在浏览器的缓存目录中(硬盘中)。例如10。10秒之后就cookie就会丢失。(从最后一次访问cookie开始计算)。
    负数—-cookie数据保存在浏览器内存中,浏览器关闭,cookie数据就会丢失。
    0—-删除同名的cookie
    4.3可以同时往浏览器放松多cookie数据,但是必须是字符串类型。浏览器一般只允许存储300个cookie,每个站点最多存放20个cookie,每个cookie大小限制在4kb.

Session技术

  1. Session技术使用场景:
    session的数据保存在服务器端(服务器端的内存中)

  2. session原理:
    2.1服务器创建Session对象,分配一个唯一的标记(JSESSIONID),会话数据保存sessino对象中,然后服务器把JSESSION作为cookie发送给浏览器保存。
    响应头:JSESSIONID=7EBC5D0B44D9D3DDE7FAD83C077E3D3E
    2.2浏览器得到JSESSIONID的cookie,保存在浏览器的目录中。
    2.3浏览器在下次访问服务器时,带着JSESSIONID的cookie数据访问服务器。
    请求头:Cookie: JSESSIONID=7EBC5D0B44D9D3DDE7FAD83C077E3D3E
    2.4服务器得到JSESSIONID,在服务器内存中查询是否存在对应的编号的session对象。
    2.5如果找到对应的session对象,返回这个对象。

  3. session核心方法:
    HttpSession session=request.getSession();

  4. session细节:
    4.1设置session有效时长
    注意:关闭浏览器并不会导致session对象销毁。
    4.1.1服务器默认30分钟收回session对象,最后一次访问session开始计算。
    4.1.2设置session代码有效时长
    void setMaxInactiveInterval(int interval) 以秒为单位
    4.1.3全局设置session的有效时长,在web.xml文件中设置,以分为单位
    4.1.4立即手动销毁session对象:invalidate()
    4.2 request.getSession()方法
    HttpSession getSession()/getSession(true)创建或得到session对象。当前没有找到对应的session 对象,创建新的session对象
    HttpSession getSession(false) 得到session对象。如果找不到,则返回null

你可能感兴趣的:(java)