Java Web 会话保留技术
来源:互联网 发布:文言虚词乎的用法 编辑:程序博客网 时间:2024/05/17 05:19
正如我们所知,客户端和浏览器之间的通信是基于HTTP协议的,而HTTP协议是一个无连接、无状态的协议,这个无连接、无状态既是HTTP的优点也是缺点,详见http://blog.csdn.net/fengyinchao/article/details/50774738,那现在对于服务器来说就需要知道这个请求是这个客户端的第一次请求还是第n次,比如拿一个登录的例子来说,对一个客户端发起的请求,我们需要知道这个请求的对象是否处于登录状态,若处于登录状态,那登录的用户又是谁?这些都是我们所关心的,而我们每次都把用户的信息通过POST的方式传入到服务器,让服务其根据客户端提供的信息再去查找该用户对象,显然易见,这种方式是不合理的(每次传入的信息多,每次传给服务器后服务器都要去链接数据库查询会导致等待时间加长,用户体感变差),所以我们就希望客户端和服务器的链接是有状态的,而这显然不符合HTTP协议。就在此时,聪明的人就想出会话保留技术——cookie 和 session。
cookie是将一些必要的信息存于http协议中头文件中,而cookie是明文传输的,所以极易造成信息泄露的风险,而且cookie是存于客户端的,每次发送请求时都会将cookie中的信息连带发送给服务器。这样看来,仅仅是使用cookie根本达不到我们想要的减少http协议中的信息量和减少服务器的查询次数的目的。若要达到这个目的,则还需要借助session的技术。与cookie不同,session是存在于服务器中,那对于服务器来说,就可以存储想要的信息不会受限于客户端的各个方面的限制,例如运行环境。在Java Web相关的服务器中就可以存储用户这个对象。说到这里,我们就可以来探讨一下JavaWeb中的会话保留技术了。
当一个客户端第一次发起一个请求(这边有个问题,HTTP协议是无状态的,他怎么知道这是客户端发出的请求),服务器在收到请求后,会在服务器中会为这个客户端新建一个session用于存储和这个客户端相关的一些信息,在向客户端发送回应的时候,会给客户端一个cookie——Jsession:一串字符;这串字符其实是指这个session的id,那么在这个客户端再次发送器请的时候,服务器就可以根据Jsession来寻找这个session的对象,从而达到“有状态”这个诉求。现在再反过来看,就不难理解服务器端是如何分辨是否是第一次请求,因为第一次请求中是没有Jsession这个cookie的,且我猜测,在服务器端是通过一个Map的形式来维持这个sessionId和session对象间的关系,从而达到快速查找的目的。而对于我们原始的目的减少发送的信息量和提高查询的速度是完美达到了,切也避免了cookie明文传送带来的不安全的隐患,毕竟就算有人获得这个cookie也搞不明白这个信息的含义。
最后对于生命周期这个我也没有特别的欲望想去说明,详见SESSION的生命周期等。
- Java Web 会话保留技术
- Java Web之会话技术
- java web中的会话技术
- java web之会话技术cookie+session
- WEB会话跟踪技术
- java web Servlet 学习笔记 -3 会话管理技术
- java会话跟踪技术
- java四大会话技术
- web开发会话跟踪技术
- web开发会话跟踪技术
- java-web总结--jsp--会话
- Java web会话简单应用
- WEB中的会话技术:Cookie及Session
- Web会话技术Cookie和Session
- java web会话跟踪技术(深入理解HTTP Session与Cookie)
- java web会话跟踪技术(深入理解HTTP Session与Cookie)
- Java精选笔记_会话技术
- java基础-会话技术Cookie&Session
- java反射机制
- C#笔记(8)使应用具有管理员权限
- Lintcode二进制求和
- Python爬虫小记(一)
- 高精度非负数模板
- Java Web 会话保留技术
- Cordova 学习笔记一
- Springboot系列:Springboot与Thymeleaf模板引擎整合基础教程(附源码)
- c#从控制台输入问题
- request response session
- Ajax的ajax()和post()的使用
- 最大子串和问题
- LeetCode | 80. Remove Duplicates from Sorted Array II
- C++ STL-Vector动态数组