微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Session会话追踪的实现机制

一、session是什么? 

    session是jsp隐式对象(会话对象)。session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。由于web server对每一个客户端请求都没有历史记忆;

    session用来保存客户端状态信息;
   

二、什么是会话(session)跟踪?

   首先, HTTP请求是无状态的,通俗点说,当你打开一个网页,重新打开另一个网页之后,没有任何关系, 数据不会保存共用的。 其次, 会话是指从开始聊天到聊天结束, 在这里就是指,当你进入一个网站一直访问浏览,直至到你退出这个网站,或者关浏览器, 这是一次会话, 会话跟踪, 就是在你多次访问一个网站之间要保存数据, 多次请求要保存共有的数据,就叫会话跟踪。


三、session ID的作用

    当程序需要为某个客户端(浏览器)的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为session ID,服务器在响应时,会将Session对象的ID(session ID通过临时Cookie的方式响应给浏览器,浏览器的临时Cookie会存下sessionID,每次请求都会带上sessionID,可以根据这个ID判断是不是同1个用户访问;如果已包含一个session ID,则说明以前已经为此客户端创建过session,服务器就按照session ID把这个 session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session ID,则为此客户端创建一个session并且生成一个与此session相关联的session ID,session ID的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个 session id将被在本次响应中返回给客户端保存。
    如果有多个浏览器同时请求服务器,服务器会根据SessionID找到对应的浏览器,开不同的浏览器是不同的会话,同一个浏览器是同一个会话


四、HTTP协议与状态保持

http是无状态(stateless)的通信协议,当客户端发出请求时,服务器才会建立连接,一旦请求结束,服务器变短断开连接。
    session是解决http协议无状态问题的服务端解决方案,它能让客户端和服务端一系列交互动作变成一个完整的事务,能使网站变成一个真正意义上的软件。

五、 session对象何时被销毁?

    session在下列情况下被销毁
    1.程序调用HttpSession.invalidate();(销毁服务器上的session对象,重新发起请求时,会认为是一个新的会话,session ID不同)
    2.距离上一次收到客户端发送的session ID时间间隔超过了session的超时设置;
    3.服务器进程被停止(非持久session)
    4.浏览器关闭


六、举例阐述四种会话跟踪技术的特点,应用场景

 隐藏表单域:<input type="hidden">,非常适合步需要大量数据存储的会话应用

    1、URL传递参数
    url?参数名=值&参数名=值
    2、隐藏表单域
    3、使用Cookie
    保存在客户端的
    永久性Cookie 设置了有效时间的,就是永久性的  
             会以文件的形式保存在浏览器的临时文件夹中
    临时性Cookie 当客户端关闭之后,Cookie就没有了
            只是保存在浏览器的缓存中
    4、使用会话对象session
    session的认失效时间是30分钟
    在web.xml中可以配置session的失效时间

<session-config>
  		<session-timeout>10</session-timeout>
</session-config>


七、Cookie与Session的区别

1.Cookie是存在浏览器中的,Session是存在服务器中的

2.Cookie的安全性要低于Session,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。

3.Cookie可能会被用户禁用
 Session的数据是存在服务器内存中,关掉浏览器,会清空Session
 临时性Cookie存在浏览器的缓存中,关掉浏览器,会清空
 永久性Cookie是存在临时文件中,到达有效期前,一直存在

原文地址:https://www.jb51.cc/wenti/3284182.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐