Cookieでカートを実現
Cookieでカートを実現
ここで私の個人ブログをちょっとお勧めします
csdn:雷園のcsdnブログ
個人ブログ:雷園の個人ブログ
簡書:雷園の簡書
余計なことは言わないで直接コードをつけなさい.
ガイド:
Cookieの取得
Cookieのカートリストの取得
クッキー作成に必要なvalue
追加、削除、カートのクリア方法
ここで私の個人ブログをちょっとお勧めします
csdn:雷園のcsdnブログ
個人ブログ:雷園の個人ブログ
簡書:雷園の簡書
余計なことは言わないで直接コードをつけなさい.
ガイド:
import com.ambow.springboot.vo.CartVo;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
Cookieの取得
/**
* "cart" cookie
*
* @param request
* @return cookie
*/
public Cookie getCookie(HttpServletRequest request) {
Cookie[] cookies = request.getCookies();
Cookie cart_cookie = null;
for (Cookie cookie : cookies) {
if ("cart".equals(cookie.getName())) { // cookie
cart_cookie = cookie;
}
}
return cart_cookie;
}
Cookieのカートリストの取得
/**
* cookie
*
* @param response
* @param request
* @return
* @throws UnsupportedEncodingException
*/
public List getCartInCookie(HttpServletResponse response, HttpServletRequest request) throws
UnsupportedEncodingException {
//
List items = new ArrayList();
String value_1st = "";
// cookie
Cookie cart_cookie = getCookie(request);
// cookie
if (cart_cookie != null) {
// cookie String value
value_1st = URLDecoder.decode(cart_cookie.getValue(), "utf-8");// cookie
// value ""
if (value_1st != null && !"".equals(value_1st)) {
// list
String[] arr_1st = value_1st.split("==");
for (String value_2st : arr_1st) {
String[] arr_2st = value_2st.split("=");
CartVo item = new CartVo();
item.setGoodsId(Integer.parseInt(arr_2st[0])); // id
item.setGoodsTypeId(Integer.parseInt(arr_2st[1])); // ID
item.setGoodsName(arr_2st[2]); //
item.setGoodsPrice(Integer.parseInt(arr_2st[3])); //
item.setGoodsDiscount(Integer.parseInt(arr_2st[4]));//
item.setGoodsNum(Integer.parseInt(arr_2st[5]));//
item.setGoodsInfo(arr_2st[6]);//
item.setNum(Integer.parseInt(arr_2st[7]));//
items.add(item);
}
}
}
return items;
}
クッキー作成に必要なvalue
/**
* cookie value
*
* @param cartVos
* @return , "=" , "=="
*/
public String makeCookieValue(List cartVos) {
StringBuffer buffer_2st = new StringBuffer();
for (CartVo item : cartVos) {
buffer_2st.append(item.getGoodsId() + "=" + item.getGoodsTypeId() + "=" + item.getGoodsName() + "="
+ item.getGoodsPrice() + "=" + item.getGoodsDiscount() + "=" + item.getGoodsNum() + "=" + item
.getGoodsInfo() + "=" + item.getNum() + "==");
}
return buffer_2st.toString().substring(0, buffer_2st.toString().length() - 2);
}
追加、削除、カートのクリア方法
/**
* ID
*
* @param goodsId ID
* @param request
* @param response
* @return
* @throws UnsupportedEncodingException
*/
@RequestMapping("/deleteByGoodsId/{goodsId}")
public String deleteByGoodsId(@PathVariable("goodsId") Integer goodsId, HttpServletRequest request,
HttpServletResponse response) throws UnsupportedEncodingException {
// cookie
List cartVos = getCartInCookie(response, request);
CartVo deleteCart = null;
//
if (cartVos.size() > 0) {
// ID
for (CartVo c : cartVos) {
if (c.getGoodsId().equals(goodsId)) {
deleteCart = c;
break;
}
}
// ID
if (deleteCart != null) {
//
if (deleteCart.getNum() > 1) {
// 1 -1
deleteCart.setNum(deleteCart.getNum() - 1);
cartVos.remove(deleteCart);
cartVos.add(deleteCart);
} else {
//
cartVos.remove(deleteCart);
}
// "cart" cookie
Cookie cookie = getCookie(request);
// cookie value
cookie.setValue(URLEncoder.encode(makeCookieValue(cartVos), "utf-8"));
//
cookie.setMaxAge(60 * 10);
//
cookie.setPath("/");
// cookie
response.addCookie(cookie);
}
}
return "success";
}
/**
*
*
* @param response
* @param request
* @return
*/
@RequestMapping("/deleteAllCookie")
public String deleteCookie(HttpServletResponse response, HttpServletRequest request) {
// "cart" cookie
Cookie cookie = getCookie(request);
// 0
cookie.setMaxAge(0);
//
cookie.setPath("/");
// cookie value null
cookie.setValue(null);
// cookie
response.addCookie(cookie);
return "success";
}
/**
*
*
* @param request
* @param response
* @return
* @throws UnsupportedEncodingException
*/
@RequestMapping("/getCart")
public List getCart(HttpServletRequest request, HttpServletResponse response) throws
UnsupportedEncodingException {
return getCartInCookie(response, request);
}
/**
*
*
* @param goodsId ID
* @param request
* @param response
* @throws UnsupportedEncodingException
*/
@RequestMapping("/addGoodsToCart/{goodsId}")
public void addGoodsToCart(@PathVariable("goodsId") Integer goodsId, HttpServletRequest request,
HttpServletResponse response) throws UnsupportedEncodingException {
// cookie
List cartVos = getCartInCookie(response, request);
Cookie cookie_2st;
//
if (cartVos.size() <= 0) {
//TODO ID
CartVo cartVo = new CartVo(); // , id
cartVo.setNum(1);
cartVo.setGoodsId(1);
cartVo.setGoodsNum(1);
cartVo.setGoodsTypeId(1);
cartVo.setGoodsPrice(1);
cartVo.setGoodsDiscount(1);
cartVo.setGoodsName(" ");
//
cartVos.add(cartVo);
if (getCookie(request) == null) {
// cookie
cookie_2st = new Cookie("cart", URLEncoder.encode(makeCookieValue(cartVos), "utf-8"));
cookie_2st.setPath("/");// cookie
cookie_2st.setMaxAge(60 * 30);// cookie 30
response.addCookie(cookie_2st);// cookie
} else {
cookie_2st = getCookie(request);
cookie_2st.setPath("/");// cookie
cookie_2st.setMaxAge(60 * 30);// cookie 30
cookie_2st.setValue(URLEncoder.encode(makeCookieValue(cartVos)));
response.addCookie(cookie_2st);// cookie
}
}
//
else {
int bj = 0;
for (CartVo cart : cartVos) {
// +1
if (cart.getGoodsId() == goodsId) {
cart.setNum(cart.getNum() + 1);
bj = 1;
break;
}
}
if (bj == 0) {
//TODO ID
CartVo cartVo = new CartVo(); // , id
cartVo.setNum(1);
cartVo.setGoodsId(goodsId);
cartVo.setGoodsNum(1);
cartVo.setGoodsTypeId(1);
cartVo.setGoodsPrice(1);
cartVo.setGoodsDiscount(1);
cartVo.setGoodsName(" ");
//
cartVos.add(cartVo);
}
// "cart" cookie
cookie_2st = getCookie(request);
cookie_2st.setPath("/");// cookie
cookie_2st.setMaxAge(60 * 30);// cookie 30
cookie_2st.setValue(URLEncoder.encode(makeCookieValue(cartVos))); // value
response.addCookie(cookie_2st);// cookie
}
}