--查看图书信息(包括查看图书详细信息,使用条件(例价格区间)查看图书信息,对图书进行翻页)
--把图书加入购物车
--查看购物车
--修改购物车(包括清空购物车,修改购物车单本图书数量,删除单本图书)
--结账(填写用户名和账号信息)
--查看交易记录
总体架构:
MVC设计模式:
--model:POJO
--controller:Servlet
--view:JSP+EL+JSTL
技术选型:
数据库:Mysql
数据源:C3P0
JDBC工具:DBUtils
事务解决方案:Filter+ThreadLocal
Ajax解决方案:jQuery+JavaScript+JSON+google-gson
层之间解耦方案:工厂设计模式
数据表设计:
在Mysql数据库中建好这些数据表。
配置好环境
实体类设计:Account(账户表,用于支付),User(客户表,存储客户基本信息),Trade(交易项),TradeItem(交易记录),Book,ShoppingCartItem,ShoppingCart
DAO层设计:(这里先每个方法手动的获取Connection,在后面操作事务时,再改成获取统一的Connection)
-Dao接口,定义Dao的基本操作,使用BaseDao实现Dao接口。
-BaseDao:使用DBUtils工具类提供Dao接口的具体实现。
BookDao接口:用于定义操作Book实体类的基本方法。
-BookDaoImpl:使用BaseDao中的方法实现BookDao。
Dao接口代码:
1packagecom.hnust.bookstore.dao;23importcom.hnust.bookstore.domain.Account;45publicinterfaceAccountDao{67/**8*根据传入的accountId获取对应的Account对象。9*@paramaccountId10*@return11*/12publicabstractAccountget(IntegeraccountId);1314/**15*根据传入的accountId、amount更新指定账户的余额:扣除amount指定的钱数。16*@paramaccountId17*@paramamount18*/19publicabstractvoidupdateBalance(IntegeraccountId,floatamount);20}TradeDao接口代码:
1packagecom.hnust.bookstore.dao;23importjava.util.Set;45importcom.hnust.bookstore.domain.Trade;67publicinterfaceTradeDao{89/**10*向数据表中插入Trade对象11*@paramtrade12*/13publicabstractvoidinsert(Tradetrade);1415/**16*根据userId获取和其关联的Trade的集合17*@paramuserId18*@return19*/20publicabstractSet
1packagecom.hnust.bookstore.dao;23importjava.util.Collection;4importjava.util.Set;56importcom.hnust.bookstore.domain.TradeItem;78publicinterfaceTradeItemDao{910/**11*批量保存TradeItem对象12*@paramitems13*/14publicabstractvoidbatchSave(Collection
1packagecom.hnust.bookstore.dao;23importcom.hnust.bookstore.domain.User;45publicinterfaceUserDao{67/**8*根据用户名获取User对象。9*@paramuserName10*@return11*/12publicabstractUsergetUser(StringuserName);13}封装翻页信息的Page类:
-pageNo(当前页的页码)
-list(本业需要显示的list(选购的书籍的集合))
-pageSize(每页显示多少条记录)
-totalItemNumber(总的记录数,用来计算总的页数)
-Page(int):构造器,初始化当前页的页码pageNo,在Servlet里面对其进行赋值。
-getPageNo():返回当前页的页码,注意:需通过getTatalPageNumber()进行校验,因为有可能传入的页码不一定是合法的。
-getList():
-setList():设置当前页需要显示的List对象,是在DAO对其进行赋值。
-getPageSize():返回当前页显示多少条记录
-getTotalPageNumber():获取总页码数,需计算得出
-setTotalItemNumber():设置总的记录数,是在DAO对其进行赋值。