`

Spring宠物商店学习笔记(二)

阅读更多
项目框架

1、Struts/Spring MVC

2、Spring

3、iBatis

 
Struts/Spring MVC视图层的切换

    <servlet-mapping>       <servlet-name>petstore</servlet-name>       <!--       <servlet-name>action</servlet-name>       -->       <url-pattern>*.do</url-pattern>
    </servlet-mapping>

 
数据库表设计理念之一

将经常查询更新的数据信息进行小表化处理。(一对一的关系)

如:orders  和  orderstatus;item  和  inventory

  
从面向对象的角度来分析项目

**************************************

第一部分 购物车部分

一、购物车

1、实现序列化(在网际间传输)

       public class Cart implements Serializable 
2、购物车应有属性

    /* Private Fields */    /**使用Map的容易查找、容易删除的优点*/    private final Map itemMap = Collections.synchronizedMap(new HashMap());     /**使用List的存储有序性的优点。此处用到Spring的分页技术*/
    private final PagedListHolder itemList = new PagedListHolder();

 
3、构造方法

    public Cart() {       //设置每页的最大显示购物项的数量。       this.itemList.setPageSize(4);
    }

 
4、供显示用的方法(使用PagedListHolder对象)

       public Iterator getAllCartItems()
       public PagedListHolder getCartItemList()

 
5、购物车的方法

       public int getNumberOfItems()       public boolean containsItemId(String itemId)       public void addItem(Item item, boolean isInStock)       public Item removeItemById(String itemId)       public void incrementQuantityByItemId(String itemId)       public void setQuantityByItemId(String itemId, int quantity)
       public double getSubTotal()

 
二、购物项部分

1、实现序列化(在网际间传输)

       public class CartItem implements Serializable

2、购物项应有属性及其对应的setter和getter方法

    private Item item;    private int quantity;
    private boolean inStock;

 
3、购物项的方法

public double getTotalPrice()
public void incrementQuantity()

 
第二部分 订单部分(持久化)

一、订单

二、订单项

  private int orderId;  private int lineNumber;  private int quantity;  private String itemId;  private double unitPrice;
  private Item item;

 
第三部分 产品部分(持久化)

一、商品目录信息(Category)

  private String categoryId;  private String name;
  private String description;

 
二、商品总体信息(Product)

  private String productId;  private String categoryId;  private String name;
  private String description;

 
三、商品明细信息(Item)

       涉及商品总体信息、供应商信息、商品具体信息、该商品的库存量等。

 
四、供应商信息(略)

 
第四部分 用户部分(持久化)

**************************************

  
项目用到基本的技术

1、未登陆的购物车实现技术;

2、订单产生前后的页面失效技术;

3、登陆后定向到前一个请求的action技术;

 
一、未登陆的购物车实现技术(实质就是Session范围内购物车在内存存储的技术)

<action path="/shop/addItemToCart"    type="org.springframework.samples.jpetstore.web.struts.AddItemToCartAction"  name="cartForm" scope="session" validate="false">    <forward name="success" path="/WEB-INF/jsp/struts/Cart.jsp" />
</action>

<form-bean name="cartForm"
    type="org.springframework.samples.jpetstore.web.struts.CartActionForm" />

 
1、用Session范围内的CartActionForm来获取workingItemId参数和该用户的购物车Cart;

2、在Action中处理业务;

3、页面显示购物车信息

 
二、订单生成技术

(包含:登陆后定向到前一个请求的action技术、订单产生前后的页面失效技术)

<action path="/shop/newOrder"    type="org.springframework.samples.jpetstore.web.struts.NewOrderAction"    name="workingOrderForm" scope="session" validate="true"    input="/WEB-INF/jsp/struts/NewOrderForm.jsp">    <forward name="confirm"       path="/WEB-INF/jsp/struts/ConfirmOrder.jsp" />    <forward name="shipping"       path="/WEB-INF/jsp/struts/ShippingForm.jsp" />    <forward name="success"       path="/WEB-INF/jsp/struts/ViewOrder.jsp" />
</action>

<form-bean name="workingOrderForm"
    type="org.springframework.samples.jpetstore.web.struts.OrderActionForm" />

 
1、未登陆访问newOrder.do将转到登陆页面,同时在request范围内保留请求url和参数;

2、登陆后跳转到上次访问的地址;

3、输入订单的支付、邮寄信息,生成订单确认;(部分页面用导航时必须过期) 
4、生成最终的订单。(后退网页过期)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics