点击添加购物车报错
相关的代码:
package com.imooc.cart.data; public class Cart { private long id; private long productID; private String name; private int price; private int count; private int totalprice; public Cart(long id, long productID, String name, int price, int count) { this.id = id; this.productID = productID; this.name = name; this.price = price; this.count = count; } public long getId() { return id; } public void setId(long id) { this.id = id; } public long getProductID() { return productID; } public void setProductID(long productID) { this.productID = productID; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public int getTotalprice() { return totalprice; } public void setTotalprice(int totalprice) { this.totalprice = totalprice; } //数量加一的方法 public void incrCount(){ count++; this.totalprice=price*count; } //数量减一的方法 public boolean decrCount(){ count--; this.totalprice=price*count; if(0==count){ return true; } return false; } }
package com.imooc.cart.data; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 本地缓存 */ public class LocalCache { private static Map<Long,Product> productMap=new HashMap<>(); private static Map<Long,Cart> cartMap=new HashMap<>(); static { productMap.put(1l, new Product(1l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(2l, new Product(2l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(3l, new Product(3l, "JAVA", "JAVA基础课程-基本语法", "介绍java基本语法特性及编写规范", "初级", 219)); productMap.put(4l, new Product(4l, "JAVA", "JAVA基础课程-JDBC", "介绍JDBC方式连接数据库", "初级", 219)); productMap.put(5l, new Product(5l, "JAVA", "JAVA基础课程—Socket", "介绍Java网络编程Socket", "初级", 219)); productMap.put(6l, new Product(6l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(7l, new Product(7l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(8l, new Product(8l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(9l, new Product(9l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(10l, new Product(10l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(11l, new Product(11l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(12l, new Product(12l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(13l, new Product(13l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(14l, new Product(14l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(15l, new Product(15l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(16l, new Product(16l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(17l, new Product(17l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(18l, new Product(18l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(19l, new Product(19l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(20l, new Product(20l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(21l, new Product(21l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(22l, new Product(22l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(23l, new Product(23l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(24l, new Product(24l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); productMap.put(25l, new Product(25l, "HTML/CSS", "HTML+CSS基础课程", "HTML+CSS基础教程8小时带领大家步步深入学习标签用法和意义", "初级", 219)); } public static List<Product> getProducts(){ return new ArrayList<>(productMap.values()); } public static List<Cart> getCarts(){ return new ArrayList<>(cartMap.values()); } public static Product getProduct(Long id){ return productMap.get(id); } public static void incrCart(Long productID){ cartMap.get(productID).incrCount(); } public static void decrCart(Long productID){ } //加入到购物车的方法 public static void addCart(Product product){ if(!cartMap.containsKey(product.getId())){ cartMap.put(product.getId(),new Cart(product.getId(),product.getId(),product.getName(),product.getPrice(),1)); }else{ incrCart(product.getId()); } } }
package com.imooc.cart.servlet; import com.imooc.cart.data.LocalCache; import com.imooc.cart.data.Product; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Objects; public class CartServlet extends HttpServlet { @Override public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { if(Objects.equals("/cart/cart.do",req.getServletPath())){ String productID=req.getParameter("productID"); if(null!=productID){ Product product= LocalCache.getProduct(Long.valueOf(productID)); LocalCache.addCart(product); } res.sendRedirect("/cart/list.do"); }else if(Objects.equals("/cart/list.do",req.getServletPath())){ req.setAttribute("carts",LocalCache.getCarts()); req.getRequestDispatcher("/WEB-INF/views/biz/cart.jsp").forward(req,res); } } }
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <html> <head> <meta charset="UTF-8"> <title>购物车</title> <link rel="stylesheet" href="../../../css/shopcar.css"> </head> <body> <!-- header区域 --> <header class="header"> <div class="logo"></div> <div class="nav"> <a href="/product/list.do" class="nav__item">课程</a> <a href="" class="nav__item nav__item_icon_new">职业路径<i class="icon_new"></i></a> <a href="" class="nav__item">实战</a> <a href="" class="nav__item">猿问</a> <a href="" class="nav__item">手记</a> </div> <div class="profile"> <a href="/cart/list.do" class="profile__item profile__car"></a> <a href="/browse/list.do" class="profile__item profile__message"></a> <a href="" class="profile__item profile__ava"></a> </div> <div class="search"><input type="text" class="search_input"><a href="" class="search_submit"></a></div> </header> <!-- banner区域 --> <div class="banner"> <div>我的购物车</div> </div> <!-- goods区域 --> <form action="/cart/settlement.do" id="cartBody"> <div class="cart-panel"> <div class="hd"> <ul class="order-title"> <li><input type="checkbox" class="check-all"><span>全选</span></li> <li class="product">商品名称</li> <li class="total-price">总价</li> <li class="unit-price">单价</li> <li class="number">数量</li> <li class="operate">操作</li> </ul> </div> <div class="bd"> <!-- 购物车列表 --> <c:forEach items="${carts}" var="cart"> <ul class="order-list"> <li><input type="checkbox" class="check" checked ></li> <input type="hidden" name="carts" value="${cart.id}"> <li class="img-box"> <a href="http://www.imooc.com"> <img src="../../../img/g1.jpg" alt=""> </a> </li> <li class="product"> <a href="http://www.imooc.com"> <span>${cart.name}-${cart.id}</span> </a> </li> <li class="total-price"> <span class="price-sign"></span> <span class="price-num"><fmt:formatNumber value="${cart.totalPrice}" type="currency"/></span> </li> <li class="unit-price"> <span class="price-sign"></span> <span class="price-num"><fmt:formatNumber value="${cart.price}" type="currency"/></span> </li> <li class="number"> <div class="input-num"> <a href="/cart/decr.do?productId=${cart.productId}">-</a> <input type="text" value="${cart.count}" class="num"> <a href="/cart/incr.do?productId=${cart.productId}">+</a> </div> </li> <li class="operate"><a href="/cart/delete.do?productId=${cart.id}">删除</a></li> </ul> </c:forEach> </div> </div> <!-- 结算栏 --> <div class="pay-bar"> <%--<div class="pay-info">--%> <%--<div class="price">--%> <%--<span class="price-sign">¥</span>--%> <%--<span class="price-num pay-money"></span>--%> <%--</div>--%> <%--<span>应付金额:</span>--%> <%--</div>--%> <button>去结算</button> </div> </form> <!-- footer区域 --> <footer class="footer"> <div class="waper"> <div class="footerWaper"> <div class="followus"> <a href="" class="followus_weixin"><div class="flw-weixin-box"></div></a> <a href="" class="followus_weibo"></a> <a href="" class="followus_qzone"></a> </div> <div class="footer_intro"> <div class="footer_link"> <ul> <li><a href="">网站首页</a></li> <li><a href="">企业合作</a></li> <li><a href="">人才招聘</a></li> <li><a href="">联系我们</a></li> <li><a href="">讲师招募</a></li> <li><a href="">常见问题</a></li> <li><a href="">意见反馈</a></li> <li><a href="">慕课大学</a></li> <li><a href="">友情链接</a></li> </ul> </div> <p>Copyright © 2017 imooc.com All Rights Reserved | 京ICP备 13046642号-2</p> </div> </div> </div> </footer> </body> <script src="./js/shopcar.js"></script> </html>
0
收起
正在回答
4回答
你好,测试了你的代码确实是无法显示,具体原因如下:
如下图所示,在list.jsp页面中你传递的参数键值为productId.
而你在CartServlet中接收的键值为productID所以无法显示数据,
另外建议同学如果想测试哪个功能的话,可以自己跟踪一下参数的值,譬如这个问题,你可以在CartServlet中打印一下productID的值,如果为null就证明是前后台数据传输出了问题,自己解决bug对程序员提高水平是很重要的哦,祝学习愉快~
chrismorgen
2018-11-16 10:08:45
同学是指什么没有反应呢?是将商品添加到购物车之后,点击去结算没有反应吗?如果是,你的CartServlet中并没有写结算的处理逻辑,所以你点击去结算也是没有反应的,建议同学可以根据课程内容来完成结算的请求处理逻辑,然后再试一试,如果有什么不明白的地方可以再次提问哦,祝学习愉快~
精慕门6573819
2018-11-16 08:41:33
chrismorgen
2018-11-15 17:17:11
你好同学,截图中的报错是没有问题的,如下图所示,是找不到shopcar.js文件了,在项目中是没有给出js文件的。
同学可以将下图标记的代码注释掉就可以了,祝学习愉快~
从网页搭建入门Java Web2018版
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10205 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星