GitHub托管

    350万的开发者齐聚的国际知名代码托管平台,程序员的Facebook...

    Coding码市

    Coding.net 是一个面向开发者的云端开发平台...

    开源中国

    开源中国社区团队推出的基于Git的快速的、免费的、稳定的在线代码托管平台...

bookstore案例分析

bookstore案例使用原生servlet实现

功能分析

  1. 导原型(页面)

l  创建Web项目

l  copy原型中的src和WebRoot,覆盖Web项目中的src和WebRoot

 

  1. 列出模块和功能

前台

l  用户模块(中等偏上)

  • 注册功能
  • 激活功能
  • 登录功能
  • 退出功能

l  分类模块

  • 显示所有分类功能

l  图书模块

  • 查询所有图书
  • 按分类查询
  • 加载图书(按id查询)

l  购物车模块

  • 添加购物项
  • 我的购物车(显示购物车内所有购物项)
  • 清空购物车
  • 删除购物项

l  订单模块(难点)

  • 生成订单
  • 我的订单(按用户查询订单)
  • 加载订单(按id查询)
  • 确认收货
  • 付款之去银行
  • 付款之银行回调

 

后台

l  管理员模块(你们的)

  • 登录

l  分类管理

  • 查询所有分类
  • 添加分类
  • 修改分类
  • 删除分类

l  图书管理(难点)

  • 查看所有图书
  • 加载图书(按id查)
  • 编辑图书
  • 删除图书
  • 添加图书(上传)

l  订单管理(你们的)

  • 查询所有订单
  • 发货
  • 按状态查询订单

搭建环境

  1. 导jar包

l  itcast-tools-1.4.3.jar

  • commons-beanutils.jar

¨       commons-logging.jar

l  mysql

l  c3p0

l  commons-dbutils

l  commons-fileupload

  • commons-io

l  main.jar

  • activation.jar

 

  1. 创建数据库表

l  tbl_user

  • uid char(32):主键
  • username varchar(50):用户名
  • password varchar(50):密码
  • email varchar(50):邮箱
  • code char(64):激活码
  • state boolean:用户的状态(已激活和未激活)

l  tbl_category

  • cid char(32):主键
  • cname varchar(100):分类名称

l  tbl_book

  • bid char(32):主键
  • bname varchar(100):书名
  • price decimal(6,2):单价
  • author varchar(50):作者
  • image varchar(100):图片
  • cid char(32)相对tbl_category表的外键

l  tbl_order

  • oid char(32):主键
  • ordertime timestap:下单时间
  • total decimal(7,2):总计
  • state int:订单的状态,分为四种:1未付款、2已付款但未发货、3已发货但未收货、4已收货交易成功
  • uid char(32):相对tbl_user表的外键,表示下单人!
  • address varchar(200):收货地址

l  tbl_orderitem

  • iid char(32):主键
  • count int:数量
  • subtotal decimal(7,2):小计
  • oid char(32):相对tbl_order表的外键,所属订单
  • bid char(32):相对tbl_book表的外键,所购买图书
  1. 创建包

l  cn.itcast.bookstore.模块.分层

  • cn.itcast.bookstore.user

¨       domain:User

¨       dao:UserDao

¨       service:UserService

¨       web.servlet:UserServlet

  • cn.itcast.bookstore.category

¨       domain:Category

¨       dao:CategoryDao

¨       service:CategoryService

¨       web.servlet:CategoryServlet

    …

 

  1. 页面设计

 

 

 

 

 

用户的功能设计

 

  1. 包和类

l  cn.itcast.bookstore.user

  • domain:User
  • dao:UserDao
  • service:UserService
  • web.servlet:UserServlet

 

  1. 注册功能

 

 

 

  1. 激活功能

  

 

 

  1. 登录功能

 

 

 

  1. 退出功能

l  top.jsp(退出) à UserServlet#quit()(销毁session) à msg.jsp(显示您已下线)

 

分类模块功能设计

  1. 包和类

l  cn.itcast.bookstore.category

  • domain:Category
  • dao:CategoryDao
  • service:CategoryServlet
  • web.servlet:CategoryServlet

 

  1. 查询所有

l  main.jsp不再去直接请求left.jsp,而是请求Servlet

l  Servlet应用在request中保存List<Category>

l  你们应用给我传递一个List<Category>,我这里循环遍历

 

 

图书模块

 

  1. 包和类

l  cn.itcast.bookstore.book

  • domain:Book
  • dao:BookDao
  • service:BookService
  • web.servlet:BookServlet

 

  1. 查询所有

 

 

  1. 按分类查询

 

 

  1. 查询详细

 

购物车模块

l  购物车的实现

  • session实现:把车放到session中;
  • cookie实现:把车放到cookie中;
  • 数据库实现:把车放到数据库中。

l  我们的购物车:

  • 必须先登录才能有车!!!
  • 车保存到session中!!!

 

  1. 购物车的结构

l  车中包含0~N个购物条目(购物项);

购物条目由图书和数量组成

 

  1. 添加购物项

l  /jsps/book/desc.jsp(购买按钮)

l  CartServlet#add()

  • 获取车:从session中获取车

¨       在登录成功时,向session中保存一个Cart对象(空的);

¨       在获取车时,一定能获取到(除非你没有登录)

  • 获取购物条目

¨       获取bid,通过BookService查询出Book对象;

¨       获取count;

¨       使用Book和count创建CartItem对象

  • 调用车的方法把条目添加进去:Cart对象的add
  • 转发(重定向)到/jsps/cart/list.jsp,显示车中所有内容

 

  1. 删除指定购物项

l  /jsps/cart/list.jsp(每个条目后都有一个“删除”链接),传bid

l  CartServlet#delete()方法

  • 获取参数bid
  • 获取车
  • 调用车的删除方法,传递bid
  • 重定向到/jsps/cart/list.jsp

 

  1. 清空车

l  /jsps/cart/list.jsp(清空购物车链接)

l  CartServlet#clear()

  • 获取车
  • 调用清空方法
  • 重定向到/jsps/cart/list.jsp

 

  1. 我的购物车

 

订单模块

  1. 包和类

l  cn.itcast.bookstore.order

  • domain:

¨       Order

¨       OrderItem

  • dao:OrderDao
  • service:OrderService
  • web.servlet:OrderServlet

 

  1. 生成订单

 

 

  1. 我的订单

 

 

  1. 加载订单

 

 

  1. 确认收货

 

 

 

  1. 付款之去银行

 

 

  1. 付款之回调

 

posted @ 2017-07-07 15:03  Keis  阅读(321)  评论(0编辑  收藏  举报