###Jsp+Servlet购物商城day03.1:商品添加到购物车。重点笔记
2017-09-12 18:02
666 查看
商品添加到购物车:
功能入口:商品详情页面productInfo.jsp,“加到购物车”按钮,
功能出口:购物车信息页面cart.jsp
①功能入口:商品详情页面productInfo.jsp,“加到购物车”按钮,
②CartServlet:
根据cart地址 访问对应的】//request.getSession().setAttribute("cart", cart);//====【没有这句话,session也能自动更新购物车条目。原因如上】return "/cart.jsp";}*///===self==okpublic String delItem(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { //CartServlet?method=delItem&pid=${pro.pid}
String pid = request.getParameter("pid");Cart cart = (Cart) request.getSession().getAttribute("cart");Map<String, CartItem> items = cart.getItemsMap();items.remove(pid);request.getSession().setAttribute("cart",cart);return "/cart.jsp";}public static void main(String[]
args) {String pid = "1";int count = 3;try {//1ProductService ps = new ProductServiceImpl();Product pro = ps.findByPid(pid);// System.err.println(pro);//2CartItem cartItem = new CartItem();cartItem.setPro(pro);cartItem.setCount(count);Cart cart = new Cart();cart.addCartItem(cartItem);//request.setAttribute("cart",
cart);System.out.println(cart);} catch (Exception e) {e.printStackTrace();}}}
③功能入口:商品详情页面productInfo.jsp,“加到购物车”按钮,
功能入口:商品详情页面productInfo.jsp,“加到购物车”按钮,
功能出口:购物车信息页面cart.jsp
①功能入口:商品详情页面productInfo.jsp,“加到购物车”按钮,
<div style="margin:0 auto;width:950px;"> <div class="col-md-6"> <img style="opacity: 1;width:400px;height:350px;" title="" class="medium" src="${pageContext.request.contextPath}/${pro.pimage}"> </div> <div class="col-md-6"> <div><strong>${pro.pname }</strong></div> <div style="border-bottom: 1px dotted #dddddd;width:350px;margin:10px 0 10px 0;"> <div>商品编号:${pro.pid }</div> </div> <div style="margin:10px 0 10px 0;">商城价: <strong style="color:#ef0101;">¥:${pro.shop_price }</strong> 市场价: <del>¥${pro.market_price }</del> </div> <div style="margin:10px 0 10px 0;">促销: <a target="_blank" title="限时抢购 (2014-07-30 ~ 2015-01-01)" style="background-color: #f07373;">限时抢购</a> </div> <div style="padding:10px;border:1px solid #e7dbb1;width:330px;margin:15px 0 10px 0;;background-color: #fffee6;"> <div style="margin:5px 0 10px 0;">颜色分类</div> <!-- ======【地址栏有哪些参数?===业务熟练。】 --> <form action="${pageContext.request.contextPath}/CartServlet?method=addCart&pid=${pro.pid}" method="post"> <div style="border-bottom: 1px solid #faeac7;margin-top:20px;padding-left: 10px;">购买数量: <input id="count" name="count" value="1" maxlength="4" size="10" type="text"> </div> <div style="margin:20px 0 10px 0;;text-align: center;"> <input style="background: url('${pageContext.request.contextPath}/images/product.gif') no-repeat scroll 0 -600px rgba(0, 0, 0, 0);height:36px;width:127px;" value="加入购物车" type="submit"> 收藏商品</div> </div> </form> </div> </div>
②CartServlet:
package cn.itcast.servlet; import java.io.IOException; import java.sql.SQLException; import java.util.Collection; import java.util.LinkedHashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.itcast.domain.Cart; import cn.itcast.domain.CartItem; import cn.itcast.domain.Product; import cn.itcast.service.ProductService; import cn.itcast.service.impl.ProductServiceImpl; public class CartServlet extends BaseServlet { private static final long serialVersionUID = 1L; public String addCart(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /* CartServlet?method=addCart&pid=${pro.pid} */ String pid = request.getParameter("pid"); int count = Integer.parseInt(request.getParameter("count")); //判断是不是第一次登录, Cart c = (Cart) request.getSession().getAttribute("cart"); try { if (c==null) { c = new Cart(); } //1 ProductService ps = new ProductServiceImpl(); Product pro = ps.findByPid(pid); //2 CartItem cartItem = new CartItem(); cartItem.setPro(pro); cartItem.setCount(count); c.addCartItem(cartItem); } catch (Exception e) { e.printStackTrace(); } request.getSession().setAttribute("cart", c); return "/cart.jsp"; } public String delAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*//==teacher request.getSession().removeAttribute("cart"); return "/cart.jsp"; */ /* CartServlet?method=delAll */ //判断是不是第一次登录, Cart c = (Cart) request.getSession().getAttribute("cart"); if (c==null) { return "/cart.jsp"; } request.getSession().setAttribute("cart", null); return "/cart.jsp"; } //===ok(teacher) /* public String delItem(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //CartServlet?method=addCart&pid=${pro.pid} String pid = request.getParameter("pid"); Cart cart = (Cart) request.getSession().getAttribute("cart"); cart.delByPid(pid); //==######=不用更新session,购物车条目也能更新原因:【内存中应用对象之间的依赖,根据地址值(变量名--所谓引用)依赖】。
==###===这里。假如购物车存在数据库而不是session,那么,每次删除一个购物车条目时, 就必须更新session:【session.setAttribute("cart",cart)】, 才能保证页面购物车条目显示更新。 】===【session里存的是 引用(地址值),remove之后,session存的地址(cart变量)是不变的,访问session再去访问存的地址对应的对象值时,值就已经变了。===依赖的应用类型改变,自动改变】===【存储关系,实际是依赖关系。】===那么product.setCategory(category)为什么存的是对象?==因为存到磁盘了。持久化了。【内存和磁盘有本质区别:①内存:栈内存、堆内存===一般程序运行结束会释放内存:(session的生命周期未到期,也是在【磁盘】中持久化了一个session"备份"---查看监听器:session的钝化和激活));②磁盘:涉及到数据持久化(物理存在)。product.setCategory(category)存的是对象,说的是存入数据库持久化了。==###===这里。假如购物车存在数据库而不是session,那么,每次删除一个购物车条目时,就必须更新session:【session.setAttribute("cart",cart)】,才能保证页面购物车条目显示更新。】==######=Session本身是一个Map对象,【session看做是运行中内存中临时创建的Map对象,Map引用到其他《内存中的》引用对象(这里是cart),存的是cart的堆内存地址;cart改变,下次session
根据cart地址 访问对应的】//request.getSession().setAttribute("cart", cart);//====【没有这句话,session也能自动更新购物车条目。原因如上】return "/cart.jsp";}*///===self==okpublic String delItem(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { //CartServlet?method=delItem&pid=${pro.pid}
String pid = request.getParameter("pid");Cart cart = (Cart) request.getSession().getAttribute("cart");Map<String, CartItem> items = cart.getItemsMap();items.remove(pid);request.getSession().setAttribute("cart",cart);return "/cart.jsp";}public static void main(String[]
args) {String pid = "1";int count = 3;try {//1ProductService ps = new ProductServiceImpl();Product pro = ps.findByPid(pid);// System.err.println(pro);//2CartItem cartItem = new CartItem();cartItem.setPro(pro);cartItem.setCount(count);Cart cart = new Cart();cart.addCartItem(cartItem);//request.setAttribute("cart",
cart);System.out.println(cart);} catch (Exception e) {e.printStackTrace();}}}
③功能入口:商品详情页面productInfo.jsp,“加到购物车”按钮,
<tbody> <tr class="warning"> <th>图片</th> <th>商品</th> <th>价格</th> <th>数量</th> <th>小计</th> <th>操作</th> </tr> <!-- cart.items.pro.pid====不能多级取值?可以。 但是c:forEach 遍历项 必须在items下填写。直接取值Pro是不确定的。所以报错。 所以删除某个购物项,购物项的id(也就是pid),必须在循环体里 传递出去。(onClick事件 js函数传递参数!!) 循环体外部直接取购物项id不确定,会报错。 --> <c:forEach var="item" items="${cart.items}" > <tr class="active"> <td width="60" width="40%"> <input type="hidden" name="id" value="22"> <img src="${pageContext.request.contextPath}/${item.pro.pimage}" width="70" height="60"> </td> <td width="30%"> <a target="_blank"> ${item.pro.pname}</a> </td> <td width="20%"> ¥${item.pro.shop_price} </td> <td width="10%"> <input type="text" name="quantity" value="${item.count }" maxlength="4" size="10"> </td> <td width="15%"> <span class="subtotal">¥${item.total}</span> </td> <!-- <td> <input type="button" value="删除" class="btn btn-danger" onclick="del()"/> </td> --> <td> <input type="button" value="删除" class="btn btn-danger" onclick="del(${item.pro.pid})"/> </td> </tr> </c:forEach> </tr> </tbody>
==###===这里。假如购物车存在数据库而不是session,那么,每次删除一个购物车条目时, 就必须更新session:【session.setAttribute("cart",cart)】, 才能保证页面购物车条目显示更新。 】
相关文章推荐
- ###Jsp+Servlet购物商城day03.2:生成订单。重点笔记
- ###Jsp+Servlet购物商城day02.2:首页显示 最新和热门商品
- 商城项目笔记1,顶层商品类别的添加(注意JSP,Bean,DAO,DB的分层书写结构)
- ###Jsp+Servlet购物商城day02.3:分页显示商品
- 用jsp实现一个简单的购物车web应用系统。实现的添加购物商品,删除购物商品并且显示购物车信息。
- JavaWeb学习记录(十四)——商城购物之字符串拼接实现最近浏览商品和购物车的功能
- Servlet 4 JSP EL Cookie Session 商品浏览记录案例 购物车案例
- ###Jsp+Servlet购物商城day03.3:生成订单。【重中之重:保存多表信息】:使用事物,dao两个方法分别插入主表和从表信息。
- ###Jsp+Servlet购物商城day04.1:显示订单。【重中之重:查询3张表信息,封装到Order】
- iOS实现自定义购物车角标显示购物数量(添加商品时角标抖动 Vie)
- Asp.NET网上商城向购物车添加新商品
- ###Jsp+Servlet购物商城day04.3:订单模块Order实体设计失误。【Bean属性设计两大原则】-MyBeanUtils使用注意事项。
- ###Jsp+Servlet购物商城day04.2:订单模块难点总结。【购物商城最大的难点:【封装一个Order对象】查询封装三张表】
- ###Jsp+Servlet购物商城day02.1: 页面加载完,导航栏显示分类信息。(在公共页面head.jsp)
- ###Jsp+Servlet购物商城day04.5:支付:订单支付遇到的问题总结。
- ###Jsp+Servlet购物商城day04.4:订单模块 【页面双层遍历】 显示本页所有订单。bootstrap分页下标。
- 16款购物商城添加购物车源码特效
- 一个购物车添加商品程序(java+ajax+servlet)
- 网上图书商城项目学习笔记-013 添加购物车及我的购物车
- Maven添加servlet、jsp依赖