已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十讲 基于Servlet的会话跟踪2,2,本讲任务,升级 E-Book电子书店实现购物车功能 将书籍添加到购物车之中 查看购物车,3,学会使用Map集合实现购物车 掌握如何操纵session中对象 会使用session的相关属性和方法,本讲目标,4,购物车的设计分析,设计分析 购物车中对象的设计 使用Servlet实现添加书籍到购物车 使用JSP实现查看购物车的书籍列表,选择商品 放入购物车,继续购物,结账,满载而归,本章要完成内容,购物车如何设计呢?,5,购物车中对象的设计,对象的设计,书籍本身信息,书籍购买数量,书籍名称,书籍编号,书籍价格,书籍版本号,BookBean,购买书籍的数量,public class CartItemBean implements Serializable private BookBean book; /当前书籍 private int quantity; /购物车中的数量 public CartItemBean( BookBean bookToAdd, int number ) book = bookToAdd; quantity = number; public void setQuantity( int number ) quantity = number; public int getQuantity() return quantity; /其他的setter、getter方法 ,对象属性,构造方法,属性的getter、setter方法,演示示例1:购物车商品信息类CartItemBean.java,6,购物车的实现,使用购物车存放商品,装入购物车,方便存取商品,7,购物车的实现,使用Map实现购物车,BookBean,HashMap,session,key,value,存放到,存放到,书籍数量,CartItemBean,isbn,cart,8,集合接口和类(补充),集合接口、类关系图,Collection接口,List接口,Set接口,ArrayList类,LinkedList类,HashSet类,TreeSet类,继承,继承,实现,实现,List及实现类是可变 大小的列表 ,适用于 按数值索引访问元素,Set集合中不允许 有重复的数据,9,Set介绍(补充),Set接口继承关系和常用方法,Collection接口,Set接口,HashSet类,TreeSet类,int size( ),boolean isEmpty(),Object toArray(),boolean add(Object o),继承,实现,实现,返回Set集合元素数,返回一个包含 Set 中所有元素的数组,向Set中添加元素,判断Set中是否包含元素,不包含返回true,10,Map接口(补充),Map接口实现类关系图,Map接口,HashMap类,Properties类,Map中以键-值对 形式存储数据,实现,11,使用Servlet实现添加,定义一个Servlet实现购买的书籍添加到购物车中 Servlet类:AddBookToCart.java,12,实现添加书籍到购物车,添加书籍到购物车 获得session对象 从session中取出BookBean对象 创建HashMap对象,并添加一个条目到Map中, public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException HttpSession session = request.getSession(false); BookBean book = (BookBean)session.getAttribute(“bookToAdd“); Map cart = new HashMap(); cart.put(book.getISBN(), new CartItemBean(book, 1); session.setAttribute(“cart“, cart); ,获得session对象,从session中取出书籍信息,把数据存入到session中,13,实现添加书籍到购物车,判断购物车中是否存在该书籍 存在:数量加一 不存在:添加条目到Map中,HttpSession session = request.getSession(false); Map cart = (Map) session.getAttribute(“cart“); if (cart = null) cart = new HashMap(); session.setAttribute(“cart“, cart); BookBean book = (BookBean) session.getAttribute(“bookToAdd“); CartItemBean cartItem = (CartItemBean) cart.get(book.getISBN(); if (cartItem != null) cartItem.setQuantity(cartItem.getQuantity() + 1); else cart.put(book.getISBN(), new CartItemBean(book, 1); ,如果session中存在该书籍,数量加1,如果session中不存在该书籍,添加条目数量为1,判断session中是否存在cart对象,演示示例2:向购物车中添加商品AddBookToCart.java,14,查看购物车中书籍列表,购物车的设计-书籍清单 书籍名称 购买数量 书籍价格 小计 总计,15,查看购物车的书籍列表,转向viewCart.jsp 从session中取出Map 从Map中取出CartItemBean数据, Map cart = (Map) session.getAttribute(“cart“); Set cartItems = cart.keySet(); Object isbn = cartItems.toArray(); BookBean book; CartItemBean cartItem; int i = 0; while (i isbn.length) cartItem = (CartItemBean) cart.get(String)isbni); book = cartItem.getBook(); /在页面上显示book数据,如:book.getTitle(); i+; ,从session中取出Map,得到Map中key值的Set 集合,再转换成数组, 以便使用循环进行遍历,通过key值取value,演示示例3:显示购物车内商品viewCart.jsp,16,完整代码,HttpSession session = request.getSession(false); RequestDispatcher dispatcher; / 如果session不存在,转向 books.jsp if (session = null) dispatcher = request.getRequestDispatcher(“books.jsp“); dispatcher.forward(request, response); / 取出购物车和添加的书籍 Map cart = (Map) session.getAttribute(“cart“); BookBean book = (BookBean) session.getAttribute(“bookToAdd“);,/ 如果购物车不存在,创建购物车 if (cart = null) cart = new HashMap(); / 将购物车存入session之中 session.setAttribute(“cart“, cart); / 判断书籍是否在购物车中 CartItemBean cartItem = (CartItemBean) cart.get(book.getISBN(); / 如果书籍在购物车中,更新其数量. / 否则,创建一个条目到Map中. if (cartItem != null) cartItem.setQuantity(cartItem.getQuantity() + 1); else cart.put(book.getISBN(), new CartItemBean(book, 1); / 转向viewCart.jsp显示购物车 dispatcher = request.getRequestDispatcher(“viewCart.jsp“); dispatcher.forward(request, response);,17,常见错误,错误大致出现在哪里?,404错误没有找到页面,if (cartItem != null) cartItem.setQuantity( cartItem.getQuantity() + 1); else cart.put(book.getISBN(), new CartItemBean(book, 1); dispatcher = request.getRequestDispatcher(“/viewCart.jsp“); dispatcher.forward(request, response);,路径错误,应该是“ /j20/viewCart.jsp “,18,常见错误,查看购物车内书籍,已经购买商品,为什么没有显示?问题可能出现在哪里?,19,常见错误,添加商品到购物车-Servlet AddBookToCart.java 显示购物车内商品-viewCart.jsp,if (cart = null) cart = new HashMap(); session.setAttribute(“cart“, cart); ,保存数据到session中,从session中取出数据,名称要一致,20,显示购物车数据,如何显示购物车内Map中所有数据 可不可以使用Map的size()进行循环获得key、value值 Map 不具有整数索引,不能利用size()进行循环 使用Set接口 Set接口继承了Collection接口,但是它不允许集合中存在重复项 Set接口在Map中的使用,Map cart = (Map) session.getAttribute(“cart“); for(int i=0;icart.size();i+) CartItemBean cartItem =(CartItemBean)cart.get(i); ,Map没有整数索引,参数应该是key值,Map cart = (Map) session.getAttribute(“cart“); Set cartItems = cart.keySet(); Object isbn = cartItems.toArray(); int i = 0; while (i isbn.length) cartItem = (CartItemBean) cart.get(String)isbni); ,使用keySet()得到key的Set集合,使用Set的toArray()转换成数组,对数组遍历 取出所有值,代码错误,21
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化学中职理论考试题及答案
- 2025年广元中专英语试卷及答案
- 中考甘肃历史试卷及答案
- 肺炎护理常规试卷及答案
- 护理案例题目及答案45
- 腋臭术后护理题目及答案
- 2025年担保公司考试试题及答案
- 2025年成都中考所有试卷及答案
- 2025年铁路机车车辆制动钳工(技师)职业技能鉴定考试题库(含答案)
- 数据安全服务项目售后服务方案
- 梁板墙柱混凝土同时浇筑专项方案(专家论证)
- 乌有先生历险记原文+注释+译文教师版
- 文明礼仪伴我行班会省公开课一等奖新名师比赛一等奖课件
- DL∕T 1974-2019 水电厂直流系统技术条件
- GB/T 43952-2024医用供应装置
- 海南省文昌市2023-2024学年八年级上学期期中检测语文试题
- 2024农业种植项目合作协议书范本
- 三度房室传导阻滞护理查房-课件
- 中医培训课件:《放血疗法》
- 机电运输安全基本知识
- 金属冶炼安全知识培训资料
评论
0/150
提交评论