ssh之购物车

购物车的实现传统做法的有三种模式,一种是cookies实现,一种是用seesion,还有一种是用数据库。

服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookies最典型的应用是判定注册用户是否已经登 录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。另一个重要应用场合是“购物车”之 类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。用户可以改变浏览器的设置,以使用或者禁用Cookies,正因为如此,所以如果你单一用Cookies做购物车的话,很可能存在安全隐患,比如说某些人修改Cookies信息等等。

Session:在计算机中,尤其是在网络应用中,称为“会话”。你可以设置Seesion有效期时间。seesion相对比其它要安全很多,但是过多的使用Seesion会导致服务器的内存占有太多,正因为如此,所以Seesion又被称为服务器杀手。但只要你用得合理,seesion是一个不错的选择,不管在安全性还是其它方面。

数据库就不用说了吧,大家应该都很清楚,像在购物车中,可以利用数据库创建某些临时表文件,购物结束时,把信息真正的打入数据库。但是这样一来,用户每一次购物都会产生很多的临时表,这样服务器处理量相当大,而且每一次都连接数据库,在用户量多的情况下,服务器可能因为处理不过来而崩溃。

分析了一下各自的优点和缺点,所以现在网络购物车一般都是用这三种技术的结合,cookies做为客户端浏览器里面的信息,一般都把它做为是用户浏览过的物品,session做为用户购物的重要技术,它跟随用户购物开始到购物结束,当用户把商品添加到购物车的时候,Seesion里面也存在操作,它把用户购物车里面的物品用一个数组存起来,当用户结帐的时候,再把这些信息交结程序处理,返回给数据库。这样一来,就让这三种技术都体现了各自的特点,共同创建了一个完美的框架。

在做购物车的时候,也要创建一个购物车的模型文件,也就是把用户购物车里的信息用这个模型给存起来,用seesion管理,最后完成后交给spring进行管理,操作数据库。

我用的是struts2.0+spring2.5+hibernate3.2,用seesion的地方有两处,一处是用户登录时候,你要把用户的ID存入seesion中,那样你才能确定是哪个用户购卖的哪些商品,还有一个就是用户购物车里面的商品,也要用到seesion

在struts2.0里面seesion的创建代码为

HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();

把商品加入用户的购物车的核心代码为

public ArrayList<VoItem> addBook(ArrayList<VoItem> itemList, Integer bookId) { if(itemList==null){ itemList = new ArrayList<VoItem>(); Book book = new Book(); VoItem voItem = new VoItem(); book = userDao.getById(bookId); voItem.setBookId(book.getBookId()); voItem.setBookname(book.getBookname()); voItem.setCount(1); voItem.setPrice(book.getPrice()); itemList.add(voItem); } else { boolean isFind = false; VoItem voItemfind = new VoItem(); for(int i = 0;i<itemList.size();i++) { voItemfind =itemList.get(i); if(voItemfind.getBookId()== bookId) { voItemfind.setCount(voItemfind.getCount()+1); itemList.set(i, voItemfind); isFind = true; break; } } if(!isFind) { VoItem voItem = new VoItem(); Book book = new Book(); book = this.userDao.getById(bookId); voItem.setBookId(book.getBookId()); voItem.setBookname(book.getBookname()); voItem.setPrice(book.getPrice()); voItem.setCount(1); itemList.add(voItem); } } return itemList; }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值