- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Servlet和jsp教程5
十、会话状态
10.1 会话状态概述? ?HTTP协议的“无状态”(Stateless)特点带来了一系列的问题。特别是通过在线商店购物时,服务器不能顺利地记住以前的事务就成了严重的问题。它使得“购物篮”之类的应用很难实现:当我们把商品加入购物篮时,服务器如何才能知道篮子里原先有些什么?即使服务器保存了上下文信息,我们仍旧会在电子商务应用中遇到问题。例如,当用户从选择商品的页面(由普通的服务器提供)转到输入信用卡号和送达地址的页面(由支持SSL的安全服务器提供),服务器如何才能记住用户买了些什么?? 这个问题一般有三种解决方法:?Cookie。利用HTTP Cookie来存储有关购物会话的信息,后继的各个连接可以查看当前会话,然后从服务器的某些地方提取有关该会话的完整信息。这是一种优秀的,也是应用最广泛的方法。然而,即使Servlet提供了一个高级的、使用方便的Cookie接口,仍旧有一些繁琐的细节问题需要处理:?从其他Cookie中分别出保存会话标识的Cookie。?为Cookie设置合适的作废时间(例如,中断时间超过24小时的会话一般应重置)。?把会话标识和服务器端相应的信息关联起来。(实际保存的信息可能要远远超过保存到Cookie的信息,而且象信用卡号等敏感信息永远不应该用Cookie来保存。)?改写URL。你可以把一些标识会话的数据附加到每个URL的后面,服务器能够把该会话标识和它所保存的会话数据关联起来。这也是一个很好的方法,而且还有当浏览器不支持Cookie或用户已经禁用Cookie的情况下也有效这一优点。然而,大部分使用Cookie时所面临的问题同样存在,即服务器端的程序要进行许多简单但单调冗长的处理。另外,还必须十分小心地保证每个URL后面都附加了必要的信息(包括非直接的,如通过Location给出的重定向URL)。如果用户结束会话之后又通过书签返回,则会话信息会丢失。?隐藏表单域。HTML表单中可以包含下面这样的输入域:<INPUT TYPE=HIDDEN NAME=session VALUE=...>。这意味着,当表单被提交时,隐藏域的名字和数据也被包含到GET或POST数据里,我们可以利用这一机制来维持会话信息。然而,这种方法有一个很大的缺点,它要求所有页面都是动态生成的,因为整个问题的核心就是每个会话都要有一个唯一标识符。? Servlet为我们提供了一种与众不同的方案:HttpSession API。HttpSession API是一个基于Cookie或者URL改写机制的高级会话状态跟踪接口:如果浏览器支持Cookie,则使用Cookie;如果浏览器不支持Cookie或者Cookie功能被关闭,则自动使用URL改写方法。Servlet开发者无需关心细节问题,也无需直接处理Cookie或附加到URL后面的信息,API自动为Servlet开发者提供一个可以方便地存储会话信息的地方。? 10.2 会话状态跟踪API? ?在Servlet中使用会话信息是相当简单的,主要的操作包括:查看和当前请求关联的会话对象,必要的时候创建新的会话对象,查看与某个会话相关的信息,在会话对象中保存信息,以及会话完成或中止时释放会话对象。? 10.2.1 查看当前请求的会话对象? 查看当前请求的会话对象通过调用HttpServletRequest的getSession方法实现。如果getSession方法返回null,你可以创建一个新的会话对象。但更经常地,我们通过指定参数使得不存在现成的会话时自动创建一个会话对象,即指定getSession的参数为true。因此,访问当前请求会话对象的第一个步骤通常如下所示:???HttpSession session = request.getSession(true); 10.2.2 查看和会话有关的信息? HttpSession对象生存在服务器上,通过Cookie或者URL这类后台机制自动关联到请求的发送者。会话对象提供一个内建的数据结构,在这个结构中可以保存任意数量的键-值对。在2.1或者更早版本的Servlet API中,查看以前保存的数据使用的是getValue(key)方法。getValue返回Object,因此你必须把它转换成更加具体的数据类型。如果参数中指定的键不存在,getValue返回null。? API 2.2版推荐用getAttribute来代替getValue,这不仅是因为getAttribute和setAttribute的名字更加匹配(和getValue匹配的是putValue,而不是setValue),同时也因为setAttribute允许使用一个附属的HttpSessio
您可能关注的文档
- 绩效考评培训e.ppt
- 语言教学的流派+王国祥.ppt
- chapter12休闲运动行为坚持性.ppt
- DDS概要.doc
- 二次图纸读图说明.doc
- 水手英语课件驾驶台设备2课件.ppt
- Level 1 Chapter 9.ppt
- 保护代号.doc
- 管理学103.ppt
- 结构力学课件第8章.ppt
- 2025年鹤庆县纪委监委下属事业单位招聘笔试参考题库附答案.docx
- 2025年贺兰县民政局下属事业单位招聘笔试参考题库附答案.docx
- 2025年阿克陶县科技局下属事业单位招聘笔试参考题库附答案.docx
- 2025年谷城县科技局下属事业单位招聘笔试参考题库附答案.docx
- 2025年贵定县纪委监委下属事业单位招聘笔试模拟试题附答案.docx
- 2025年马龙县市场监管局下属事业单位招聘笔试模拟试题附答案.docx
- 2025年鄯善县水利局下属事业单位招聘笔试参考题库附答案.docx
- 2025江西人力诚聘派驻江西江铜华东铜箔有限公司劳务派遣人员考前自测高频考点模拟试题附答案.docx
- 2025年贡嘎县委宣传部下属事业单位招聘笔试模拟试题附答案.docx
- 2025年长治县纪委监委下属事业单位招聘笔试参考题库附答案.docx
最近下载
- 2025年妊娠期糖尿病诊治指南(2025).pptx
- 青岛版小学科学六年级上册实验报告单xin.docx VIP
- 2024年中国自行车行业调查报告-美骑网&京东.docx
- 第5讲《块头大不等于强》教案核心素养.pdf
- 年产5000吨高纯五氧化二钒和30000立方米钒电解液项目可行性研究报告模板-立项拿地.doc
- 《自动检测技术及应用》教案.pdf VIP
- 肝移植供体护理常规.pptx
- BJS202405食品中西地那非他达拉非等化合物的测定.docx VIP
- 人教版小学五年级数学上册脱式计算题.docx VIP
- DL_5190_3_2019_电力建设施工技术规范_第3部分_汽轮发电机组.docx
原创力文档


文档评论(0)