案例:实现在购物车中添加商品和删除购物车中指定商品的功能

article/2025/9/18 10:18:15

一、向购物车中添加商品

1.1.创建AddCartServlet

public class AddCartServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}@SuppressWarnings("unchecked")public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 1.得到商品idString id = request.getParameter("id");// 2.调用service层方法,根据id查找商品ProductService service = new ProductService();try {Product p = service.findProductById(id);//3.将商品添加到购物车//3.1获得session对象HttpSession session = request.getSession();//3.2从session中获取购物车对象Map<Product, Integer> cart = (Map<Product, Integer>)session.getAttribute("cart");//3.3如果购物车为null,说明没有商品存储在购物车中,创建出购物车if (cart == null) {cart = new HashMap<Product, Integer>();}//3.4向购物车中添加商品Integer count = cart.put(p, 1);//returns: the previous value associated with key, or null if there was no mapping for key.//3.5如果商品数量不为空,则商品数量+1,否则添加新的商品信息if (count != null) {cart.put(p, count + 1);}			session.setAttribute("cart", cart);response.sendRedirect(request.getContextPath() + "/client/cart.jsp");return;} catch (FindProductByIdException e) {e.printStackTrace();}}
}

1.2.编写购物车页面cart.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="p" uri="http://www.itcast.cn/tag"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>电子书城</title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/client/css/main.css" type="text/css" />
<script>//当商品数量发生变化时触发该方法function changeProductNum(count, totalCount, id) {count = parseInt(count);totalCount = parseInt(totalCount);//如果数量为0,判断是否要删除商品if (count == 0) {var flag = window.confirm("确认删除商品吗?");if (!flag) {count = 1;}}if (count > totalCount) {alert("已达到商品最大购买量");count = totalCount;}location.href = "${pageContext.request.contextPath}/changeCart?id="+ id + "&count=" + count;}//删除购物车中的商品function cart_del() {   var msg = "您确定要删除该商品吗?";   if (confirm(msg)==true){   return true;   }else{   return false;   }   }   
</script>
</head>
<body class="main"><p:user/><jsp:include page="head.jsp" /><jsp:include page="menu_search.jsp" /><div id="divpagecontent"><table width="100%" border="0" cellspacing="0"><tr><td><div style="text-align:right; margin:5px 10px 5px 0px"><a href="${pageContext.request.contextPath }/index.jsp">首页</a>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;购物车</div><table cellspacing="0" class="infocontent"><tr><td><img src="${pageContext.request.contextPath}/client/ad/page_ad.jpg" width="900" height="89" /><table width="100%" border="0" cellspacing="0"><tr><td><img src="${pageContext.request.contextPath}/client/images/buy1.gif" width="635" height="38" /></td></tr><tr><td><table cellspacing="1" class="carttable"><tr><td width="10%">序号</td><td width="30%">商品名称</td><td width="10%">价格</td><td width="20%">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数量</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="100%" border="0" cellspacing="0"><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="changeProductNum('${entry.value-1}','${entry.key.pnum}','${entry.key.id}')"><!-- 商品数量显示 --><input name="text" type="text" value="${entry.value}" style="width:40px;text-align:center" /><!-- 增加商品数量 --><input type="button" value='+' style="width:20px"onclick="changeProductNum('${entry.value+1}','${entry.key.pnum}','${entry.key.id}')"></td><td width="10%">${entry.key.pnum}</td><td width="10%">${entry.key.price*entry.value}</td><td width="10%"><!-- 删除商品 --><a href="${pageContext.request.contextPath}/changeCart?id=${entry.key.id}&count=0"style="color:#FF0000; font-weight:bold" onclick="javascript:return cart_del()">X</a></td></tr></table><c:set value="${total+entry.key.price*entry.value}" var="total" /></c:forEach><table cellspacing="1" class="carttable"><tr><td style="text-align:right; padding-right:40px;"><font style="color:#FF6600; font-weight:bold">合计:&nbsp;&nbsp;${total}元</font></td></tr></table><div style="text-align:right; margin-top:10px"><!--继续购物 --><a href="${pageContext.request.contextPath}/showProductByPage"><img src="images/gwc_jx.gif" border="0" /></a>&nbsp;&nbsp;&nbsp;&nbsp;<!--结账 --><a href="${pageContext.request.contextPath}/client/order.jsp"><img src="${pageContext.request.contextPath}/client/images/gwc_buy.gif" border="0" /></a></div></td></tr></table></td></tr></table></td></tr></table></div><jsp:include page="foot.jsp" />
</body>
</html>

二、删除购物车中指定商品

创建ChangeCartServlet

/*** 购物车内容变更* @author admin**/
public class ChangeCartServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 1.得到商品idString id = request.getParameter("id");// 2.得到要修改的数量int count = Integer.parseInt(request.getParameter("count"));// 3.从session中获取购物车.HttpSession session = request.getSession();Map<Product, Integer> cart = (Map<Product, Integer>) session.getAttribute("cart");Product p = new Product();p.setId(id);if (count != 0) {cart.put(p, count);} else {cart.remove(p);}response.sendRedirect(request.getContextPath() + "/client/cart.jsp");return;}
}

http://chatgpt.dhexx.cn/article/RDJKeCsP.shtml

相关文章

14.商品添加功能

商品用例的bean层 添加商品的用例实现首先要有封装商品的bean&#xff0c;还要有封装商品种类的bean。 封装商品种类的bean package cn.bingou.domain;/*** 商品种类的bean* author 吹静静**/ public class ProdCategory {private int id;private String cname;public ProdCate…

二十三、商城 - 商品录入-新增商品(11)

目录 &#x1f33b;&#x1f33b; 一、商品录入【选择商品分类】1.1 需求分析1.2 准备工作1.3 代码实现1.3.1 一级分类下拉选择框1.3.2 二级分类下拉选择框1.3.3 三级分类下拉选择框1.3.4 读取模板ID 二、商品录入【品牌选择】2.1 需求分析2.2 代码实现 三、商品录入【扩展属性…

java添加功能_商品添加功能的实现

返回的结果&#xff1a; package com.taotao.common.utils; import java.util.List; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; /** * 淘淘商城自定义响应结构 */ public class TaotaoResult { // 定义jackson对象…

把商品添加到购物车的方法

因为抢华为荣耀的缘故&#xff0c;研究了下京东添加商品到购物车的方法&#xff0c;具体步骤如下 一&#xff1a;打开商品页面&#xff0c;找到商品的id 例如这个商品的id就是1056970 二&#xff1a;把链接里面的http://gate.jd.com/InitCart.aspx?pid###&pcount1&pt…

php 商品模块添加商品属性,添加新商品

进入添加商品页后&#xff0c;如图1&#xff0c;2 添加新商品 图1 图2 促销价格前台表现 图3 图4 图5 附加价格前台表现 图6 添加新商品 图7 配件和关联商品前台表现形式 图8 图9 通用信息商品分类&#xff1a;商品分类是必填项&#xff0c;用于帮助客户找到需要的商品。如果您…

添加商品

添加商品 步骤分析: 1.在index.jsp添加一个超链接 跳转到add.jsp 2.add.jsp放入一个表单 3.表单提交到 AddProductServlet 封装数据 调用service完成保存操作 跳转到FindAllServlet (请求转发和重定向) 有表单使用的时候若使用请求转发会出现重复提交 方案1:重定向 …

十七、商品添加

&#xff08;1&#xff09;通过编程式导航跳转到商品添加页面 1. 在List.vue页面。点击添加商品&#xff0c;实现页面跳转 2. 创建商品添加组件Add.vue 3. 为Add组件添加路由 &#xff08;2&#xff09; 渲染添加页面的基本UI结构 使用到Alter警告和Steps 步骤条组件 1. 引入…

(三十)商品管理-添加商品(上传图片)

&#xff08;三十&#xff09;商品管理-添加商品(上传图片) 添加商品(上传图片)1.修改页面上添加连接/store/adminProduct?methodaddUI2.在addUI请求转发到 添加页面3.在表单页面上修改action : /store/addProductServlet提交方式: method"post"添加enctype属性: e…

【VUE项目实战】56、商品添加功能(六)-提交添加的商品

接上篇《55、商品添加功能&#xff08;五&#xff09;-商品内容模块》 上一篇我们完成了商品内容编辑模块的开发&#xff0c;也即是完成了商品所有的信息编辑&#xff0c;本篇我们就来开发提交商品所有信息到后台的功能。 一、要实现的效果 我们要实现点击“添加商品”的按钮…

淘淘商城第30讲——实现商品添加功能

经过上文的学习&#xff0c;我相信大家都应该知道了富文本编辑器的使用方法&#xff0c;我们能走到这步&#xff0c;实属不易&#xff0c;本文终于可以来实现商品添加这个功能了。 在item-add.jsp页面当中&#xff0c;当点击提交按钮后&#xff0c;会触发submitForm方法&#…

密码登录

利用idea实现密码的输入 首先我们要先新建一个页面用于输入账号密码 req.setCharacterEncoding("UTF-8");String LoginNamereq.getParameter("LoginName");String LoginPwdreq.getParameter("LoginPwd");String msg"请输入密码";priva…

SQL Server安全:登录和用户

SQL Server安全&#xff1a;登录和用户 前言 建议配合sql server登录名、服务器角色、数据库用户、数据库角色、架构区别联系一起看。 授予 Principal &#xff08;安全主体&#xff09;操作 Securable&#xff08;安全对象&#xff09; 的 Permission&#xff08;权限&…

springboot-security安全登录

一个简单的security安全登录示例 配置环境 添加pom依赖坐标 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.6.RELEASE</version></parent><depe…

如何设计一个安全的登录接口?

Java技术栈 www.javastack.cn 关注阅读更多优质文章 作者&#xff1a;哒哒哒哒打代码链接&#xff1a;juejin.im/post/6859214952704999438 前言 大家学写程序时&#xff0c;第一行代码都是hello world。 但是当你开始学习WEB后台技术时&#xff0c;很多人的第一个功能就是写的…

[OS-Linux] CentOS 7.x 安全登录策略设置

简介 之前用用户名和密码登陆服务器 这样不安全 &#xff0c;用SSH公钥(public key)验证 这个办法能很好的解决 登陆服务器 和安全登陆服务器的特点&#xff1a; 方法 / 步骤 &#x1f510; 一: 证书生成 命令行页面生成 (推荐) 查看执行结果&#xff0c;这时候连续回车即可…

开启QQ登录保护仍被盗号——QQ安全机制全面分析

1、前言 周围总是有些同学QQ被盗号&#xff0c;攻击者盗取账号后会继续去欺骗列表里的好友&#xff0c;形成链式反应。危害比较大。 腾讯QQ安全中心提供了登录保护机制&#xff0c;如图&#xff1a; 这是腾讯为QQ添加第二层保护&#xff0c;在开启登录保护后&#xff0c;盗号者…

使用 PHP 和 MySQL 的安全登录系统

Secure Login System with PHP and MySQL 在本教程中&#xff0c;我将教您如何创建自己的安全 PHP 登录系统。登录表单是您网站的访问者可以用来登录您的网站以访问受限内容&#xff08;例如个人资料页面&#xff09;的表单。我们将利用 MySQL 从数据库中检索帐户数据。 高级…

使用腾讯企业邮箱为什么强烈建议启用安全登录?怎么启用?

腾讯企业邮箱开启安全登录&#xff0c;简单来说就是把企业邮箱账号和微信绑定。启用安全登录和关闭安全登录&#xff0c;主要是登录方式发生了变化。 登录方式&#xff1a; 登录启用前启用后网页端邮箱帐号密码登录/微信扫码登录仅支持微信扫码登录客户端邮箱帐号密码登录仅…

登录安全----双重MD5加密实现安全登录

个人简介&#xff1a; &#x1f4e6;个人主页&#xff1a;肇事司机赵四 &#x1f3c6;学习方向&#xff1a;JAVA后端开发 &#x1f4e3;种一棵树最好的时间是十年前&#xff0c;其次是现在&#xff01; &#x1f9e1;喜欢的话麻烦点点关注喔&#xff0c;你们的支持是我的最大动…

http登录模块加密登录安全登录方法

http请求很容易被截获&#xff0c;在写登录模块时&#xff0c;直接使用明文密码请求&#xff0c;很容易明文密码泄露&#xff1b;若在js页面对密码进行一次加密后在传输&#xff0c;虽不是明文密码&#xff0c;但也完全可以截获加密后的暗文&#xff0c;伪造http请求进行登录。…