- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
tomcat4改进sessionincookie
Session模块升级 向tomcat集群中部署应用而不需要终止向用户提供服务,tomcat中的会话需要在不同节点之间共享,因此,我设计并实现了一个Session In Cookie来解决Session的共享问题。 实现Session共享的好处是如果某一天计算机断电了,一个节点上的请求丢失了,但是别的节点还可以继续去处理保存的Session中的会话请求,不会像之前那样,如果断电,那么保存在节点上的Session存储中的信息会丢失。 设计思路是将Session存储在浏览器中,每个Session通过Server的response发送到浏览器,然后用户每次发送请求均需要将该Session发送回Server中,无论是哪一个节点处理用户请求,均可获取到当前用户的Session信息。该种方法广泛应用于ruby社区。虽然此种方法比较简单,而且实用,但是会存在安全问题,所以需要解决安全问题。 如果要实现这个模式,需要解决两个问题:1、处理接收到的请求信息,将Cookie反序列化为Session属性;2、处理返回的响应信息,将Session属性序列化为Cookie。由于要对请求和响应做处理,所以需要对这两个消息进行拦截,因此可以使用Servlet Filter,在过滤器中实现对Session对象的序列化与反序列化。 控制Response提交:当服务器处理完请求后,需要Filter向Response对象添加Cookie对象,因此需要先对Response对象进行包装。首先创建FilterResponseWrapper和WrappedServletOutputStream这两个类,在FilterResponseWrapper类内部,有一个WrappedServletOutputStream对象和一个PrintWriter对象用于将内容写入输出流中,这两步就可以控制Response提交的时间了,因此,在返回响应到客户端之前可以将SessionInCookie添加到Response对象中去,Response对象处理完毕后,可以通过调用responseWrapper.flushBuffer()方法完成响应的提交。 FilterResponseWrapper类是HttpServletResponseWrapper类的一个子类,这个类是response对象的最简单的实现,且可以修改response对象中的方法和属性。FilterResponseWrapper对象中的方法默认调用被包装的response对象方法,仅在部分函数中根据需要进行更改。重写了getOutputStream()方法确保数据写入WrappedServletOutputStream对象内部;同时重写了getWriter()方法和flushBuffer()方法确保在PrintWriter内部完成数据的刷新写入功能。 WrappedServletOutputStream类继承自ServletOutputStream,提供一个内部的FilterOutputStream对象用于控制刷新流数据。 当Filter接收到request时,Filter会将请求中的Cookie反序列化为CookieSession对象,即将request中的Cookie转化为存储属性键值的CookieSession对象。CookieSession对象只存储请求中的属性map而不是整个请求中的Cookie的所有信息,因为Session对象是由容器创建的,是不能被初始化的。为了获得一个全新的Session对象,可以将现存的有效地Session设置为无效,让容器创建一个全新的Session对象。 CookieSession类是一个用于存放属性map的容器类,一旦从容器中获取到了一个新的Session对象,便会将CookieSession对象中存储的属性map拷贝到新创新的HttpSession中。 反序列化操作是从String转换为SessionCookie对象的过程。为了确保属性值只包含有效字符,使用Base64(ASCII)方式存储属性值。 一旦控制器完成了对response对象的写入,Filter对象的第二部分将SessionCookie对象中的属性map序列化并添加到response对象中发给客户端。 Filter的实现需要在web.xml中配置或者使用注解来完成,监听所有请求。 Filter的主要方法实现: 最终结果展示:
您可能关注的文档
- 企业营销渠道对比性分析及实施方案0.doc
- matlabgui学生管理系统.doc
- 优秀实践报告范文关于广科大学对“诸格靓”购买需求调查报告11人力2.doc
- lnmp安装配置教程-2.doc
- matlab(gui)编程.doc
- matlab及应用课程论文要求.doc
- 企业债券基本知识.doc
- matlab,gui,飞机票预定.docx
- matlab的gui界面.docx
- mm17批量修改描述操作手册.doc
- 教师伦理学核心考点与题型示例.pdf
- 专业BCS颜色3色彩再现技巧与检测方法.pdf
- 三频手机收发器特性及维修手册.pdf
- 八年级初二数学上册人教版-期中复习:专题轴对称-名师教学PPT课件.pptx
- 人教部编版小学语文三年级下册-小虾-名师教学课件PPT(1)(1)(2)(1).ppt
- 人教部编版二年级语文下册-彩色的梦-(10)-名师教学PPT课件.pptx
- 人教部编版二年级语文下册-蜘蛛开店-(17)-名师教学PPT课件.pptx
- 人教部编版四年级语文下册-飞向蓝天的恐龙-第二课时-名师教学PPT课件.pptx
- 人教部编版二年级语文上册-夜宿山寺课件-名师教学PPT课件.pptx
- 人教部编版三年级语文上册-看图写话-名师教学PPT课件.ppt
文档评论(0)