-
good查看全部
-
Model2的示例图查看全部
-
Model1示例图查看全部
-
编写Servlet类 @CartServlet.java public CartServlet{ //重写doPost public void doPost(){ //判断购物动作,增加,显示,删除 1.得到数据 2.进而通过itemDao连接数据库得到goods对象 2.逻辑处理(添加购物车列表,传递值给session) 3.页面跳转 } //增加商品逻辑处理 private boolean addToCart(){ 1.得到购物车类型数据 3.判断是不是第一次给购物车添加商品 4.给购物类列表添加商品 5.传递值给session } } //添加商品进购物车的方法 private boolean addToCart(HttpServletRequest request, HttpServletResponse response) { String id = request.getParameter("id"); String number = request.getParameter("num"); Items item = idao.getItemsById(Integer.parseInt(id)); //是否是第一次给购物车添加商品,需要给session中创建一个新的购物车对象 if(request.getSession().getAttribute("cart")==null) { Cart cart = new Cart(); request.getSession().setAttribute("cart",cart); } Cart cart = (Cart)request.getSession().getAttribute("cart"); if(cart.addGoodsInCart(item, Integer.parseInt(number))) { return true; } else { return false; } }查看全部
-
Cart类为防止添加商品重复,重写了items类父类Object的hashCode的方法 @items public int hashCode() { return this.getId()+this.getName().hashCode(); } public boolean equals(Object obj) { if(this==obj) { return true; } if(obj instanceof Items) { Items i = (Items)obj; if(this.getId()==i.getId()&&this.getName().equals(i.getName())) { return true; } else { return false; } } else { return false; } } @Cart public boolean addGoodsInCart(Items item ,int number) { if(goods.containsKey(item)) { goods.put(item, goods.get(item)+number); } else { goods.put(item, number); } calTotalPrice(); //重新计算购物车的总金额 return true; }查看全部
-
@Items.java //重写toString() public String toString() { return "商品编号:"+this.getId()+",商品名称:"+this.getName(); } @Cart.java //遍历购物商品的集合 Set<Map.Entry<Items, Integer>> items= c.getGoods().entrySet(); for(Map.Entry<Items, Integer> obj:items) { System.out.println(obj); } Set <Map.Entry<Items,Integer>>items=c.getGoods().entrySet(); 解释: Map是java中的接口,Map.Entry是Map的一个内部接口。 Map提供了一些常用方法,如keySet()、entrySet()等方法。 keySet()方法返回值是Map中key值的Set集合;entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。 Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对),接口中有getKey(),getValue方法。 因此Set<Map.Entry<Items,Integer>>也可以写成Set<Map<Items,Integer>查看全部
-
//购物车类 public class Cart { //购买商品的集合 private HashMap<Items,Integer> goods; //购物车的总金额 private double totalPrice; //构造方法(此处省略,在编写时补上) //创建属性的get()和set()方法(此处省略,在编写时补上) //添加商品进购物车的方法 public boolean addGoodsInCart(Items item ,int number) { if(goods.containsKey(item)) { goods.put(item, goods.get(item)+number); } else { goods.put(item, number); } calTotalPrice(); //重新计算购物车的总金额 return true; } //删除商品的方法 public boolean removeGoodsFromCart(Items item) { goods.remove(item); calTotalPrice(); //重新计算购物车的总金额 return true; } //统计购物车的总金额 public double calTotalPrice() { double sum = 0.0; //【1.Set集合不能用for循环遍历,迭代器Iterator最好加泛型,利用迭代器遍历取值】 Set<Items> keys = goods.keySet(); //获得键的集合 Iterator<Items> it = keys.iterator(); //获得迭代器对象 while(it.hasNext()) { Items i = it.next(); sum += i.getPrice()* goods.get(i); } this.setTotalPrice(sum); //设置购物车的总金额 return this.getTotalPrice(); } }查看全部
-
购物车类设计 (1)属性 1.购买商品集合 2.总金额 (2)方法 1.添加到购物车 2.从购物车中删除 3.计算总金额查看全部
-
开发步骤: 1. 创建购物车类 2. 编写servlet 3. 创建页面层查看全部
-
tomcat查看全部
-
1.客户端发送请求给服务器。 2.服务器开始接受,先判断该请求的servlet实例是否存在,如果不存在先装载一个servlet类并创建实例。如果存在则直接调用该servlet的service方法,之后进行判断是调用doGet方法还是doPost方法。 3.servlet创建实例后,调用init方法进行初始化。之后调用servce方法,判断是调用doGet方法还是doPost方法。 4.最后判断服务是否关闭,如果关闭则调用destroy方法。查看全部
-
执行流程图查看全部
-
执行流程查看全部
-
执行流程和生命周期查看全部
-
Model2模型查看全部
举报
0/150
提交
取消