javaweb中用户添加到购物车会一直存在吗

javaweb中用户添加到购物车会一直存在吗,第1张

查询的资料,找到三种方法:

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.ArrayList

import 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)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11912055.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存