一.使用技术
- IDE:Eclipse
- 数据库:Mysql
- 数据源:C3P0
- JDBC 工具:DBUtils
- 前端框架:Bootstrap
- Ajax 解决方案:jQuery + JavaScript + JSON + Google-gson
二.数据库表
表account:

表mycomputers:

表tradeitem:

表trate:

表userinfo:

三.表现层设计与实现
3.1.1 首页

3.1.2 分页

3.1.3 筛选范围

3.1.4 购物车

3.1.5 结账

3.2 主要代码片段
验证用户名与密码
public StringBuffer validateUser(String username, String accountId){
boolean flag = false;
User user = userService.getUserByUserName(username);
if(user != null){
int accountId2 = user.getAccountId();
if(accountId.trim().equals("" + accountId2)){
flag = true;
}
}
StringBuffer errors2 = new StringBuffer("");
if(!flag){
errors2.append("用户名和账号不匹配");
}
return errors2;
}
添加到购物车
//1. 获取商品的 id
String idStr = request.getParameter("id");
int id = -1;
boolean flag = false;
try {
id = Integer.parseInt(idStr);
} catch (Exception e) {}
if(id > 0){
//2. 获取购物车对象
ShoppingCart sc = EStoreWebUtils.getShoppingCart(request);
//3. 调用 ComputerService 的 addToCart() 方法把商品放到购物车中
flag = computerService.addToCart(id, sc);
}
if(flag){
//4. 直接调用 getComputers() 方法.
getComputers(request, response);
return;
}
response.sendRedirect(request.getContextPath() + "/error-1.jsp");
}
添加到购物车(商品页详情添加)
//1. 获取商品的 id
String idStr = request.getParameter("id");
int id = -1;
boolean flag = false;
try {
id = Integer.parseInt(idStr);
} catch (Exception e) {}
if(id > 0){
//2. 获取购物车对象
ShoppingCart sc = EStoreWebUtils.getShoppingCart(request);
//3. 调用 ComputerService 的 addToCart() 方法把商品放到购物车中
flag = computerService.addToCart(id, sc);
}
if(flag){
//4. 直接调用 getComputer() 方法.
getComputer(request, response);
return;
}
response.sendRedirect(request.getContextPath() + "/error-1.jsp");
}
业务逻辑
String accountId) {
//1. 更新 mycomputers 数据表相关记录的 salesamount 和 storenumber
computerDAO.batchUpdateStoreNumberAndSalesAmount(shoppingCart.getItems());
int i = 10;
//2. 更新 account 数据表的 balance
accountDAO.updateBalance(Integer.parseInt(accountId), shoppingCart.getTotalMoney());
//3. 向 trade 数据表插入一条记录
Trade trade = new Trade();
trade.setTradeTime(new Date(new java.util.Date().getTime()));
trade.setUserId(userDAO.getUser(username).getUserId());
tradeDAO.insert(trade);
//4. 向 tradeitem 数据表插入 n 条记录
Collection<TradeItem> items = new ArrayList<>();
for(ShoppingCartItem sci: shoppingCart.getItems()){
TradeItem tradeItem = new TradeItem();
tradeItem.setComputerId(sci.getComputer().getId());
tradeItem.setQuantity(sci.getQuantity());
tradeItem.setTradeId(trade.getTradeId());
items.add(tradeItem);
}
tradeItemDAO.batchSave(items);
//5. 清空购物车
shoppingCart.clear();
}