会话跟踪技术,Cookie,session的工作流程,原理,基本使用

一、会话跟踪技术

会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应

会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据

HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会将该请求视为新的请求,因此我们需要会话跟踪技术来实现会话内数据共享(为什么设置成为无状态的?因为设成无状态的就不用携带前面的数据,访问速度会快些。)

实现方式:

1.客户端会话跟踪技术:Cookie(也就是把请求数据放到了客户端服务器里)

2.服务端会话跟踪技术:session

二、Cookie

(一)cookie的工作流程和Cookie基本使用

Cookie:客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访

cookie的工作流程:比如服务器有两个资源A servlet 和Bservlet,这时,客户端浏览器发送请求1来请求Aservlet ,这时Aservlet 里创建一个cookie对象的数据,Aservlet 发送响应的时候把cookie发给客户端浏览器,浏览器接收到后保存在浏览器里,浏览器在同一次会话中,再次发送请求Bservlet这时浏览器携带cookie的内容访问Bservlet,在Bservlet里就能获取到数据。

我们作为后台人员,更关注服务端的操作;所以对于服务端人员来说主要分为两个:发送cookie和获取cookie

Cookie基本使用:

测试举例:在AServlet里写下面代码 

在BServlet里写下面代码 

 浏览器开两个窗口进行访问

(二)cookie的原理

cookie的实现是基于http协议的

浏览器发送请求访问A servlet,tomcat做出响应时发现是A servlet要发送cookie数据,就会在响应发送的数据里加上set -cookie响应头,浏览器接收到响应头,发现是cookie,就把对应的响应头解析,拿到数据,把数据存在浏览器内存里,浏览器下一次携带cookie数据访问B servlet,这时,浏览器给数据加上请求头cookie,携带着访问B servlet,这时B servlet会获取到对应的请求头的数据再通过request对象把所有的数据防止成cookie对象。

(三)cookie使用细节

cookie的存活时间:

默认情况下,cookie存储在浏览器内存中,当浏览器关闭,内存释放,则Cookie被销毁

可以用setMaxAge(int seconds)来设置cookie的存活时间

        正数:将Cookie写入浏览器所在电脑的硬盘,持久化存储,到时间自动删除

        负数:默认值,cookie在当前浏览器内存中,浏览器关闭,cookie被销毁

        零:删除对应的cookie 

 cookie存储中文问题

cookie不能直接存储中文,如果要存储要进行转码:URL编码

解码:

 

三、session

(一)基本使用

服务端会话跟踪技术:将数据保存到服务端

JavaEE提供HttpSesion接口,来实现一次会话的多次请求见数据共享功能 

 

 (二)session的原理

session是基于cookie实现的

一次会话的多次请求间,不管获取多少次,都获取的是同一个session

服务器如何保证在一个会话的多次请求间获取到的session是同一个?

通过demo1获取session第一次执行时,获取出的session有一个唯一标识id10,这时demo1存别的数据,存完后,tomcat给对应的客户端浏览器做出响应,这时tomcat发现用了session,会自动将session的id当作一个cookie发送给客户端浏览器,会加上响应头set-cookie(JSESSIONID=10)给浏览器,浏览器收到后把收到的存储在浏览器内存里,浏览器下一次再携带着cookie信息去访问demo2的servlet,访问的时候会携带cookie头(JSESSIONID=10);demo2里获取session的时候,发现携带的是cookie头,cookie头里面还有JSESSIONID=10,第二次获取的时候,就会去内存中找有没有ID=10的session,如果有就直接用,如果没有就创建新的,这样就保证了同一会话获取到同一个session。

 (三)session的使用细节

一般会把登录之后的信息存在session中 

session不能长期的存储数据,浏览器关闭后再打开,获取到的session不是同一个

session要想共享一些数据,就要保证浏览器不被关闭;而cookie可以存在硬盘中长期存储

session的钝化、活化:

服务器重启后,Session中的数据是否还在?

钝化:在服务器正常关闭后,tomcat会自动将 Session数据写入硬盘的文件中

活化:再次启动服务器后,从文件中加载数据到Session中

session的销毁: 

调用session.invalidate()方法销毁session可以用在登录后推退出登录时。

四、小结

cookie和session都是来完成一次会话内多次请求间数据共享的 

区别:

 使用场景:

购物车一般用cookie,要长期存储

登录要保证安全,一般用session

验证码要保证安全,一般用session

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值