<a href="AddCart?id=${b.id}"><button class="btn btn-default">加入购物车<span class="glyphicon glyphicon-shopping-cart"></span></button></a>

商品详情页选中“加入购物车”后跳到AddCart

public class AddCart extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String id=request.getParameter("id");ProductService ps=new ProductService();Book b=ps.findBookById(id);HttpSession session=request.getSession();//从session中获取购物车对象Map<Book,Integer> cart=(Map<Book,Integer>)session.getAttribute("cart");//如果购物车为空,说明没有商品存储在购物车中,创建除购物车if(cart==null) {cart=new HashMap<Book,Integer>() ; }//向购物车添加商品数量信息Integer count=cart.put(b, 1);//如果商品数量不为空,则商品数量+1,否则添加新的商品信息if(count!=null) {cart.put(b, count+1);}  session.setAttribute("cart", cart);request.getRequestDispatcher("cart.jsp").forward(request, response);;}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

以map集合存储Book对象还有购买数量,并且新建购物车,存进session中

 <script type="text/javascript">function changeNum(id,num,totalCount){num = parseInt(num);totalCount =parseInt(totalCount);if(num<1){if(confirm("是否确认要删除此商品?")){num = 0;}else{num=1;}}if(num>totalCount){alert("购买数量不能大于库存数量!");num=totalCount;}location.href="${pageContext.request.contextPath}/ChangeNumServlet?id="+id+"&num="+num;}</script>
<table cellpadding="1" style="width: 80%; height: auto;border:1px #8B0000 solid;text-align:center;margin-left:150px;"><tr><td width="10%"> 序号</td><td width="30%"> 商品名称</td><td width="10%">价格</td><td width="20%"> 数量</td><td width="10%">库存</td><td width="10%">小计</td><td width="10%">取消</td></tr></table><!-- 循环输出商品信息 --><c:set var="total" value="0"/><c:forEach items="${cart}" var="entry" varStatus="vs"><table width="80%" border="0" cellspacing="0" style="margin-left:150px;text-align:center"><tr><td width="10%">${vs.count}</td><td width="30%">${entry.key.name}</td><td width="10%">${entry.key.price }</td><td width="20%"><!-- 减少商品数量 -->、               <input type="button" value='-' style="width:20px" onclick="changeNum('${entry.key.id}','${entry.value-1 }','${entry.key.pnum }')"><!-- 商品数量显示 --><input name="text" type="text" value="${entry.value}" style="width:40px;text-align:center"><!-- 添加商品数量 --><input type="button" value='+' style="width:20px" onclick="changeNum('${entry.key.id}','${entry.value+1 }','${entry.key.pnum }')">        </td><td width="10%">${entry.key.pnum}</td><td width="10%">${entry.key.price*entry.value}</td><td width="10%"><!-- 删除商品 -->、            <a href="ChangeNumServlet?id=${entry.key.id}&num=0" style="color: #FF0000; font-weight: bold">X</a></td></tr></table><c:set value="${total+ entry.key.price*entry.value}" var="total"/></c:forEach><br><!-- 合计信息 --><table style="margin-left:1000px"><tr><td><font style="color: #FF6600; font-weight: bold">合计:  ${total}元</font></td></tr></table><br><br><br><div style="padding-left:690px;"><a href="index.jsp"><button class="btn btn-info">继续购物</button></a><a href="order.jsp"><button class="btn btn-default">立即买单</button></a></div>  
public class ChangeNumServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String id = request.getParameter("id");int num = Integer.parseInt(request.getParameter("num"));HttpSession session = request.getSession();Map<Book, Integer> cart = (Map<Book, Integer>) session.getAttribute("cart");ProductService ps=new ProductService();Book b=ps.findBookById(id);//如果商品数据为0,就删除对象if(num==0) {cart.clear();}else {cart.clear();cart.put(b, num);}request.getRequestDispatcher("cart.jsp").forward(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

通过id找到对应的book对象后,从session中取出集合,要先清空集合再重新存键值(书和购买数量进去),不清空就会导致一会的cart页面出现多行从购物车里遍历取出来的数据

jsp+servlet实现商城购物车功能相关推荐

  1. 基于vue2.0打造移动商城页面实践 vue实现商城购物车功能 基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果...

    基于vue2.0打造移动商城页面实践 地址:https://www.jianshu.com/p/2129bc4d40e9 vue实现商城购物车功能 地址:http://www.jb51.net/art ...

  2. JAVAWEB使用JSP+Servlet实现商品管理功能,后台为数据库,功能包括商品信息浏览、商品信息详情、商品信息删除及修改。

    商品管理功能 一.功能介绍 1.1显示 1.2商品详情 1.3新增 1.4修改 1.5删除 二.数据库语句 三.项目结构 四.java代码 4.1Good类 4.2 Charge类 4.3GoodDa ...

  3. jq 移动端网页分享功能_jQuery实现移动端手机商城购物车功能

    购物车数量加减 右加号 数量 t.val(parseInt(t.val()) + 1);//parseInt()解析input一个字符串,返回一个整数 heji();//调用后面计算的函数 }) 左减 ...

  4. 基于jsp+javabean+servlet的二手物品交易系统_基于Jsp+Servlet的商城系统

    今天给大家演示一款由jsp+servlet+MySQL实现的在线商城系统,本系统实现了管理员管理用户.商品(商品分类).订单.留言.新闻等功能,前台会员注册登录,查看商品信息,加入商品到购物车.提交订 ...

  5. 编程小白的计算机毕业设计指导开发教程-JSP+Servlet实现注册登陆功能

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  6. jsp+servlet学子商城项目--servlet、dao层的各项练习

    Login的登录项目完成传值,select语句索引 UserDao.java /*** 根据用户名查询* @param name:表示用户名* @return如果用户名存在,封装成对象返回* 否则返回 ...

  7. 购物商城框架java_基于jsp的购物商城-JavaEE实现购物商城 - java项目源码

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的购物商城, 该项目可用各类java课程设计大作业中, 购物商城的系统架构分为前后台两部分, 最终实现在线上进行购物 ...

  8. 二手商城java 源码_基于jsp的二手商城-JavaEE实现二手商城 - java项目源码

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的二手商城, 该项目可用各类java课程设计大作业中, 二手商城的系统架构分为前后台两部分, 最终实现在线上进行二手 ...

  9. java实现电子商城报告_基于jsp的电子商城-JavaEE实现电子商城 - java项目源码

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的电子商城, 该项目可用各类java课程设计大作业中, 电子商城的系统架构分为前后台两部分, 最终实现在线上进行电子 ...

最新文章

  1. Paddle网络结构中的层和模型
  2. 「百度@了所有车企」:Apollo自动驾驶商用上岗,欢迎上车
  3. DLINQ *.dbml文件该属于哪一层
  4. minecraft666java_我的世界的666的世界
  5. 程序猿的节日:1024,今天祝愿全球所有程序猿们、IT精英们节日快乐!——我在上海写代码
  6. 迅雷CEO陈磊出席深圳IT领袖峰会 解析区块链未来布局
  7. Web笔记-移动前端开发笔记
  8. Hbase的伪分布式安装
  9. iptables用法简介
  10. 后台cs代码控制html控件,cshtml中正则表达式使用后台代码
  11. 用户自定义变量、系统变量、环境变量
  12. 谷粒学院-第二天笔记
  13. cad无法安装_装机必备!免安装CAD迷你看图特别版PC软件
  14. Eclipse保护色设置
  15. NetCore3.1开发后台管理系统框架思路与实现
  16. 秋名山老司机(bugku-web)
  17. IE的Kiosk模式
  18. 传统蓝牙base on pincode配对以及安全简单配对(Secure Simple Pairing)流程介绍
  19. Android笔记:将布局转换成图片
  20. 【计算机毕业设计】248高校奖学金管理系统

热门文章

  1. java基础系列(四)UTF-8和GBK编码的区别
  2. > 《物联网技术与应用》课程学习笔记
  3. 网络设备(交换机、路由器、集线器)
  4. TCP和UDP的区别有哪些
  5. WebSestalt,好用的富集分析工具,介绍及使用教程
  6. 微型计算机原理与接口技术——8086指令系统之数据传送指令
  7. 趣图:深度学习之大炮打蚊子
  8. Android系统:如何开启或隐藏Navigation Bar导航 栏
  9. getline()函数详解
  10. Python带你了解数据结构【二】