本次主要完成的功能是在主页顶部购物车旁显示购物车中的书本总数的功能,在主页中点击图书下的添加至购物车按钮,显示数量也会随之改变
核心的思想是利用session域,通过封装两个类cartItem和cart来分别存储购物车页面中的购物项(包括书本信息(标题,售价),该书本数量,总价格)和整个购物车(存储所有购物项的map集合键值为book的id,物品总数,物品总价,存储所有购物项的collection集合)
cartItem类负责记录单项书本的信息,注意价格是不能被外界所更改的,封装时,类的构造函数里的参数不能包括价格这一成员,而是利用book类中的getPrice函数和本类中的数量成员去计算赋值,同时,在本类中只要调用成员方法就应该在计算一遍该对象的总价格,所以在所有的set方法中都应加入对总价成员计算赋值的部分,注意不能有总价的set方法原因同上。
public class CartItem implements Serializable {
private Book book; //购物项图书
private long count; //购物数量
private Double amount; //购物项总价,价格不能从外部传入,并且防止价格被修改不能留setAmount
public CartItem() {
}
public CartItem(Book book, long count) {
this.book = book;
this.count = count;
this.amount = book.getPrice()*count;
}
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
this.amount = book.getPrice()*count;
}
public long getCount() {
return count;
}
public void setCount(long count) {
this.count = count;
this.amount = book.getPrice()*count;
}
public Double getAmount() {
return amount;
}
@Override
public String toString() {
return "CartItem{" +
"book=" + book +
", count=" + count +
", amou