session会话技术本质分析
来源:互联网 发布:淘宝怎样开通花呗支付 编辑:程序博客网 时间:2024/06/05 10:08
一.为什么出现session回话技术?(作用)
在分析这个问题开始之前,先分析下http的特点
1. "一次性":客户端与服务器建立连接,发送http request请求,服务器处理请求, 并返回http response.一个http request response cycle完成.
2."单向":服务器不能主动向客户端发送请求,只能对客户端发来的请求做处理;客户端能主动向服务器发送请求.
3. "无状态":http协议并不支持服务器保存客户端的信息 .也就是说你访问某个网页100次和访问1次对服务器来说是没有区别对待的,因为它记不住你.
然后分析下Cookie的作用是什么呢?
1.Cookie是服务器将数据保存到客户端,然后再由客户端将信息发送回来的技术.
2.它的目的是为了使http 协议变成有状态的连接,然后就可以共享一些数据.
3.单单重这方面来说:cookie是客户端和服务器端进行有状态连接的保证.(这个时候cookie更像是标识信息,本来http就是通过在cookie中放入 sessionId来实现有状态的)
接着分析为什么出现session呢?
由于服务器通过cookie将数据保存在客户端有太多的限制:
客户端空间有限.
用户可以禁用该cookie
对于这个问题我们可以将数据保存在服务器端, 然后将该空间内存的地址通过Cookie进行传送.这就相当于在服务器端共享数据(相对于一个指针),这也是session的本质,只不过他是将内存地址用Id来表示而已.
这时候就出现了session回话 跟踪技术.
二:什么是session回话技术呢?它的工作方式是什么呢?
什么是session?
session是服务器在服务器端开辟的一块内存空间, 用来保存用户的信息.
session是通过cookie来传递sessionID来保证每一个会话都是有状态的.
这里用一个形象的比喻来解释session的工作方式。(假设Web Server是一个商场的存包处,HTTP Request是一个顾客)
1.第一次来存包处,管理员把顾客的物品存放在某一个柜子里面(这个柜子就相当于Session),然后把一个号码牌交给这个顾客,作为取包凭证(这个号码牌就是Session ID)
2.顾客(HTTP Request)下一次来的时候,就要把号码牌(Session ID)交给存包处(Web Server)的管理员。
3.管理员根据号码牌(Session ID)找到相应的柜子(Session),根据顾客(HTTP Request)的请求,Web Server可以取出、更换、添加柜子(Session)中的品,WebServer也可以让顾客(HTTP Request)的号码牌和号码牌对应的柜子(Session)失效。
4.我们可以看到,Session ID实际上是在客户端和服务端之间通过HTTP Request和HTTP Response传来传去的。
三:如何实现session回话技术呢?
1:如何获得session对象呢?
/* 如果不存在则tomcat帮助我们创建, 如果已经存在,则返回与该请求相关联的session本质: 他是先获得cookie中的session id然后再根据这个ID获得制定的session对象.*/HttpSession session = request.getSession();
2:如果cookie被禁用了, 那么如何保持http协议的有状态性质呢?
/* * 如果可以通过cookie来传递session id ,那么则直接返回如果不可以, 则对该字符串进行session id追加.路径参数:这个方法虽然是在服务器端运行的, 但是仅仅是追加而已. 因此相对跟路径是web站点的路径.格式:http://localhost:8199/web_servlet/tt;jsessionid=9BC8DF646DD6DA855E4798DAA5C926F7注意这里并不是通过查询字符串进行追加的 而是直接通过另外一种方式*/String url = response.encodeURL("/web_servlet/tt");String content = "<a href='"+ url +"'>jingtao </a>";response.getWriter().print(content);
3:encodingUrl 和 encodeRedirectURL的区别
/** * encodeURL ()与 encodeRedirectURL()最大的区别在与: * 如果是""空字符串的处理不同 * */System.out.println(response.encodeURL("")); // http://localhost:8199/web_servlet/;jsessionid=ADDF8C9D89C1166D726E0691630B92AASystem.out.println(response.encodeRedirectURL(""));
- session会话技术本质分析
- session会话跟踪技术
- SESSION会话技术
- 【cookie/session】会话技术
- Session会话技术
- 会话技术session
- 会话技术之Session
- 会话技术(Cookie,Session)
- session会话技术
- Session会话技术
- 会话技术Cookie&Session
- 会话技术Cookie&Session
- 会话技术Cookie&Session
- 会话技术之SESSION
- 会话技术 Cookie&Session
- 会话技术cookie/session
- TF session 会话分析
- 会话技术 Cookie和Session
- Amdroid开发环境搭建
- ViewPager+Fragment布局中的Fragment数据更新
- 【分享】方言普通话语音识别语料库(词汇部分)-600人
- hadoop自学轨迹-深入了解HDFS机制
- iPhone桌面快捷电话
- session会话技术本质分析
- Code snippets for tips
- android recovery 系统代码分析 -- 选择进入
- QT5.2+vs2012+opencv2.4.7环境配置
- 插入排序
- [Phonegap+Sencha Touch] 移动开发13 禁止Sencha Touch容器控件越界滚动
- 模拟淘宝的产品SKU信息添加组合
- Apache架设代理服务器
- tnsping TNS-12535: TNS:operation timed out