河南理工大学毕业设计(论文)说明书
@SuppressWarnings(\
public class CartAction extends ActionSupport implements ModelDriven
/** 通过依赖注入CartService与BookService组件实例 */ CartService cartservice; BookService bookservice;
/** 购物车管理所有请求中常用的参数值 */ private String actionMsg;
//Action间传递的消息参数
private List
private List
//采用模型驱动
private Cart model=new Cart();//用于封装购物车属性模型 public Cart getModel() { }
/** 处理购买请求 */ public String addToCart(){
Member member = return model;
//选购的图书ID //选购数量 //选购记录ID
(Member)ServletActionContext.getRequest().getSession().getAttribute(\\
Cart cart = null; Book book = null;
Cartselectedbook sel = null; double price = 0; if (member!=null){
29
河南理工大学毕业设计(论文)说明书
//装载当前注册会员的购物车
cart = cartservice.loadCart(member);
if (cart==null){//如果尚无购物车则为该用户创建一个购物车 }
//装载被选购的图书
book = bookservice.loadBook(bookId); if (book!=null){//该图书有效
//检查是否已存在相同的选购记录
sel = cartservice.loadCartselectedbook(cart, book); if (sel==null){//不存在相同的选购记录
sel.setCart(cart); sel.setBook(book);
sel.setNumber(1);//默认选购数量为1 //图书划价 cart = new Cart();
//购物车的初始状态为0,表示尚未结帐 cart.setCartStatus(0); //购物车默认总金额为0
cart.setMoney(Double.valueOf(0)); //购物车与当前注册会员进行关联 cart.setMember(member); //持久化购物车
if (!cartservice.saveOrUpdateCart(cart)){
addActionMessage(getText(\
}
if (book.getSpecial().intValue()==1){//特价图书,购买价格即为特价
price = book.getSprice();
}else{//非特价图书,购买价格为优惠后的市场价
price =
book.getPrice()*(100-member.getMemberlevel().getFavourable())/100;
30
河南理工大学毕业设计(论文)说明书
价
}
sel.setPrice(price); sel.setMoney(price); //重新计算购物车总金额
//cart.setMoney(cart.getMoney().doubleValue()+price); cart.setMoney(cart.getMoney()+price);
}else{//已存在相同的选购记录
sel.setNumber(sel.getNumber()+1);//选购数量加1
sel.setMoney(sel.getMoney()+sel.getPrice());//金额加一个单
//重新计算购物车总金额
//cart.setMoney(cart.getMoney().doubleValue()+sel.getPrice());
}
//持久化购物车及其选购记录
if (cartservice.saveOrUpdateCart(cart)){
if (cartservice.saveOrUpdateCartselectedbook(sel)){
addActionMessage(getText(\cart.setMoney(cart.getMoney()+sel.getPrice());
}else{
addActionMessage(getText(\
}
}else{ }
addActionMessage(getText(\
}else{//指定图书不存在
addActionMessage(getText(\
}
}else{//会员尚未登录,无法进行在线购物
31
河南理工大学毕业设计(论文)说明书
}
}
addActionMessage(getText(\
return \
2、Spring中配置业务控制器CartAction类
将Struts2的业务控制器CartAction委托给Spring容器负责从生成到消亡的生命周期管理,可充分利用Spring容器的IoC特性,实现高度解耦。在Spring3中配置业务控制器CartAction类使用原型模式,即设置scope=”prototype”;
applicationContext.xml中配置业务控制器CartAction
scope=\
3、Struts.xml中配置业务控制器CartAction类
用户的具体请求、业务控制器中的处理方法及结果展现视图之间的对应关系必须在Struts2的配置文件struts.xml中进行正确配置方能生效,对于那些具有一定命名规则的用户请求可以使用通配符实现动态方法的调用。
struts.xml中配置业务控制器CartAction
method=\
method=\ 32

