-
购物车中只能添加一个商品,第二次添加就会把第一次给覆盖掉了,怎么办?5
action中的代码如下:import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionSupport; import ez.store.pojo.Book; import ez.store.pojo.User; import ez.store.service.UserService; import ez.store.util.CartItem; public class OrderCartItemAction extends ActionSupport implements SessionAware{ private UserService userService; private Map session; private CartItem ci; public Map getSession() { return session; } public void setSession(Map session) { this.session = session; } public UserService getUserService() { return userService; } public void setUserService(UserService userService) { this.userService = userService; } // 用于将商品放到购物车里面 public String addBookToCart() { HttpServletRequest request = ServletActionContext.getRequest(); Book book = (Book) session.get("book"); int score = user.getScore(); String bname = book.getBname(); double price = book.getPrice(); int amount = Integer.parseInt(request.getParameter("amount")); ci=new CartItem(); Date date = new Date(); Map map = new HashMap(); ci.setBname(bname); ci.setPrice(price); ci.setAmount(amount); map.put(date,ci); session.put("list",map); return "success"; } }
然后就在jp页面接受"list"的值用c:if迭代,但是现在每次只能添加一个商品信息进购物车,且第二次添加的会把第一次添加的给覆盖掉。问题好像是因为每次调用这个action都会重新去new一次,但是就是不知道该如何解决?求指点。
问题补充:int score = user.getScore(); 这个话是多余的
2012年12月09日 22:38
7个答案 按时间排序 按投票排序
-
采纳的答案
List<CartItem> list = null;
Object obj = session.get("list");
if(obj != null){
list = (List<CartItem>) obj;
}else{
list = new ArrayList<CartItem>();
session.put("list",list);
}
//list.add 商品
......2012年12月10日 09:26
-
购物车的功能用Cookie来做的,购物车的信息还要保存在数据库的
1、用户没有登录
Cookie[] cookies = ServletActionContext.getRequest().getCookies();
遍历cookies,判断
1,1、如果它不为空或长度大于0,将Cookie的值序列化成java对象集合,假设为previousOrderCartItemList,遍历previousOrderCartItemList,将当前商品的ID跟数据库取出来的做对比
1.1.1、如果相同,增加该Cookie的商品数量即可
1.2.1、如果不相同,追加这件商品到Cookie
1.2、如果它不存在,则把商品放进Cookie里
2、用户已经登录,直接根据用户去数据库取Cookie信息,剩下的基本相同了
2012年12月11日 02:56
-
给你一个免费下载源码csdn的地址,里面有一个完整的购物车项目,你可以下载来参考一下,有你说的bug解决:http://download.csdn.net/detail/tianyazaiheruan/4778368
2012年12月10日 22:15
-
个人觉得你的HashMap map = new HashMap()这里不应该new一个新的map,而应该从session中取出map。
如果是认为的每一次访问action类都会被new一个新的对象:
struts2的action是多例的,意思就是每一次访问都会重新new一个该action类的对象,这样是为了简化多线程的编程,所过你使用了spring容器来管理action,那可以通过配置scope的值来配置action为session级别的单例,这样同一个session的同一个action只有一个对象,也就不会出现你所说的覆盖问题,但是没有用spring的话,可以每次购物的数值都存进数据库,或者如“jinnianshilongnian”所说的那4条去做。2012年12月10日 17:02
-
我觉得应该在数据库中保存购物车信息,而不仅仅在session中保持,这样可以查询数据库获取已选购的商品再最近现在选购的商品。
2012年12月10日 11:33
-
因为每一次都新Map map = new HashMap();了一下,所以Session里面当然只存在一条。
应该先从Session里面取出来list,然后再往里面追加。
当然,要判断物品是否已经购买过2012年12月09日 23:15
-
购物车中只能添加一个商品,第二次添加就会把第一次给覆盖掉了,怎么办?
你的用法也是不对的
ci=new CartItem();
Date date = new Date();
Map map = new HashMap();
ci.setBname(bname);
ci.setPrice(price);
ci.setAmount(amount);
map.put(date,ci);
session.put("list",map);
应该是这样的
List<CartItem> list = ...;
session.put("cartList", list);
购物车 添加产品算法一般是:
0、首先从如cookie/session中获取list,如果没有new一个新的放入
1、检查list有没有 如果没有创建一个
2、否则 获取该商品并增加数量
3、保存list到cookie/session中2012年12月09日 22:48
相关推荐
可以选择网站的任意4款商品一次横向排开,对比商品的各项功能和参数,方便用户选择购买商品,并可把对比的商品直接放入购物车进行购买,让用户购买商品更方便、更直观。 二四、支持商品复制功能 很多时候,一个个...
可以选择网站的任意4款商品一次横向排开,对比商品的各项功能和参数,方便用户选择购买商品,并可把对比的商品直接放入购物车进行购买,让用户购买商品更方便、更直观。 二四、支持商品复制功能 很多时候,一个个...
在购物车测试中,每个用户可以有不同的商品选择,提高测试覆盖率。 5. **使用方法**: 首先,解压"jmeter5.1_CSV自定义.zip",替换原有的JMeter安装目录中的相关jar文件。然后,在CSV Data Set Config配置元件中...
整体来看,这份文档旨在描述一个典型的技术架构方案,覆盖了从技术选型到具体实现的各个环节。通过对这些内容的详细解析,不仅可以帮助项目团队更好地理解和执行技术方案,还能够为后续的维护和扩展打下坚实的基础。...
最土团购商业版v2.0是一款开源的团购系统,主要针对中小企业或个人开发者,提供了一个免费的在线团购平台解决方案。这款系统的核心在于其源代码的开放性,允许用户自由地进行二次开发和定制,以适应不同的业务需求。...
【ECSHOP六脉神剑】是针对ECSHOP电子商务系统开发的一套详细的教程,对于想要进行ECSHOP二次开发的开发者来说,这是一个非常重要的参考资料。ECSHOP是一个开源的网上商店系统,它提供了丰富的功能和灵活的模板机制,...
uniapp是一个基于Vue.js的多端开发框架,它允许开发者编写一次代码,即可在iOS、Android、H5、微信小程序、支付宝小程序、百度小程序等多个平台上运行,大大提高了开发效率。 【uniapp】是这个项目的核心,它提供了...
第一次作业只需提交静态HTML和CSS文件,而第二次作业则需要提交完整的前后端源代码、描述文档和功能展示视频。提交的文件应按照规定的格式命名并压缩,通过邮件发送至指定助教邮箱。 总的来说,这个作业全面覆盖了...
6. **购物车功能**:实现商品添加、删除、数量调整,并在用户会话中持久化购物车状态。 7. **订单管理**:包括订单创建、状态跟踪、退款退货处理等环节。 8. **用户系统**:注册、登录、密码找回、用户资料管理等...
7. **购物车与订单**:这部分内容涵盖购物车的实现,包括添加商品、修改数量、删除商品等功能,以及订单的生成、支付、发货、退款等流程。 8. **商品管理**:学习如何设计和实现商品分类、品牌管理、库存控制等模块...
该压缩包文件“简单分栏式商城个人中心页功能集程序源码.zip”包含了一个用于构建电子商务网站个人中心页面的源代码实现。个人中心页在电商网站中是至关重要的,它通常承载着用户账户管理、订单查看、收货地址管理、...
系统通常包括用户模块、商品模块、购物车模块、订单模块、支付模块等多个子模块,覆盖了从浏览到交易完成的整个流程。 二、Web设计与开发 Web设计主要关注用户体验和界面美观,需要考虑到不同设备的适配性。开发则...
学习本书读者可以了解各个领域的特点,能够针对某一行业进行软件开发,也可以通过光盘中提供的模块源代码进行二次开发,以减少开发系统所需要的时间。本书适合各级软件开发人员学习使用,也可供大、中专院校师生学习...
【标题】"qingchengcode_rainh3i_richh5x_商城后台开发_" 提供的是一款基于RainH3I和RichH5X技术的商城后台开发源代码,这通常是一个完整的电子商务平台的后端实现,用于处理订单管理、商品库存、用户账户、支付集成...
安卓上用于加载的Webview视图窗口只是作为类浏览器而存在,在安卓上更是只能同时运行一个Webview。(2)跨域数据交互问题。不同的Webview之间无法共享数据。(3)页面自适应问题。页面难以兼容适应不同分辨率的设备...
- **购物车管理**:用户可将感兴趣的商品添加至购物车,并进行数量调整、删除等操作。 - **订单管理**:用户下单购买商品后,可在订单管理页面查看订单状态、修改收货地址等信息。 - **支付管理**:集成第三方支付...
3. 购物车模块:用户可以添加商品至购物车,进行数量调整、选择购买、合并结算等操作。 4. 订单模块:包含订单创建、支付、发货、收货、评价等一系列流程,集成第三方支付接口如支付宝、微信支付,提供便捷的支付...
实例128 获取数组中最后一个元素 158 实例129 去除数组中的重复元素 158 实例130 字符串与数组的转换 159 实例131 对数组元素进行随机排序 160 实例132 随机抽取数组中元素 161 实例133 二维数组的输出 162 实例134 ...