zoukankan      html  css  js  c++  java
  • Cookie和Session的区别和联系

    会话技术

    1.Cookie

    客户端会话技术

    数据存储在客户端,只能存String类型,并且大小有限制,一般为4KB,Cookie数量有限制(20个),不同浏览器不同;

    一个Tomcat服务器中的共享问题:Cookies的获取限制,通过setPath()设置访问范围限制,默认为当前虚拟目录;

    多个Tomcat服务器下的共享问题:通过setDomain()设置域名,如果一级域名相同,二级域名下的cookie是可以访问到的;

    Cookie的持久化存储,setMaxAge() 设置存储时间,如果不设置,默认关闭浏览器即删除(整数:秒为单位,设置存储时长;负数:默认值,即关闭删除,可以不写;0,删除客户端Cookie);

    作用:一般用来存储不敏感的信息,一般用来做服务器对客户端的用户识别;

    注意事项:Tomcat8下不能存中文,无法存储特殊的字符,如空格,需要URL编码,URLENCODE的encode进行编码,对应的是URLDECODE解码

    2.Session

    服务器端会话技术

    数据存储在服务器端,以Cookie为基础做客户端识别;

    HttpSession session = request.getHttpSession();

    如果第一次访问,客户端Cookie中无JSESSIONID,即新生成一个session对象,存放到服务器中;

    如果第二次访问,请求对象中Cookie中含有JSESSIONID,服务器会返回对象客户端的Session;

    session的钝化和活化,服务器正常关闭,会存放文件到Tomcat work目录下,服务器再次启动时,文件自动加载到服务器中,文件删除;

    Session的销毁:

    *.服务器关闭;

    *.session对象调用invalidate()方法;

    *.默认失效时间30分钟,Tomcat 配置文件中可以配置

        <session-config>
                        <session-timeout>30</session-timeout>
                    </session-config>

    作用:

     1. session用于存储一次会话的多次请求的数据,存在服务器端
     2. session可以存储任意类型,任意大小的数据

    两者区别:   

    1. session存储数据在服务器端,Cookie在客户端
    2. session没有数据大小限制,Cookie有
    3. session数据安全,Cookie相对于不安全

  • 相关阅读:
    flume+kafka (分区实现 默认单分区)
    flume+kafka (分区实现 默认单分区) (二)
    trident 序列号问题
    C#运动控制日志报警记录和操作记录记录查询(SqlLite数据库操作)
    C#运动控制运动暂停思路检测沿信号方法
    C#使用json配置文件方法【读写Json,适合小项目】
    C#NLog日志组件使用
    C#运动控制05实时报警及显示方案
    C#USB扫码枪实现无焦点状态下扫入
    C#运动控制05日志显示(ListView和imageList控件使用)
  • 原文地址:https://www.cnblogs.com/isit/p/11005087.html
Copyright © 2011-2022 走看看