浅谈会话技术

1

什么是会话技术

由于http协议是无状态的协议,也就是说当用户访问Web应用时,服务器无法区分该客户端是谁。就好像你在某宝结算购物车商品时,其服务器必须根据请求你的身份,找到你所结算的商品,这时用到的就是会话技术,在Web开发中,服务器跟踪用户信息的技术称为会话技术,简单的说就是帮助服务器记住客户端状态和区分客户端。

从打开浏览器访问某个站点直到浏览器关闭这一过程,就是一次会话。而会话记录就是起到记录这次会话中客户端的状态和数据的作用。

会话技术可分为两种:

Cookie和Session。

Cookie:将数据存储在客户端本地,减少服务端的存储的压力,安全性相对不强,客户端可以清除Cookie。

Session:将数据存储到服务端,安全性相对较强,但是会增加服务器压力。

2

Cookie的简单介绍

Cookie是小段的文本信息。通过Cookie可以标识用户身份、记录用户名及密码、跟踪重复用户。

当客户端第一次访问服务器时,服务端会生成一个Cookie,通过Response响应返回给客户端,客户端将Cookie保存到本地某个指定目录中。当客户端再次访问服务端时,Cookie会跟着Request请求一起到服务器,服务器会先查找Cookie中记录的信息,返回相对应的信息给用户端。

Cookie是以键值对(Key/Value)的形式存储在本地硬盘,用户可以手动删除Cookie信息或者服务端通过cookie.setMaxAge(int seconds)设置Cookie在客户端的持久化时间,当过了持久化时间后,浏览器将自动删除该Cookie信息(如果不设置持久化时间,浏览器关闭时则Cookie信息将销毁)。

3

Session的简单介绍

前面介绍过Cookie技术可以将用户的信息保存在各自的浏览器中,并且可以在多次请求下实现数据的共享。但是,如果传递的信息比较多,使用Cookie技术显然会增大服务器端程序处理的难度。这时,就可以使用Session实现。

Session对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个Session对象,用于保存该用户的信息,跟踪用户的操作状态。简单的说,Session是一种把会话数据保存到服务器端的技术。

当浏览器第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标识这个Session,并将其通过响应发送到浏览器。当浏览器第二次发送请求,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的Session。

一般情况下,服务器会在一定时间内(默认30分钟)保存这个 Session,过了时间限制,就会销毁这个Session。在销毁之前,我们可以将用户的一些数据以Key和Value的形式暂时存放在这个 Session中。

4

Cookie和Session的区别

Cookie不会占用服务器的资源,是存储在客户端本地的一段信息文本,而Session则是占用服务器资源的,按照常理来说,应该是优先使用Cookie的,但是如果张三冒充李四的名字发送请求给服务器,服务器把李四的相关信息发给了张三,这样的安全性问题是我们不想看到的,所以个人建议将登陆信息等重要信息存放为Session,其他相对不重要的信息如果需要保留,可以放在Cookie中。

本文属于原创,如有疑问请后台留言,如有转载请标注原作者,版权归本公众号所有。如果你喜欢我写的文章请关注 java资源社区,欢迎大家继续关注本公众号的技术博文。如果您觉得本文章对你有所帮助的话,不妨点个赞,您的支持就是我坚持原创的动力。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180107G05EDW00?refer=cp_1026

扫码关注云+社区