项目6购物车-1会话对象.ppt_第1页
项目6购物车-1会话对象.ppt_第2页
项目6购物车-1会话对象.ppt_第3页
项目6购物车-1会话对象.ppt_第4页
项目6购物车-1会话对象.ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JAVA WEB应用开发,项目六 购物车(Session),工作任务,任务一 掌握会话对象 任务1-1 了解JSP会话对象 任务1-2 使用会话对象 任务1-3 集合容器 任务二 购物车业务类设计 任务三 添加图书到购物车设计 任务四 修改购物车图书数量,2,复习,DAO模型 显示页面(表单) 隐藏表单 传参数 action 实体类 数据访问层 接口 XXXDao 数据访问操作类XXXDaoImp 实现接口 一般有判断是否存在,增删改查,按某个条件查询,查看所有(List) 控制层 Servlet 获取表单参数 中文处理 创建实体对象并赋值 创建数据访问对象并调用相应方法 保存共享数据 setAttribute getAttribute 页面转向 response.sendRedirect(url); request.getRequestDispatcher(url).forward(request,response);,复习,JavaBean JavaBean 是公开的类 构造方法,都是公有的,而且必须有一个空参 它用一组get类型的公开函数提供外界来攫取内部的属性的值。 若要改变Bean内部属性时,则是利用一组set类型的公开函数来作设定。 如果属性是布尔类型,也可以用isXXX来获取值,set一样 写JavaBean时,需要加上包名 在JSP中使用JavaBean 创建对象 scope=“有效范围” 设置对象的属性值 获取对象的属性值 在Servlet中使用JavaBean 引入包、创建对象,调用get和set方法,复习,查询、显示与分页 JavaBean 实体Bean 数据访问Bean 分页业务Bean JSP 简单表单 有数据显示(使用数据访问Bean) Servlet 功能字符串 创建业务对象 路径设置 根据功能进行操作 页面转向,原来的方法:访问Servlet,访问数据访问业务方法,保存数据,页面转向(不好),获取页面数据并进行处理 调用业务方法 参数是对象,先创建对象,设置属性 参数是字符串,直接调用 如果是查询操作,构建不同查询条件的sql语句 保存数据 路径设置,项目目标,任务一:支撑知识 理解会话跟踪机制 掌握会话,会使用会话跟踪技术 在JSP中使用HttpSession会话对象 在Servlet中使用HttpSession会话对象 主要作用:保存和获取数据 会使用集合容器对象 任务二:会编写购物车业务类并测试 图书信息类JavaBean设计 购物车业务类设计 测试类 任务三:添加图书到购物车 显示页面 购物车控制类 购物车页面设计 任务四:修改购物车图书数量 购物车控制类,会话跟踪,什么是会话 客户端打开与服务器的连接发出请求到服务器响应客户端请求的全过程称之为会话 什么是会话跟踪 对同一个用户对服务器的连续的请求和接受响应的监视 为什么需要会话跟踪 浏览器与服务器之间的通信是通过无状态的HTTP协议进行通信的 不能保存客户的信息,即当客户端发出请求时,服务器建立连接,一旦请求响应结束连接就断开,下一次的请求需要重新连接,服务器无法判断是否是同一个用户,会话跟踪技术,会话跟踪技术 当用户在同一网站的多个页面之间转换时,根本无法知道是否是同一个客户,会话跟踪就可以解决这个问题。当一个客户在多个页面间切换时,服务器会保存该用户的信息。 将客户状态维持在服务器上,维持客户状态的技术; 用来跟踪用户的整个会话 可由以下四种方式来实现: 使用Cookie URL重写 隐藏表单域 使用会话对象 会话数据可以保存在客户端或者保存在服务器端。 Cookie和隐藏表单字段就是将会话数据保存在客户端。,URL重写 附加,URL(统一资源定位符) Web上特定页面的地址 URL重写的技术 在URL结尾添加一个附加数据以标识该会话,把会话ID通过URL的信息传递过去,以便在服务器端进行识别不同的用户 /catalog/index.html;jsessionid=1234 方法 JSP中, Servlet中,在将URL发送到输出流之前调用encodeURL out.println(“”); 要重写正在重定向的URL,调用response.encodeRedirectURL(“路径”)方法,Cookie-附加,Cookie “甜饼” Netscape 是一种由服务器发送给客户的片段信息,存储在客户端浏览器的内存或者硬盘上 客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。 查看 javascript:alert (document. cookie),Cookie-附加,主要方法,Cookie的使用-附加,创建 new Cookie(“名字”,”值”) 名字和值都不能包含空白字符以及下列字符: : ;? , “ / ( ) = 将Cookie发送给浏览器 response.addCookie(Cookie 对象名); 读取Cookie request.getCookies() 返回的是数组 不能请求某一个Cookie,只能读取所有的Cookie,然后遍历数组元素。,训练-使用Cookie-附加,创建一个Web应用-读取Cookie 创建一个Cookie 在Cookie发送到客户端前,先要创建一个Cookie 发送Cookie 调用response. addCookie方法发送一个HTTP Header 读取Cookie 调用request.getCookies() 读取到的是HTTP请求头中的内容对应的Cookie对象数组 循环遍历该数组的各个元素 调用getName方法检查各个Cookie的名字,直至找到目标Cookie 然后对该Cookie调用getValue方法取得与指定名字关联的值,2019/5/3,13,隐藏表单-附加,利用表单内的Hidden属性 Hidden元素并不会出现在客户端的浏览器中,但是它的值可以在提交表单时被发送到服务器; 如: 一般将重要的用户信息,如用户ID等之类的唯一数据,以隐藏字段的方式传给服务器 要保证数据的准确采集,必须定义一个独一无二的名称,隐藏表单-附加,表单被提交时,隐藏表单的名字和数据也被包含到Get或Post数据里,传给服务器 HttpServletResponse.getparameter(String s) 使用 可以用于提交表单的判断,用一个接收页面处理多个form表单的提交 ,服务器怎么判断你提交的是哪个呢? 通过隐藏域 通过提交按钮的name和value 的比较 隐藏域也常常用于论坛的外部登陆窗口,训练-使用隐藏表单-附加,创建一个Web应用-隐藏表单的使用 创建一个登陆页面html 用于递交用户名和密码 第二个页面什么都不做,第三个页面负责显示来自于第一个页面的用户名。3个页面,2次不同的请求,但是也可以实现会话跟踪。 创建一个HiddenServlet 在servlet中写一个页面 隐藏来自第一个页面的用户名的值 负责提交到第三个页面 创建一个InfoServlet 显示显示来自于第一个页面的用户名 3个页面,2次不同请求,但是也可以实现会话跟踪,2019/5/3,16,HttpSession会话跟踪,HttpSession会话跟踪技术 Session是服务器端使用的一种记录客户端状态的机制,比Cookie简单,增加服务器的存储压力 结合Cookie和URL重写技术 HttpSession对象自动选择,无需关心细节 当客户端运行使用Cookie,使用Cookie进行跟踪会话 当客户端禁用Cookie,使用URL重写,Cookie机制 通过检查客户身上的“通行证”来确定客户身份的话, Session机制 通过检查服务器上的“客户明细表”来确认客户身份。 相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。,会话跟踪示意图,同一个HttpSession对象,Session对象的使用,Session对象 javax.servlet.http.HttpSession类 代表服务器与浏览器的一次会话过程 是在客户端第一次请求服务器的时候创建的 每个来访者对应一个Session对象,所有该客户的状态信息都保存在这个 Session对象里 属性 key-value Session使用 得到session对象 HttpSession session=request.getSession(boolean); /true存在返回,否则创建 false,存在返回,否则不创建 HttpSession session=request.getSession(); /跟true相同 保存状态信息 session. setAttribute(String name, Object value) 读取状态信息 session. getAttribute(String name) /一般需要类型转换,HttpSession的常用方法,HttpSession的其它方法,课堂训练1- HttpSession接口方法测试,创建一个Web应用- HttpSession接口方法测试 在一个Servlet页面中设置用户名、用户密码属性 在另一个Servlet中取出用户名密码 注意sessionID值,Session小结,Session会话对象 在Web项目中使用session,是为了跟踪用户状态,并区分不同的用户 会话是Web容器创建的,而不是由程序员编码创建的,当客户端第一次访问的服务器的时候,服务器会为客户创建一个session HttpSession对象的使用 创建HttpSession对象 HttpSession session=request.getSession(true); 使用HttpSession对象 在创建HttpSession对象后,使用该对象进行数据的存储,以进行数据的传递: (1) void set Attribute(String name, Object value); /进行数据的存储 (2)Object getAttribute(String name); /进行数据的读取。 HttpSession对象的结束 在以下3种情况,可以结束session 关闭浏览器,关闭session 调用HttpSession的invalidate()方法,删除HttpSession对象和数据。 两次访问时间间隔大于session定义的非活动时间间隔,Java 集合对象,用于存储对象,实现快速检索 Hashtable Hashtable hashtable=new Hashtable(); HashMap HashMap map=new HashMap() ; 区别 HashMap可以代替HashTable 建议使用HashMap,不要使用HashTable 遍历元素 HashTable使用Enumeration HashMap使用Iterator,Hashtable,HashMap,课堂训练二-使用Hashtable和HashMap,测试Hashtable 测试HashMap,购物车的顺序图,2019年5月3日,29,购物车模块,购物车模块流程的控制 用户在浏览图书时 可以添加图书到购物车中 然后可以继续选购图书 也可以修改图书数量或删除某一种图书 也可以清空购物车 如果确定选购可以到结算中结账。,任务二 购物车业务类设计,图书信息类设计 Book 实体类JavaBean 成员变量 构造方法 get、set 购物车业务类设计 Cart 业务类JavaBean 成员变量-使用集合容器类HashTable或者HashMap 构造方法 添加、删除、修改、返回购物车内容、显示购物车内容等方法设计 判断有没有 测试类设计,添加购物车的设计步骤,任务三 添加图书到购物车设计,图书显示 book.jsp 商品列表的页面 向购物车Servlet递交 隐藏表单的运用 购物车控制Servlet设计 CartServlet .java 获取功能参数 如果是add 获取商品信息并进行中文处理 创建实体类Book,并设置值 获取当前购物车对象 如果为空,创建购物车对象,调用增加图书方法,使用Session保存新购物车对象 否,调用增加图书方法,使用Session保存新购物车对象 转向到显示页面 购物车显示页面设计 cartMain.jsp 获取保存在Session中的数据 遍历并显示,Session的使用, 保存和获取数据,保存数据,获取数据,查询结果页面 jsp 获取保存数据 遍历集合容器 遍历 表单递交给购物车业务控制类 表格显示 隐藏表单 图片处理,查询控制类BookSearchControl 获取功能参数 如果是简单查询 获取分类选项字符串 获取查询内容字符串 中文处理 构建SQL语句 查询所有的图书信息 查询该分类下所有图书信息 查询分类不是全部,并且查询图书内容不为空 创建图书数据访问层并调用方法 保存数据 页面转向,图书访问层BookDaoImp . /查询图书 public List getBookList(String sql),购物车业务控制类CartControl 获取功能参数 如果是添加是添加商品 获取隐藏表单参数 进行中文处理和数据类型转换 创建图书类实体并设置属性 获取session中购物车对象 为空,第一次购物 创建购物车对象 添加商品 保存数据 不为空 添加商品 保存数据 页面转向到购物车显示页面,购物车业务类Cart 成员变量 HashMap 成员方法 构造方法 添加商品 删除商品 修改商品 查询商品 返回购物车中内容,购物车内容显示jsp 获取session中数据 遍历并显示 修改(ID) 删除(ID),任务四 修改购物车数量,修改购物车显示页面设计 cartMain.jsp 增加表单向CartServlet递交实现修改数量 功能 传值 id 传值 表单 数量的文本框 修改购物车控制Servlet CartServlet .java 获取功能参数 如果是update 获取商品id 获取图书数量 创建实体类Book,并重新设置值 获取当前购物车对象 调用修改图书方法 保存购物车新对象到Session中 转向到显示页面,查询结果页面 jsp 获取保存数据 遍历集合容器 遍历 表单递交给购物车业务控制类 表格显示 隐藏表单 图片处理,查询控制类BookSearchControl 获取功能参数 如果是简单查询 获取分类选项字符串 获取查询内容字符串 中文处理 构建SQL语句 查询所有的图书信息 查询该分类下所有图书信息 查询分类不是全部,并且查询图书内容不为空 创建图书数据访问层并调用方法 保存数据 页面转向,图书访问层BookDaoImp . /查询图书 public List getBookList(String sql),购物车业务控制类CartControl 获取功能参数 如果是修改数量 获取表单参数 id和数量 进行中文处理和数据类型转换 创建图书类实体并设置属性 获取购物车对象 修改购物车中商品 保存数据 页面转向到购物车显示页面,购物车业务类Cart 成员变量 HashMap 成员方法 构造方法 添加商品 删除商品 修改商

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论