博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bookstore案例分析
阅读量:5300 次
发布时间:2019-06-14

本文共 2946 字,大约阅读时间需要 9 分钟。

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. 付款之回调

 

转载于:https://www.cnblogs.com/ikei/p/7132261.html

你可能感兴趣的文章
TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议
查看>>
简单【用户输入验证】
查看>>
python tkinter GUI绘制,以及点击更新显示图片
查看>>
HDU4405--Aeroplane chess(概率dp)
查看>>
CS0103: The name ‘Scripts’ does not exist in the current context解决方法
查看>>
20130330java基础学习笔记-语句_for循环嵌套练习2
查看>>
Spring面试题
查看>>
窥视SP2010--第一章节--SP2010开发者路线图
查看>>
MVC,MVP 和 MVVM 的图示,区别
查看>>
C语言栈的实现
查看>>
代码为什么需要重构
查看>>
TC SRM 593 DIV1 250
查看>>
SRM 628 DIV2
查看>>
2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用
查看>>
Python-S9-Day127-Scrapy爬虫框架2
查看>>
SecureCRT的使用方法和技巧(详细使用教程)
查看>>
右侧导航栏(动态添加数据到list)
查看>>
81、iOS本地推送与远程推送详解
查看>>
虚拟DOM
查看>>
uva 11468 Substring
查看>>