1.用cookie实现购物车;
2.用session实现购物车;
3.用cookie和数据库(购物车信息持久化)实现购物车;
分析一下这三种方法的优缺点:
1.单纯有cookie实现购物车,这样的购物车不是很理想,设想一下,如果客户端的浏览器把cookie给禁用了,
这种方法就会在这里流产…
2.session中保存购物车的信息,这个只是在一个会话中可用,如果用户没有登录,或者说登录了以后,添加购物车,在关闭浏览器
或者登出后,之前所添加的购物车通通都流产啦…
3.我这里要说就是这种方法啦…..
主要的流程:
A.用户登录前的数据流:用户在没有登录系统的时候,对喜欢的商品进行添加购物车,那么这个时候,我们可以把购物车信息保存
到cookie中,这里会涉及到cookie的添加,修改 *** 作;也即如果之前在cookie中不存对应的cookie,则就对cookie进行添加 *** 作。
如果在cookie中存在对应的cookie,那么,这时候,就要对cookie进行修改 *** 作了(这里涉及到用户对同一个商品进行多次添加购物车的情况)。
B.用户登录后的数据流:用户在登录后,系统首先做的第一件事就是去获取对应的cookies,如果存在相关的购物车cookies,那么就对该购物车
信息进行相应用户User的持久化 *** 作,要么添加,要么修改。(添加 *** 作:该用户所对应的购物车如果没有相应的信息进行添加 *** 作;修改 *** 作:类似的,
如果存在对应用户的购物车信息,就进行修改 *** 作)。用户登录后,也可以进行购物车的添加 *** 作,不过,这里不是添加到cookie中,而是直接持久化到
数据库中。注:用户登录后的数据都是和数据库打交道。
再加一个表格列:是否已加入购物车
点击按钮后,进行入库 *** 作,insert语句
不行,这样的话,只能加,不能减
你应该在每行添加一个checkbox复选框
勾选了,就代表入库了,取消了就delete
对,就是这样
import java.util.ArrayListimport java.util.HashMap
import java.util.Iteratorpublic class ShoppingCartManager {
HashMap<String, String>hm=new HashMap<String, String>()
float totlePrice=0
//添加book到购物车
public void addBook(String bookId,String bookQuantity){
if(hm.containsKey(bookId)){
int value=Integer.parseInt(hm.get(bookId))
value+=Integer.parseInt(bookQuantity)
hm.put(bookId, value+"")
}else{
hm.put(bookId, bookQuantity)
}
}
//修改数量
public void updateQuantity(String bookId,String bookQuantity){
hm.put(bookId, bookQuantity)
}
//获取购物车的所有信息 并计算总价
public ArrayList<BookBean>getShoppingCart(){
ArrayList<BookBean>al=new ArrayList<BookBean>()
Iterator<String>i=hm.keySet().iterator()
String ids=""
BookTableManager btm=new BookTableManager()
while(i.hasNext()){
ids=ids+","+i.next()
}
al= btm.selectByBookIds(ids)
totlePrice=0//清空总价,防止无限累计
for(int j=0j<al.size()j++){
BookBean bb=al.get(j)
totlePrice+=bb.getPrice()*Integer.parseInt(getQuantityById(bb.getBookId()+""))
}
return al
}
//获取总价
public float getTotlePrice(){
return totlePrice
}
//根据ID获取数量
public String getQuantityById(String id){
String quantity=hm.get(id)
return quantity
}
//清空购物车
public void clear(){
hm.clear()
}
//删除购物车中的一本书
public void deleteById(String id){
hm.remove(id)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)