购物车
来源:互联网 发布:淘宝双十一活动报名 编辑:程序博客网 时间:2024/05/17 05:59
IndexAction:
public class IndexAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {//查找商品表中的所有商品信息 GoodsDAO dao = new GoodsDAO();List list = dao.find();request.setAttribute("lister",list);return mapping.findForward("a");}}
ListAction:
public class ListAction extends Action {
// 将hashmap中value转到list中public static List getList(HashMap hs) {List list = new ArrayList();Iterator itr = hs.keySet().iterator();while (itr.hasNext()) { list.add(hs.get(itr.next())); }return list;}//优化后的getList方法public static List getList(HashMap hs) {return new ArrayList(hs.values());}
// 将点击的商品id和已经点击过的商品id数组中去比较,看是否有重复,真为有重复public static boolean isCheck_on(int[] ids, int _id) {boolean flag = false;for (int i = 0; i < ids.length; i++) { if (ids[i] == _id) { flag = true; }}return flag;}
// 将新点击商品的id和list(存放在session中的allIdSumList容器)中元素的id属性比较public static void test_ListCheck(List list, int check_id, float _p,String _n) {for (int i = 0; i < list.size(); i++) { int j = ((IdSumPriceNameDTO) list.get(i)).getId(); // 将list_sumId的第i个元素++ int k = ((IdSumPriceNameDTO) list.get(i)).getSum(); if (j == check_id) { //相等条件则将k(商品数量)++ k++; //session中的"allIdSumList"也随之更新,引用传参原理 ((IdSumPriceNameDTO) list.get(i)).setSum(k); //list.remove(i); //IdSumPriceNameDTO idSumDTO = new IdSumPriceNameDTO(j, k, _p,_n); //将更新后的idSumDTO重新add到list中,session中的"allIdSumList"也随之更新,引用传参原理 //list.add(i, idSumDTO); }}}// 将点击商品id和allIdSumList(session中)比较,并返回比较后的list_sumIdpublic static List getCounter_List(List _list_check, int id, HttpSession sess, float price,String _name) {
List list_sumId = null;String flag = (String) sess.getAttribute("flags");// 执行了修改操作的条件if (flag != null) { // 从session中获得已经修改过商品的id的数组 int[] ider = (int[]) sess.getAttribute("ider"); // 在修改操作后,在已修改商品上继续购物操作 if (isCheck_on(ider, id)) { list_sumId = (List) sess.getAttribute("allIdSumList"); // 调用test_ListCheck方法 test_ListCheck(list_sumId,id,price,_name); } // 修改操作后,点击没有被修改数量过的商品 else { // 标志位 boolean flag_c = true; // 新点击商品id和list中历史点击记录比较 for (int i = 0; i < _list_check.size() - 1; i++) { if (_list_check.get(i).equals(id)) { flag_c = false; } } // session中获得"allIdSumList" list_sumId = (List) sess.getAttribute("allIdSumList"); // 新点击操作 if(flag_c){ IdSumPriceNameDTO idSumDTO = new IdSumPriceNameDTO(id, 1, price,_name); // session中的"allIdSumList"也随之更新,引用copy list_sumId.add(idSumDTO); } // 重复点击操作 else{ // 调用test_ListCheck方法 test_ListCheck(list_sumId,id,price,_name); } }} // 未点击修改的操作条件else { // session中获得"allIdSumList" list_sumId = (List) sess.getAttribute("allIdSumList"); // 标志位 boolean flag_c = true; // 新点击商品id和list中历史点击记录比较 for (int i = 0; i < _list_check.size() - 1; i++) { if (_list_check.get(i).equals(id)) { flag_c = false; } } // 新点击操作 if (flag_c) { IdSumPriceNameDTO idSumDTO = new IdSumPriceNameDTO(id, 1, price,_name); // session中的"allIdSumList"也随之更新,引用copy list_sumId.add(idSumDTO); } // 重复点击操作 else { // 调用test_ListCheck方法 test_ListCheck(list_sumId,id,price,_name); }}return list_sumId;}
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {// 商品编号int id = Integer.parseInt(request.getParameter("id"));GoodsDAO dao = new GoodsDAO();int goodsid = dao.findbyId(id).getId();String goodsName = dao.findbyId(id).getGoodsName();float goodsPrice = (float) dao.findbyId(id).getGoodsPrice();//set进idSumDTO IdSumPriceNameDTO idSumDTO = new IdSumPriceNameDTO();idSumDTO.setId(goodsid);idSumDTO.setGoodsName(goodsName);idSumDTO.setGoodsPrice(goodsPrice);// idSumDTO中的sum属性缺省为1idSumDTO.setAllPrices(goodsPrice);System.out.println(idSumDTO.getAllPrices());// hid做为hashmap中的keyInteger hid = Integer.valueOf(idSumDTO.getId());HttpSession sess = request.getSession();HashMap hs = (HashMap) sess.getAttribute("shops");/** *//** * 客户第一次访问 */if (hs == null) { //将商品id放入list中 List list = new ArrayList(); list.add(hid); hs = new HashMap(); hs.put(hid, idSumDTO); // jsp显示 sess.setAttribute("shop", getList(hs)); // 将hs放到session中,删除修改用 sess.setAttribute("shops", hs); // 将list(商品id)放入session中 sess.setAttribute("ids_go", list); // 将商品id,sum,price,name放入idSumDTO_1并置于idSum_list中 IdSumPriceNameDTO idSumDTO_1 = new IdSumPriceNameDTO(idSumDTO.getId(), idSumDTO .getSum(), idSumDTO.getGoodsPrice(),idSumDTO.getGoodsName()); List idSum_list = new ArrayList(); idSum_list.add(idSumDTO_1); // 将idSum_list对象至于sess中,和updateAction中的"allIdSumList"对应 sess.setAttribute("allIdSumList", idSum_list);}/** *//** * 客户第二次以后的访问 */else { List list_check = (List) sess.getAttribute("ids_go"); list_check.add(hid); // list_sumId包含id,sum,price,name List list_sumId = getCounter_List(list_check, hid, sess, goodsPrice,goodsName); for (int i = 0; i < list_sumId.size(); i++) { IdSumPriceNameDTO isp = new IdSumPriceNameDTO(); int a = ((IdSumPriceNameDTO) list_sumId.get(i)).getId(); isp.setId(a); int b = ((IdSumPriceNameDTO) list_sumId.get(i)).getSum(); isp.setSum(b); float c = ((IdSumPriceNameDTO) list_sumId.get(i)).getGoodsPrice(); isp.setGoodsPrice(c); isp.setAllPrices(c); String d =((IdSumPriceNameDTO) list_sumId.get(i)).getGoodsName(); isp.setGoodsName(d); //session中的shops也随之更新,引用copy hs.put(a, isp); //引用赋null isp = null; } // jsp显示 sess.setAttribute("shop", getList(hs));}//转向buy.jspreturn mapping.findForward("b");}
}
UpdateAction:
public class UpdateAction extends Action {/** *//*** 修改商品信息*///优化后的getList方法public static List getList(HashMap hs) {return new ArrayList(hs.values());}
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {GoodsForm gs = (GoodsForm)form;int[] ids = gs.getId();int[] sums = gs.getSum();float[] goodsPrices = gs.getGoodsPrice();String[] goodsName = gs.getGoodsName();//从session获得hsHashMap hs = (HashMap)request.getSession().getAttribute("shops");//从session中获得allIdSumList容器List idSum_list = (List)request.getSession().getAttribute("allIdSumList");//清空上次idSum_list容器中更新后的记录if(idSum_list!=null){ idSum_list.clear();}for(int i = 0;i<ids.length;i++){ //循环将 ids[i]和idSumPriceNameDTO put到hs容器中 IdSumPriceNameDTO idSumPriceNameDTO = new IdSumPriceNameDTO(); idSumPriceNameDTO.setId(ids[i]); idSumPriceNameDTO.setGoodsName(goodsName[i]); idSumPriceNameDTO.setGoodsPrice(goodsPrices[i]); idSumPriceNameDTO.setSum(sums[i]); idSumPriceNameDTO.setAllPrices(goodsPrices[i]); // session中的"shops"也随之更新,引用copy hs.put(ids[i], idSumPriceNameDTO); //每次循环后将idSumPriceNameDTO 的引用设null idSumPriceNameDTO = null;
//idSum_list IdSumPriceNameDTO idSumDTO = new IdSumPriceNameDTO(ids[i],sums[i],goodsPrices[i],goodsName[i]); if(idSum_list == null){ idSum_list = new ArrayList(); } // session中的"allIdSumList"也随之更新,引用copy idSum_list.add(idSumDTO);}request.getSession().setAttribute("shop", getList(hs)); // 将过到updateAction中的商品id数组放入session中对修改操作完成后用户继续点击操作时和ider数组记录比较 request.getSession().setAttribute("ider", ids); // 设置一个标志位,标志是经过修改数量的操作 String flag = "update"; request.getSession().setAttribute("flags", flag);//转向buy.jspreturn mapping.findForward("b");}
}
DeleteAction:
public class DeleteAction extends Action {
//优化后的getList方法public static List getList(HashMap hs) {return new ArrayList(hs.values());}
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
Integer id = Integer.parseInt(request.getParameter("id"));
// 将ids_go中点击Id的历史记录中与页面传来的id比较,将相同的元素全delete掉List list_check = (List) request.getSession().getAttribute("ids_go");int size = list_check.size();int h = 0;for (int i = 0; i < size; i++) { int j = (Integer)list_check.get(h); if (j == id) { //session中的"ids_go"也随之更新,引用copy list_check.remove(h); }else{ h++; }} // remove容器allIdSumList中和id相等的整个元素,保持delete后继续购物操作的正确性List list = (List) request.getSession().getAttribute("allIdSumList");for (int i = 0; i < list.size(); i++) { int j = ((IdSumPriceNameDTO) list.get(i)).getId(); if (j == id) { //session中的"allIdSumList"也随之更新,引用copy list.remove(i); }}// 从session中取出购物的hashmap容器HashMap hashmap = (HashMap) request.getSession().getAttribute("shops");//session中的shops也随之更新,引用copyhashmap.remove(id);//jsp显示request.getSession().setAttribute("shop", getList(hashmap));//执行了delete操作后,将updateAction中的标记flag设置为null//delete后,将修改信息的标记去除,还原为无修改操作状态String flag = null;request.getSession().setAttribute("flags", flag);//转向buy.jspreturn mapping.findForward("b");}
}
IdSumPriceNameDTO :(JavaBean)
public class IdSumPriceNameDTO {
private int id;
private int sum = 1;
private float goodsPrice;private float allPrices;private String goodsName;
public IdSumPriceNameDTO() {super();}//id,sum,goodsPrice,goodsNamepublic IdSumPriceNameDTO(int id, int sum, float goodsPrice, String goodsName) {super();this.id = id;this.sum = sum;this.goodsPrice = goodsPrice;this.goodsName = goodsName;}
public String getGoodsName() {return goodsName;}
public void setGoodsName(String goodsName) {this.goodsName = goodsName;}
public float getAllPrices() {return allPrices;}//注意javabean中set 只有一个参数,定义多个时到jsp页面会出现无法找到getProperty异常public void setAllPrices(float goodsPrice) {this.allPrices = (float)(this.sum * goodsPrice);}
public float getGoodsPrice() {return goodsPrice;}
public void setGoodsPrice(float goodsPrice) {this.goodsPrice = goodsPrice;}
public int getId() {return id;}
public void setId(int id) {this.id = id;}
public int getSum() {return sum;}
public void setSum(int sum) {this.sum = sum;}
}
index.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="WEB-INF/struts-bean.tld" prefix="bean"%><%@ taglib uri="WEB-INF/struts-html.tld" prefix="html"%><%@ taglib uri="WEB-INF/struts-logic.tld" prefix="logic"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html:html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title></title></head><body bgcolor="#CCCCCC"><table width="315" border="1"><tr> <td colspan="2"><img src="1140438022_min.jpg" width="160" height="120"></td> <td colspan="2"><img src="1140437663_min.jpg" width="160" height="120"></td> <td colspan="2"><img src="1140438022_min.jpg" width="160" height="120"></td></tr><logic:iterate id="list" name="lister"> <tr> <td><bean:write name="list" property="id" /></td> <td width="85"><html:link page="/list.do" paramId="id" paramName="list" paramProperty="id" >在线订购</html:link></td> </tr></logic:iterate></table>
</body></html:html>
buy.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ taglib uri="WEB-INF/struts-bean.tld" prefix="bean"%><%@ taglib uri="WEB-INF/struts-html.tld" prefix="html"%><%@ taglib uri="WEB-INF/struts-logic.tld" prefix="logic"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html:html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title></title></head><body bgcolor="#CCCCCC"><html:form action="/update"><html:submit value="update" /><table width="302" height="55" border="1"><tr> <td width="59">DELETE</td><td width="68">NAME</td><td width="77">PRICE</td><td width="77">NUM</td><td width="77">ALLPRICE</td></tr><logic:iterate id="sh" name="shop"><tr> <html:hidden name="sh" property="id" /> <html:hidden name="sh" property="goodsPrice" /> <html:hidden name="sh" property="goodsName" /> <td><html:link page="/delete.do" paramId="id" paramName="sh" paramProperty="id" >delete</html:link></td> <td><bean:write name="sh" property="goodsName" /></td> <td><bean:write name="sh" property="goodsPrice" /></td> <td><html:text name="sh" property="sum" /></td> <td><bean:write name="sh" property="allPrices" /></td></tr> </logic:iterate></table></html:form><html:link page="/shop.do">去收银台</html:link><html:link page="/index.do">继续购物</html:link>
</body></html:html>
- 购物车
- 购物车
- 购物车
- 购物车
- 购物车
- 购物车
- 购物车
- 购物车
- 购物车
- 购物车
- 购物车
- 购物车
- 购物车
- 购物车
- 购物车
- 购物车
- 购物车
- 购物车
- sqlite的C/S结构的ODBC驱动程序终于实现成功了
- 8051汇编的sp指针
- Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
- oralce 10使用之 imp
- sybase数据库中乱码问题解决
- 购物车
- 验证码
- js 使用(一)
- 用openssl命令生成证书
- js 使用(二)
- 常用数据库JDBC连接写法
- linux下chmod命令
- web一些值得珍藏的代码
- MyEclipse6.0+Tomcat6.0 启动出错 SSH 框架