网站建议:179001057@qq.com

教案:开发基于JSPServletJavaBean的网上交易系统-第4章 基于Servlet的会话跟踪(二)

技术2022-05-11  0

授课教师:牟勇

课时:100分钟

 

l  本章技能目标

n 掌握如何操作session中的对象

n 会使用session的相关属性和方法

l  本章重点

nHttpSession的理解

n使用HttpSession进行会话跟踪

l  本章难点

n使用HttpSession进行会话跟踪

l  本章工作任务

n升级E-Book电子书店实现购物车功能

u  将书籍添加到购物车之中

u  查看购物车商品

l   整章授课思路

n本章依次讲解四个问题:回顾E-Book电子书店已实现的功能,继续实现E-Book电子书店的购物车,显示购物车Map中数据和总结集合类和接口

n回顾E-Book电子书店已实现功能:回顾在第3章中已经实现的电子书店功能,显示所有书籍的列表,以及查看书籍的详细信息。

n继续实现E-Book电子书店的购物车:对比现实中的购物情况,为了方便商品的拿取,使用购物车和袋子装载商品,在程序中我们使用Map作为装载工具。

n总结集合类和接口:MapList在以前的学习中已经接触过,而Set没有,所以在讲解时,以Set为重点,但是主要说明使用Set遍历Map中的数据,对于其他的Set特性不进行介绍。

回顾:   [5分钟]

Web项目中为什么要使用会话?

在会话中如何存取数据?

如何创建和结束一个会话?

预习检查:   [5分钟]

实现一个购物系统的步骤?

如何对购物车中的每种商品的数量进行管理?

ListSetMap的异同?

课程知识点讲解:   

回顾E-Book电子书店已实现功能:[5分钟]

E-Book电子书店已实现功能

v  显示所有书籍的列表

v  查看书籍详细信息

 

继续实现E-Book电子书店的购物车[35分钟]

设计分析:本章要完成的内容:

购物车中对象的设计

使用Servlet实现添加书籍到购物车

使用JSP实现查看购物车的书籍列表

购物车:

|——书籍

                |——ID

                |——书名

                |——版本

                |——价格

|——书籍数量

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;

   }

   //其他的settergetter方法

}

购物车的实现

教员应说明整业务流程,特别提示使用HashMap来实现并不是唯一的途径,其实使用其它的集合类也是可以的。

回顾:Map

什么是MapMap的特点是什么?

       键—值对

Map的对象如何创建?

       new HashMap()

如何向Map中添加数据?

       put(“”,””)方法

如何从Map中取数据?

       get(“”);

实现添加书籍到购物车

v  获得session对象

v  session中取出BookBean对象

v  创建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);

}

教员说明以上重点代码(红色部分)

判断购物车中是否存在该书籍

v  存在:数量加一

v  不存在:添加条目到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));

    }

教员应讲解重点代码(红色部分)

 

显示购物车Map中的数据[25分钟]

查看购物车列表

session中取出Map

Map中取出CartItemBean数据

转向viewCart.jsp

<%@ page contentType= " text/html;charset=GBK" %>

 

Map cart = (Map) session.getAttribute("cart");

Set cartItems = cart.keySet();

Object[ ] isbn = cartItems.toArray();

BookBean book;

int i = 0;

 

while (i < isbn.length) {

      cartItem = (CartItemBean) cart.get((String)isbn[i]);

      book = cartItem.getBook();

      //在页面上显示book数据,如:book.getTitle();

      i++;

}

教员讲解重点代码(红色部分)

Set接口继承关系和常用方法

现场编程

添加商品到购物车的实现步骤是什么?

教员让一至二位学员进行现场编程

常见错误:

1404错误。路径错误。

2:页面无显示:可能是把名称打错了。

可不可以使用Mapsize()进行循环获得keyvalue

Map 不具有整数索引,不能利用size()进行循环

常见错误

指出下面红色部分有什么错误

<% 

       Map cart = (Map) session.getAttribute("cart");

       Set cartItems = cart.keySet();

       Object[ ] isbn = cartItems.toArray();

       int i = 0;

       while (i < isbn.length) {

           CartItemBean cartItem = (CartItemBean) cart.get(isbn[ i ]);

           BookBean  book = cartItem.getBook();

               }

%>

get()方法需要一个String,所以这里需要进行强制类型转换。

格式不正确(幻灯片22)

解决方案:<%=  new DecimalFormat( "0.00" ).format( price )       %>

总结集合类和接口[15分钟]

Colloection接口的特点

教员应详细讲解上面的继承树,说明ListSet的区别。

Map的特点

教员应详细讲解上面的继承树,强调Map是以键-值对的方式存储数据,数据之间没有顺序。

本章总结   [10分钟]

如何理解session在购物系统中的作用?

如何从session中取值和存值?

常用的集合类有哪些?它们之间有什么差别?

考核点

如何创建会话

如何结束一个会话

如何在会话中保存和取得数据

扩展部分:

 暂无

学员问题汇总:

 暂无

作业:

 习题192页至93页选择题

 习题293页第1,2,3,4

  习题 3 :预习第五章,试做课后的选择题

最新回复(0)