📄 shoppingcartactions.java
字号:
package com.cavaness.beer4all.order;import java.io.IOException;import java.text.Format;import java.text.NumberFormat;import java.util.*;import javax.servlet.ServletException;import javax.servlet.http.*;import org.apache.struts.action.*;import org.apache.struts.actions.DispatchAction;import com.cavaness.beer4all.service.Beer4AllService;import com.cavaness.beer4all.common.view.UserView;import com.cavaness.beer4all.catalog.view.ItemView;import com.cavaness.beer4all.framework.UserContainer;import com.cavaness.beer4all.util.Constants;import com.cavaness.beer4all.framework.ShoppingCartItem;import com.cavaness.beer4all.framework.ShoppingCart;import com.cavaness.beer4all.framework.Beer4AllBaseDispatchAction;//这个类执行所有购物车的功能,它通过Beer4AllBaseDispatchAction基类继承DispatchActionpublic class ShoppingCartActions extends Beer4AllBaseDispatchAction { //创建一个用户信息库 public ActionForward view(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //创建一个用户信息 UserContainer userContainer = getUserContainer(request); //返回一个成功状态的映射 return mapping.findForward(Constants.SUCCESS_KEY); } //这个方法依据请求信息更新购物车中的商品信息 public ActionForward update(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //更新商品列表 updateItems(request); //更新商品数量 updateQuantities(request); //返回一个成功状态的映射 return mapping.findForward(Constants.SUCCESS_KEY); } //这个方法向购物车中添加一个商品类别和数量 public ActionForward addItem(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //获取用户信息库 UserContainer userContainer = getUserContainer(request); //获取商品ID String itemId = request.getParameter( Constants.ID_KEY ); //获取商品数量 String qtyParameter = request.getParameter( Constants.QTY_KEY ); //获取商品包装单位 String uomParameter = request.getParameter( Constants.UOM_KEY ); //默认商品数量为1 int quantity = 1; if(qtyParameter != null) { //获取用户的Locale信息 Locale userLocale = userContainer.getLocale(); //将输入格式定为用户所支持的格式 Format nbrFormat = NumberFormat.getNumberInstance(userLocale); try { //获取用户发送的商品数量信息 Object obj = nbrFormat.parseObject(qtyParameter); quantity = ((Number)obj).intValue(); } catch(Exception ex) { ex.printStackTrace(); } } //得到一个指定服务 Beer4AllService serviceImpl = this.getBeer4AllService(); //依据商品ID获取商品信息 ItemView ItemView = serviceImpl.getItemById( itemId ); //添加一个一个商品类别和数量的信息到购物车 userContainer.getCart().addItem(new ShoppingCartItem(ItemView, quantity)); //返回一个成功状态的映射 return mapping.findForward(Constants.SUCCESS_KEY); } //更新购物车中的商品列表信息,将不需要的商品删除 private void updateItems(HttpServletRequest request) { //获取需要被删除的商品ID String[] deleteIds = request.getParameterValues("deleteCartItem"); //建立需要被删除的商品ID列表 if(deleteIds != null && deleteIds.length > 0) { //获取需要被删除的商品类数量 int size = deleteIds.length; //创建一个商品ID列表 List itemIds = new ArrayList(); for(int i = 0;i < size;i++) { itemIds.add(deleteIds[i]); } //获取用户信息库 UserContainer userContainer = getUserContainer(request); //从用户的购物车中删除需要被删除的商品 userContainer.getCart().removeItems(itemIds); } } //更新购物车中的商品的购买数量 private void updateQuantities(HttpServletRequest request) { //将客户请求中的参数名转化为一个枚举 Enumeration enum = request.getParameterNames(); //遍历枚举中的每一个参数名 while(enum.hasMoreElements()) { String paramName = (String)enum.nextElement(); //当参数名由"qty_"为开头时 if(paramName.startsWith("qty_")) { //截取该参数中第4到最后一位的字符串,即需要更新的商品ID String id = paramName.substring(4, paramName.length()); //获取该参数 String qtyStr = request.getParameter(paramName); //如果该商品ID和数量都存在 if(id != null && qtyStr != null) { //获取用户的购物车 ShoppingCart cart = getUserContainer(request).getCart(); //输出字符串 System.out.println( "id = " + id + " qty = " + qtyStr ); //更新购物车中商品的数量为用户的请求值 cart.updateQuantity(id, Integer.parseInt(qtyStr)); } } } } //校验用户是否有购买商品的权限 public ActionForward checkout(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // Make sure the user is logged in first // Just forward to the checkout page //返回一个成功状态的映射 return mapping.findForward( Constants.SUCCESS_KEY ); } //确认操作 public ActionForward finalizeOrder(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // Just forward to the order confirmation page return mapping.findForward( Constants.CONFIRM_ORDER_KEY ); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -