




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JavaEE基础教程 第15章Servlet的会话跟踪技术 15 1session与会话 15 2Servlet实现会话跟踪 15 3编程示例 网上书店 JavaEE基础教程 2 2020 3 27 15 1session与会话 返回 HTTP是一种无状态协议 也就是说 当一个客户访问服务器时 服务器不会保留客户端的任何信息 因此 Web服务器会将同一个客户的每次访问都当作一次新的访问 但有时需要服务器保留客户端的信息 以识别同一个客户的多次访问 那又如何实现呢 为了跟踪用户的操作状态 Servlet容器使用了一个称为HttpSession的对象实现这个功能 称为会话机制 会话 Session 是指在一段时间内 一个客户与Web服务器的一系列交互过程 在一次会话过程中 客户可能多次访问同一个页面 也可能访问多个不同的服务器资源 JavaEE基础教程 3 2020 3 27 Servlet容器通过HttpSession对象实现会话管理 主要有两种实现方式 一种是用Cookie 另一种是用URL重定向 当一个会话开始时 Servlet容器为每一个客户创建一个HttpSession对象 在HttpSession对象中可以存放客户状态信息 如购物车 在服务器中为了识别同一个Session对象 Servlet容器为每个子Session分配一个唯一标识 称为SessionID 在客户端向服务器发送请求时 Servlet容器将生成的SessionID保存在客户端的Cookie中 如果客户端关闭了Cookie 则可以通过URL重定向保存这个SessionID 15 1session与会话 JavaEE基础教程 4 2020 3 27 Session的生命周期是由Servlet容器来管理的 Servlet容器可通过HttpSession的setMaxInactiveInterval 方法设置Session的最大生存时间 也可以通过HttpSession的invalidate 方法结束一个会话 15 1session与会话 JavaEE基础教程 5 2020 3 27 15 1session与会话 JavaEE基础教程 6 2020 3 27 会话的创建会话的使用结束HttpSession对象生命周期 15 2Servlet实现会话跟踪 返回 JavaEE基础教程 7 2020 3 27 在Servlet中可以通过request对象获得HttpSession对象 具体方法如下 HttpSessionsession request getSession Booleanvalue HrrpSessionsession request getSession 会话的创建 JavaEE基础教程 8 2020 3 27 第一种方法中 布尔值为ture时 表示如果存在与当前请求关联的会话 就返回该会话 如果没有关联的会话 则创建一个新的会话 布尔值为false时 表示如果存在与当前请求关联的会话 就返回该会话 如果没有关联的会话返回null 并且不创建新的会话 第二种方法的作用与第一种方法的布尔值为ture时相同 会话的创建 JavaEE基础教程 9 2020 3 27 在上一节我们介绍了HttpSession接口的方法 其中有两个方法setAttribute 和getAttribute 这两个方法可以实现在整个会话过程中数据的正确传输 setAttribute Stringname Objectvalue 是把一个值对象value保存在HttpSession对象中 并为其指定引用名称为name 在会话过程中 需要使用数据时可以使用getAttribute Stringname 方法 将数据取出来 取出来的这个值是一个Object类型的对象 我们必须对其进行数据类型转换 而且要与存入时的类型保持一致 会话的使用 JavaEE基础教程 10 2020 3 27 可以通过以下三方法中的任何一种结束HttpSession对象生命周期 客户端关闭浏览器时 表示这一次会话结束 HttpSession对象生命周期结束 调用HttpSession的invalidate 方法 可结束HttpSession对象的生命周期 两次访问服务器的时间间隔大于session定义的最大非活动时间间隔时 也会结束session 结束HttpSession对象生命周期 JavaEE基础教程 11 2020 3 27 15 3 1顾客浏览图书15 3 2显示图书详细信息15 3 3将图书添加到购物车并显示购物车信息15 3 4添加订单信息并结账 15 3编程示例 网上书店 返回 JavaEE基础教程 12 2020 3 27 15 3 1顾客浏览图书 顾客进入网站首先看到的是图书的列表 显示的主要内容是图书的ISBN号 书名 作者 出版社 这和前面的listBook jsp的页面是一样的 只是ISBN号的链接显示图书的详细信息 顾客浏览图书信息页面程序清单 ch15 viewBook jsp JavaEE基础教程 13 2020 3 27 以上代码中用到了JSP标准动作userBean 在当前页面上创建了 TitleDaoImpl 类的一个实例名字为 dao 在页面中 单击某一本书的 isbn 号会将链接提交给名字为 toViewTitle 的一个Servlet 在这个链接的后面通过URL重定向功能将这本书的isbn号一同提交给 toViewTitle 15 3 1顾客浏览图书 JavaEE基础教程 14 2020 3 27 15 3 2显示图书详细信息 在上图中单击某一本书的isbn号可查看书的详细信息 这个功能是由一个Servlet和一个JSP页面一同完成的 对应于isbn号的链接的是一个Servlet 其对应的是ToViewTitle类 JavaEE基础教程 15 2020 3 27 以上代码中根据传递过来的isbn号 调用TitleDaoImpl 类的findByIsbn 方法在数据库中查找 返回一个Titles类的实例 并将此对象保存在了会话对象session中 然后转发到ch15 detail jsp页面显示图书详细信息 在detail jsp页面中通过JSP脚本从session中取出相关图书信息 并用JSP表达式将图书信息显示出来 如图下所示 15 3 2显示图书详细信息 JavaEE基础教程 16 2020 3 27 15 3 2显示图书详细信息 JavaEE基础教程 17 2020 3 27 15 3 3将图书添加到购物车并显示购物车信息 在图15 3中当单击 放入购物车 按钮时 提交给处理购物车的Servlet类AddTitlesToCart 程序清单 AddTitlesToCart java上面的代码中用到了会话技术和Java集合类 程序中request getSession false 获取已经存在的会话 如果不存在则将页面转到浏览图书页面 如果存在会话 则从session中取出购物车 也即是一个HashMap集合类对象cart 如果是第一次添加商品 则购物车为空 此时创建一个HashMap对象cart 并将其存入session中 保存购物车的命令为session setAttribute cart cart JavaEE基础教程 18 2020 3 27 在添加一种图书之前 要在购物车cart中查找这本书是否已经添加过 这实际上是在cart中查找是否存在与要存入的书的isbn号有相同键值的对象 CartItem cart get titles getIsbn 语句完成此功能 其中CartItem是对图书的进一步封装 程序清单 CartItem java 15 3 3将图书添加到购物车并显示购物车信息 JavaEE基础教程 19 2020 3 27 在Titles类中存放了图书的相关信息 但没有表示图书数量的属性 为此构建这个CartItem类 它不但可以存放图书的相关信息 同时还可以存放某种图书的数量 在购物车中 HashMap对象cart 的键必须是唯一的 图书的isbn号是不会有重复的 可作为这个Map的键 购物车中的值就是每种书对应的一个CartItem对象 将图书添加进了购物车后 转发到ch15 viewCart jsp页面显示购物车的信息 程序清单 ch15 viewCart jsp 15 3 3将图书添加到购物车并显示购物车信息 JavaEE基础教程 20 2020 3 27 代码可以分为三个阶段 第一个阶段从购物车cart中取出所有图书的isbn号 也即是购物车的键 第二阶段根据isbn号从cart中取出所有的CartItem对象 即图书商品信息 并计算商品的金额 第三阶段利用JSP表达式显示购物车的详细信息 同时将总金额保存在session中 以备将来结账时用 在代码中用到一个类DecimalFormat 这是一个用来格式化小数的类 这个类可以先定义模板 并根据模板样式输出小数 viewCart jsp运行结果如图所示 15 3 3将图书添加到购物车并显示购物车信息 JavaEE基础教程 21 2020 3 27 15 3 4添加订单信息并结账 在上图中单击 继续购物 链接可导航到viewBook jsp页面 单击 结账 按钮则提交给order html页面 这个页面可输入顾客的相关信息 如图所示 代码略去 JavaEE基础教程 22 2020 3 27 15 3 4添加订单信息并结账 order html页面中的form格式 即提交到了URL为doOrder的Servlet 这个Servlet对应类DoOrder 在此进行订单处理 程序清单 DoOrder java在DoOrder类中引用了OrderOperation类的实例 OrderOperation类是bookorder表的操作类 该类的saveOrder 方法可将订单数据存入数据库中bookorder表 bookorder表的结构
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年老年人健康管理考核试题及答案
- 2025年注册验船师资格考试(B级船舶检验专业基础安全)能力提高训练题及答案一
- 2025年公路水运检测师考试《道路工程》真题及答案(完整版)
- 2025年注册验船师资格考试(C级船舶检验法律法规)强化练习题及答案一
- 2025年(自考)护理管理学考试题库及答案(含各题型)
- 2025年高校教务招聘笔试模拟题及考点解析
- 2025年高级测试工程师面试题解析及测试技巧
- 2025年金融专业毕业生求职面试模拟题集及解析
- 2025年考试无忧技术类招聘笔试模拟题及答案速递
- 校长读书汇报课件
- IATF16949过程绩效指标一览表
- 水利部2002《水利建筑工程概算定额》
- 四年级数学下册12月份计算小超市
- 医院陪护中心运营方案
- 厂家如何做好经销商的利润管理
- 2023《中央企业合规管理办法》要点解读课件PPT
- 聚合物基础知识
- 售楼部钢结构玻璃幕墙拆除方案
- 集团公司校园招聘计划实施方案
- JJF 1002-2010国家计量检定规程编写规则
- GB/T 6663.1-2007直热式负温度系数热敏电阻器第1部分:总规范
评论
0/150
提交评论