• Servlet体验之旅(二)——Session、Cookie


    我们知道SessionCookie都是用于会话跟踪的,仅仅是实现的方式不大一样,那么他们到底有什么不同呢?以下跟着我脚步来了解一下:

     

    SessionCookie的含义:

    Session

    一种server端的技术,在server端创建。一般是採用散列表来存储信息,保存的数量可大可小。

    比如Tomcatsession对象就是採用HashMap存储键值对的。

    用于保存每一个用户的专用信息。它的生存期是用户持续请求时间加上一段时间。

     

    Cookie

    一种client技术。用于跟踪用户会话的一种方式。当然Session也能够用来跟踪用户会话,仅仅是实现原理有些不同罢了。Cookie是由server端发送给client的一个信息片段,存储在浏览器的内存中。或者是以文本形式保存在用户的硬盘上。存放的数据量受到限制,大多数浏览器为4K.

    Application:

    用于保存全部用户的公共数据信息,假设使用Application对象,一个须要考虑的问题是不论什么操作都要在Application_OnStart事件(global.asax)中完毕。

     

    以下是一张这三个对象存放数据的一个对照表格:


     

    因为本篇文章主要是想比較一下SessionCookie,所以以下重点比較这两者:

    1.存取方式:

    Cookie:仅仅能保存ASCII字符串。假设须要存取Unicode字符或者二进制数据,须要进行UTF-8GBK或者BASE64方式的编码。不能直接存取Java对象。存储略微复杂的信息,使用Cookie比較困难。

    Session:能够存取不论什么类型的数据,StringIntegerListMap等。

    能够直接保存Java Bean价值不论什么java类。对象等。

    使用起来很方便。能够把Session看作是一个Java容器类。

    2.隐私安全:

    Cookie:存储在client浏览器中,队client是可见的,client的一些程序可能窥探。复制甚至改动cookie中的内容。

    Session:存储在server上,对client是透明的,不存在敏感信息泄露的危急。

    3.有效期:

    Cookie:要想达到长期的记录效果Cookie还是一个比較好的选择。设置maxAge属性

    Session:依赖于名为JSESSIONIDcookie,而cookie JSESSIONIDmaxAge默觉得-1,仅仅要关闭浏览器该Session就会消失。

    4.对server的负担:

    Cookie:保存在client。不占用server资源,假设并发浏览的用户非常多。Cookie是非常好的选择。

    Session:保存在server端,每一个用户都会产生一个Session。假设并发訪问的用户许多,会产生许多的Session,消耗大量的内存。


     

    5.跨域名:

    Cookie:支持跨域名訪问。

    Session:仅在他所在的域名内有效。

     

    高扩展Web应用HTTP Session共享方案:

    1.在server端不保存Session。全然不状态

    2.基于浏览器CookieSession共享。

    3.基于数据库的Session共享。实现分布式应用间Session共享

    4.基于应用server、Servlet容器的Clustering机制

    5.基于NFSSession共享

    6.基于TerracottaEhcacheJBossCacheJava Caching方案实现Session共享

    7.基于Memcached/Tokyo TyrantKey-Value DBSession共享

     

    结束语:笔者知识有限。对资料的理解水平也有限,因此这里仅仅是稍作笔记总结,望批评指正。

     

  • 相关阅读:
    python3 get/post/使用代理/自定义header/自定义Cookie
    网页定位点击事件js响应函数教程(Chrome)
    burpsuite只拦截特定网站数据包教程
    AWVS和AppScan使用代理进行扫描教程
    kdbg安装使用教程(kali)
    kali-rolling安装nessus 7并创建扫描任务教程
    WebGoat 8安装、配置、使用教程(CentOS)
    应用层协议与传输层、网络层、数据链路层在编码上的区别
    Oracle Linux下载教程(以Oracle Linux 6.9为例)
    su和su -的区别
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7080116.html
Copyright © 2020-2023  润新知