Cookie和Session学习

来源:互联网 发布:大数据脱敏 编辑:程序博客网 时间:2024/05/18 03:18

Cookie和Session学习

  • Cookie简介:

    Cookie是一种客户端的会话技术。会话的生命周期是打开浏览器网页窗口到关闭浏览器网页窗口。cookie如果没有设置最大存活时间,在关闭浏览器网页窗口时,cookie就会消失。

    Cookie是通过拓展HTTP协议来实现的,服务器通过HTTP协议的响应消息头添加cookie,响应给浏览器(如果设置了cookie的最大生存时间,就会在浏览器中有缓存),浏览器再次请求客户端时,会在http的请求消息头携带cookie信息,访问服务器,这时,服务器就可以识别出这个浏览器之前访问过。

  • Cookie的相关api介绍:

    • request.getCookies():获取cookies[],在浏览器一个会话可能包含多个cookies。
    • response.addCooike():给响应客户端的信息头加上cookie字段
    • Cookie的构造方法

      Cookie(String name,String value)name:表示cookie的名称value:表示cookie的值注意:cookie的名称必须遵守RFC规范。只能包含ASCII字符,不能包含逗号,分号,空格,$开头。cookie的名称在创建之后不得更改。
    • setPath():设置cookie的路径,让客户端知道是哪个的web应用的cookie。用于区别不同web项目的cookie。
    • getPath():获取cookie的路径,可以通过路径来匹配cookie。
    • setMaxAge():设置cookie的最大生存时间,以秒为单位。

      如果setMaxAge()的值为负数:表示不存储cookie如果为0,表示删除cookie如果大于0,表示cookie的最大生存时间
    • getMaxAge():返回的是cookie的最大生存时间。

    • setSecure():设置cookie安全,浏览器只会在HTTPS等安全协议中传输。

Session(所指的是HttpSession)

  • Session简介

    在Web开发中,服务器会为每个用户浏览器创建一个会话对象(Seesion对象),一个用户浏览器独占一个Session对象。

    会话(Session)的生命周期:从打开浏览器网页窗口到关闭浏览器网页窗口。

    Session对象存储着用户会话所需的属性及配置信息。在其生命周期内用户的属性及配置信息,可以在多个Servlet之间共享。

    服务器创建Session出来后,会把Session的id,以cookie的形式返回给客户端,只要会话未结束,客户端再次访问服务器时,会带有Session的id号的cookie信息。

  • Session的相关API

    • request.getSession():返回的是一个HttpSession。

    • getAttribute(String name):通过name获取session存储的值

    • setAttribute(String name,Object value):给Session设置值。
    • getAttributeNames():获取Session所有的配置信息名。

    • getId():获取Session的id。

    • isNew():如果客户端还不知道该会话,或者客户端选择不加入该会话,则返回true。
    • getLastAccessedTime():返回客户端上一次发送与此会话关联的请求的时间。
    • getMaxInactiveInterval():返回 servlet 容器在客户端访问之间将使此会话保持打开状态的最大时间间隔,以秒为单位。
    • setMaxInactiveInterval():设置会话保持的最大时间间隔,以秒为单位。
    • invalidate():使此会话无效
  • Session销毁的方式

    • 调用invalidate()方法强制销毁
    • 超时(默认30分钟)
    • 通过setMaxIncativeInterval(int interval)设置最大间隔时间,单位秒。
    • 在web.xml中配置
    <session-config>    <!-- 设置Session的有效时间,单位是分钟 -->    <session-timeout>5</session-timeout></session-config>

Cookie和Session的区别

  • Cookie是把用户数据写给用户的浏览器,Session的数据放在服务器上。
  • cookie的数据是不安全的(本地会进行缓存,容易被人获取),Session会更安全。
  • Cookie保存的数据有大小限制,不超过4k。
  • Cookie保存的是字符串,Session保存的是对象。
0 0
原创粉丝点击