package com.xmut.estore.servlet;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.xmut.estore.domain.ShoppingCart;
import com.xmut.estore.web.EStoreWebUtils;
import com.xmut.estore.service.UserService;
import com.xmut.estore.domain.Account;
import com.xmut.estore.domain.ShoppingCartItem;
import com.xmut.estore.domain.User;
import com.xmut.estore.service.AccountService;
import com.xmut.estore.web.EStoreWebUtils;
import com.google.gson.Gson;
import com.xmut.estore.domain.Computer;
import com.xmut.estore.service.ComputerService;
import com.xmut.estore.web.CriteriaComputer;
import com.xmut.estore.web.Page;
public class ComputerServlet extends HttpServlet {
private ComputerService computerService = new ComputerService();
private UserService userService = new UserService();
private AccountService accountService = new AccountService();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
//method反射机制调用方法
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String methodName = request.getParameter("method");
try {
// 利用反射获取方法
Method method = getClass().getDeclaredMethod(methodName, HttpServletRequest.class,HttpServletResponse.class);
// 执行相应的方法
method.setAccessible(true);
method.invoke(this, request,response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
protected void cash(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 简单验证: 验证表单域的值是否符合基本的规范: 是否为空, 是否可以转为 int 类型, 是否是一个 email. 不需要进行查询
//数据库或调用任何的业务方法.
String username = request.getParameter("username");
String accountId = request.getParameter("accountId");
StringBuffer errors = validateFormField(username, accountId);
//表单验证通过。
if(errors.toString().equals("")){
errors = validateUser(username, accountId);
//用户名和账号验证通过
if(errors.toString().equals("")){
errors = validateComputerStoreNumber(request);
//库存验证通过
if(errors.toString().equals("")){
errors = validateBalance(request, accountId);
}
}
}
if(!errors.toString().equals("")){
request.setAttribute("errors", errors);
request.getRequestDispatcher("/WEB-INF/pages/cash.jsp").forward(request, response);
return;
}
//验证通过执行具体的逻辑操作
computerService.cash(EStoreWebUtils.getShoppingCart(request), username, accountId);
response.sendRedirect(request.getContextPath() + "/success.jsp");
}
//验证余额是否充足
public StringBuffer validateBalance(HttpServletRequest request, String accountId){
StringBuffer errors = new StringBuffer("");
ShoppingCart cart = EStoreWebUtils.getShoppingCart(request);
Account account = accountService.getAccount(Integer.parseInt(accountId));
if(cart.getTotalMoney() > account.getBalance()){
errors.append("余额不足!");
}
return errors;
}
//验证库存是否充足
public StringBuffer validateComputerStoreNumber(HttpServletRequest request){
StringBuffer errors = new StringBuffer("");
ShoppingCart cart = EStoreWebUtils.getShoppingCart(request);
for(ShoppingCartItem sci: cart.getItems()){
int quantity = sci.getQuantity();
int storeNumber = computerService.getComputer(sci.getComputer().getId()).getStoreNumber();
if(quantity > storeNumber){
errors.append(sci.getComputer().getBrand()+sci.getComputer().getModel() + "库存不足<br>");
}
}
return errors;
}
//验证用户名和账号是否匹配
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;
}
//验证表单域是否符合基本的规则: 是否为空.
public StringBuffer validateFormField(String username, String accountId){
StringBuffer errors = new StringBuffer("");
if(username == null || username.trim().equals("")){
errors.append("用户名不能为空<br>");
}
if(accountId == null || accountId.trim().equals("")){
errors.append("账号不能为空");
}
return errors;
}
protected void updateItemQuantity(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//4. 在 updateItemQuantity 方法中, 获取 quanity, id, 再获取购物车对象, 调用 service 的方法做修改
String idStr = request.getParameter("id");
String quantityStr = request.getParameter("quantity");
ShoppingCart sc = EStoreWebUtils.getShoppingCart(request);
int id = -1;
int quantity = -1;
try {
id = Integer.parseInt(idStr);
quantity = Integer.parseInt(quantityStr);
} catch (Exception e) {}
if(id > 0 && quantity > 0)
computerService.updateItemQuantity(sc, id, quantity);
//5. 传回 JSON 数据: computerNumber:xx, totalMoney
Map<String, Object> result = new HashMap<String, Object>();
result.put("computerNumber", sc.getComputerNumber());
result.put("totalMoney", sc.getTotalMoney());
Gson gson = new Gson();
String jsonStr = gson.toJson(result);
response.setContentType("text/javascript");
response.getWriter().print(jsonStr);
}
protected void remove(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String idStr = request.getParameter("id");
int id = -1;
boolean flag = false;
try {
id = Integer.parseInt(idStr);
} catch (Exception e) {}
ShoppingCart sc = EStoreWebUtils.getShoppingCart(request);
computerService.removeItemFromShoppingCart(sc, id);
if(sc.isEmpty()){
request.getRequestDispatcher("/WEB-INF/pages/emptycart.jsp").forward(request, response);
return;
}
request.getRequestDispatcher("/WEB-INF/pages/cart.jsp").forward(request, response);
}
protected void clear(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ShoppingCart sCart = EStoreWebUtils.getShoppingCart(request);
computerService.clearShoppingCart(sCart);
request.getRequestDispatcher("/WEB-INF/pages/emptycart.jsp").forward(request, response);
}
//跳转页面
protected void forwardPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String page = request.getParameter("page");
request.getRequestDispatcher("/WEB-INF/pages/" + page + ".jsp").forward(request, response);
}
//添加到购物车
protected void addToCart(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//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, re
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【项目介绍】 基于JavaWeb的网上电子商城管理系统源码(MVC开发毕设项目).zip 基于JavaWeb的网上电子商城管理系统源码(MVC开发毕设项目).zip基于JavaWeb的网上电子商城管理系统源码(MVC开发毕设项目).zip基于JavaWeb的网上电子商城管理系统源码(MVC开发毕设项目).zip基于JavaWeb的网上电子商城管理系统源码(MVC开发毕设项目).zip基于JavaWeb的网上电子商城管理系统源码(MVC开发毕设项目).zip基于JavaWeb的网上电子商城管理系统源码(MVC开发毕设项目).zip基于JavaWeb的网上电子商城管理系统源码(MVC开发毕设项目).zip基于JavaWeb的网上电子商城管理系统源码(MVC开发毕设项目).zip基于JavaWeb的网上电子商城管理系统源码(MVC开发毕设项目).zip 【备注】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载食用体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈!
资源推荐
资源详情
资源评论















收起资源包目录







































































































共 74 条
- 1
资源评论


.whl
- 粉丝: 4175
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于云计算的煤炭企业信息化体系建设.docx
- 2022计算机一级考试练习题及答案.docx
- SANGFORSSLVPN常见问题排错指导HHW.ppt
- 单片机数字电压表设计LED显示含C源代码.doc
- 互联网企业并购的财务风险应对策略探究.docx
- 百得联汽配网站建设企划书样本.doc
- 2016年试验人员继续教育网络平台-超声波基本知识试卷.pdf
- 2022项目经理与项目管理团队建设要点.docx
- 计算机与软件学院上课讲义.ppt
- SQLSERVER数据库性能优化研究(论文)毕业论文.doc
- 9月电大计算机网考试题及答案.doc
- 计算机网络技术教程培训教材.ppt
- 《sql-server-2008数据库管理与开发》项目五--设计水暖热量收费系统演示教学.pptx
- 福州大学通信原理 第4章信道 PPT.ppt
- JavaFX实现水波效果(精品文档)-共13页.pdf
- 南宁市信息化大楼工程建设项目可行性研究报告.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
