淘宝用户与后端服务器实现原理

淘宝实现原理

对于淘宝相信很多同学都用过,可以在上面买一些东西,但是你知道我们在访问淘宝页面的时候是如何与后端的服务器进行交互的吗?

淘宝用户与后端服务器实现原理_第1张图片

这里我画了一张交互图,可以通过这张图来分析浏览器页面与淘宝后端服务器的这个交互过程

1.首先当我们浏览器点击淘宝主页链接的时候,我们就可以看到这个主页的样子,此时就是与服务器进行的第一次交互,即发送了一个GET请求去获取到当前的这个HTML页面,接着服务器收到这个请求后就将淘宝的主页展示给我们,不过此时服务器是不知道我们的身份信息的。

2.第二次交互就是在我们进行登录的时候了,此时我们点击网页中的【登录】按钮输入自己的用户名和密码,你可以认为这是一个表单,那此时我们发起的就是一个POST请求,此时当服务器接收到这个请求后获取到用户输入的这些信息,进行一个校验和判断,若是用户输入的信息正确的话(已经注册过),此时服务器就会生成一个sessionId,将此id封装在HTTP响应报文中进行返回,并且在自己这里新建一个会话Session去保存用户的相关信息,后续服务器只需要通过这个sessionId去进行判断即可 。

3.当服务器返回登录成功的提示信息给到用户后,浏览器这边也会同时将服务器存放在响应报文中的SessionId / token存放在【Cookie】中,这也就是为什么我们的Cookie中为什么可以保存这么多东西了。

4.但是淘宝不仅仅只有一个主页,而是由多个页面所构成的,所以当用户在访问淘宝的其他页面时间,又会向服务器发送请求,此时是GET请求,服务器再收到请求后进行判断当前这个用户是否已经登录过,通过获取到当前用户所携带的sessionId进行判断,当前若是这个id == null的话表示当前用户还未登录,需要先去进行一个登录;如果已经登录过的话就会相关的网页显示给用户

淘宝用户与后端服务器实现原理_第2张图片

上述的这么一个交互过程,就是Cookie和Sessiond的这么一个交互逻辑,服务器通过给每一个登录进来的用户创建一个新的会话,并且为其分配一个身份的序号,将其作为key值,那么这个用户相对应的信息就作为value值,你可以把它看作是一个【哈希表】的结构,存放的都是一个个键值对 每一个会话都是一个键值对,会话中每个用户的相关信息又是一个键值对,是一个HttpSession对象。在后续的请求中的,服务器收到相关的Cookie中的身份序号,就会根据这个序号去查询上述的哈希表,来判断是哪一位用户。如果查到了,就知道当前用户是谁,无需再重新输入密码,增加了效率也方便了用户。

浅薄认识、猿猿们加油!

你可能感兴趣的:(服务器,前端,servlet)