java cook 购物车_cookie来实现购物车功能

一、大概思路

1、从cookie中取商品列表

2、判断要添加的商品是否存在cookie中。

3、如果已添加过,则把对应的商品取出来,把要添加的商品的数量加上去。

4、如果没有添加过,则把改商品添加到商品列表中。

5、再把商品列表序列化,加入cookie中。

二、代码实现

1、定义一个购物车商品的pojo

public class cartitem {

private long id;

private string title;

private long price;

private integer num;

private string image;

public long getid() {

return id;

}

public void setid(long id) {

this.id = id;

}

public string gettitle() {

return title;

}

public void settitle(string title) {

this.title = title;

}

public long getprice() {

return price;

}

public void setprice(long price) {

this.price = price;

}

public integer getnum() {

return num;

}

public void setnum(integer num) {

this.num = num;

}

public string getimage() {

return image;

}

public void setimage(string image) {

this.image = image;

}

}

2、定义一个购物车的接口和实现类

public interface cartservice {

taotaoresult addcartservice(httpservletrequest request, httpservletresponse response, long itemid, integer num);

}

@service

public class cartserviceimpl implements cartservice {

@autowired

private itemservice itemservice;

@value("${cookie_expire}")

private integer cookie_expire;

@override

public taotaoresult addcartservice(httpservletrequest request, httpservletresponse response, long itemid, integer num) {

// 1.从cookie中取商品列表

list list = getcartfromcookie(request);

// 2.判断是否已经添加过购物车

boolean haveflag = false;

for (cartitem c : list) {

//3.如果添加过,把对应的商品取出来,数量加num

if(c.getid().longvalue() == itemid) {

c.setnum(c.getnum() + num);

haveflag = true;

break;

}

}

// 4.如果没添加过,则把该商品添加进去。

if (!haveflag) {

tbitem item = itemservice.getitembyid(itemid);

cartitem cartitem = new cartitem();

cartitem.setnum(num);

cartitem.setid(itemid);

cartitem.setprice(item.getprice());

cartitem.settitle(item.gettitle());

if (item.getimage() != null) {

string image = item.getimage();

string[] strings = image.split(",");

cartitem.setimage(strings[0]);

}

list.add(cartitem);

}

// 5.再把list返回到cookie中

cookieutils.setcookie(request, response, "tt_cart", jsonutils.objecttojson(list), cookie_expire);

return taotaoresult.ok();

}

private list getcartfromcookie(httpservletrequest request) {

try {

string json = cookieutils.getcookievalue(request, "tt_token", true);

list list = jsonutils.jsontolist(json, cartitem.class);

if (list == null) {

return new arraylist<>();

}else {

return list;

}

}catch (exception e) {

return new arraylist<>();

}

}

}

3、controller来接收前端的请求,并响应到cart-success.jsp页面。

@controller

public class cartcontroller {

@autowired

private cartservice cartservice;

@requestmapping("/cart/add/{itemid}")

public string addcart(@pathvariable long itemid, integer num, httpservletrequest request, httpservletresponse response) {

taotaoresult result = cartservice.addcartservice(request, response, itemid, num);

return "cart-success";

}

}

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值