1.购物车类
package com.vo.shop;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
public class Cart {
// 购物车商品总数
private int itemNumber = 0;
private double totalPrice = 0;
private Map<String,Object> items = new HashMap<String,Object>();
/**
* 添加购物车
*
* @param id
* @param goods
*/
public void addCart(String id, Goods goods, int number) {
if (!items.containsKey(id)) {
GoodsItem item = new GoodsItem(goods, number);
items.put(id, item);
} else {
GoodsItem item = (GoodsItem) items.get(id);
item.setNumber(item.getNumber() + number);
}
setItemNumber();
}
/**
* 修改购买商品数量
*/
public void updateCart(String id, int number) {
if (items.containsKey(id)) {
GoodsItem item = (GoodsItem) items.get(id);
item.setNumber(number);
setItemNumber();
}
}
/**
* 删除购物车中的商品
*/
public void delCart(String id) {
if (items.containsKey(id)) {
items.remove(id);
setItemNumber();
}
}
/**
* 设置购物车中商品数量
*
* @return
*/
public void setItemNumber() {
Iterator it = items.entrySet().iterator();
itemNumber = 0;
while (it.hasNext()) {
Map.Entry entry = (Entry) it.next();
GoodsItem gt = (GoodsItem) entry.getValue();
itemNumber += gt.getNumber();
}
}
/**
* 获得购物车中的商品总价
*/
public String getTotalPrice() {
Iterator it = items.entrySet().iterator();
totalPrice = 0;
while (it.hasNext()) {
Map.Entry entry = (Entry) it.next();
GoodsItem gt = (GoodsItem) entry.getValue();
totalPrice += gt.getNumber() * gt.getGoods().getPrice();
}
return roundHalfUp(totalPrice, 2);
}
/**
* 清空购物车
*/
public void clearCart() {
itemNumber = 0;
totalPrice = 0;
items.clear();
}
/**
* 四舍五入。
*
* @param number
* 数值
* @return 舍入后的数值
* @see java.text.RoundingMode.HALF_UP
*/
public String roundHalfUp(double number, int frac) {
NumberFormat fmt = NumberFormat.getInstance(Locale.CHINA);
fmt.setMaximumFractionDigits(frac);
fmt.setRoundingMode(RoundingMode.HALF_UP);
return fmt.format(number);
}
public int getItemNumber() {
return itemNumber;
}
public void setItemNumber(int itemNumber) {
this.itemNumber = itemNumber;
}
public Map getItems() {
return items;
}
public void setItems(Map items) {
this.items = items;
}
public void setTotalPrice(float totalPrice) {
this.totalPrice = totalPrice;
}
}
2.关于在浏览器中共享session,因为第一次打开浏览器,服务器会往你的浏览器写入一个cookie,cookie的值为sessionid,cookie存活周期为会话期间,只要会话结束,cookie就会被清除,第二次打开新浏览器的时候,浏览器的cookie已经不存在sessionid,服务器因为无法得到客户端发送过来的sessionid,所以会创建新的session。
解决办法:重写cookie存活时间,设置cookie有效时间为session的有效时间(request.getSession().getMaxInactiveInterval()),cookie的名称为JSESSIONID
分享到:
相关推荐
Java Web 课程设计报告设计题目:简易购物车设计 Java Web 课程设计报告设计题目:简易购物车设计是 Java Web 开发课程中的一个实践项目,旨在设计和实现一个简易的购物车系统。该系统主要包括首页、注册、登录、...
ASP.NET购物车设计是Web开发中的一个重要环节,它涉及到用户交互、数据管理以及后端处理等多个方面的技术。在这个过程中,开发者需要理解用户在电子商务网站上选择商品并进行结算的行为模式,然后利用编程语言和框架...
### 简单购物车设计思想与数据结构详解 在电子商务系统中,购物车功能是不可或缺的一部分,它为用户提供了一种方便快捷的方式来管理他们选择的商品。本文将基于给定的文件信息来深入探讨一个简单的购物车实现方法...
### 基于JSP购物车设计的关键知识点 #### 一、引言 随着互联网技术的飞速发展,电子商务已成为日常生活中不可或缺的一部分。基于JSP(JavaServer Pages)的购物车设计是电子商务网站中的一项重要功能,它允许用户...
本教程“《java Web开发教程--入门与提高篇(JSP+Servlet) 购物车设计”旨在教授如何利用这两种技术来创建一个功能完备的购物车系统。购物车设计是电商网站的核心部分,它需要处理用户添加、删除商品以及计算总价等...