IDEA(2020版)sevlet+session实现购物车功能

news/2025/12/4 17:21:33/文章来源:https://www.cnblogs.com/longkui-site/p/19308475

IDEA(2020版)sevlet+session实现购物车功能

查看全文:IDEA(2020版)sevlet+session实现购物车功能 – 每天进步一点点


 

【任务目标】

通过所学Session知识以及购物车的访问流程,以购买蛋糕为例,模拟实现购物车功能。

源代码下载(访问密码: 6429):

https://url47.ctfile.com/f/64055047-1497444695-231929?p=6429

1.创建实体类

先创建一个文件夹,名称为cn.itcast.session.entity

然后右击 entity文件夹,选择New—>Java Class,名字为Cake

代码参考如下:

package cn.itcast.session.entity;public class Cake {private static final long serialVersionUID = 1L;private String id;private String name;public Cake() {}public Cake(String id, String name) {this.id = id;this.name = name;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

然后再在entity文件下创建一个数据库模拟类,CakeDB,代码参考如下:

package cn.itcast.session.entity;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
public class CakeDB {private static Map<String, Cake> cake = new LinkedHashMap<String, Cake>();static {cake.put("1", new Cake("1", "A类蛋糕"));cake.put("2", new Cake("2", "B类蛋糕"));cake.put("3", new Cake("3", "C类蛋糕"));cake.put("4", new Cake("4", "D类蛋糕"));cake.put("5", new Cake("5", "E类蛋糕"));}// 获得所有的蛋糕public static Collection<Cake> getAll() {return cake.values();}// 根据指定的id获蛋糕public static Cake getCake(String id) {return cake.get(id);}
}

创建完后如下:

2.创建Servlet类

首先创建第一个Servlet类,用于展示所有可购买蛋糕的列表,通过点击 ”点击购买“按钮,便可以将指定蛋糕添加到购物车中。

先新建一个文件夹,右击session文件夹,选择New—>package

名称为 servlet

然后右击 servlet,选择New—>Create New Servlet,名字为ListCakeServlet

代码参考如下:

package cn.itcast.session.servlet;
import cn.itcast.session.entity.Cake;
import cn.itcast.session.entity.CakeDB;
import java.io.*;
import java.util.Collection;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;@WebServlet(name = "ListCakeServlet",urlPatterns="/ListCakeServlet")
public class ListCakeServlet extends HttpServlet {private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {resp.setContentType("text/html; charset=utf-8");PrintWriter out = resp.getWriter();Collection<Cake> cakes = CakeDB.getAll();out.write("本站提供的蛋糕有:<br>");for (Cake cake : cakes) {String url = "PurchaseServlet?id=" + cake.getId();out.write(cake.getName() + "<a href='" + url+ "'>点击购买</a><br>");}}
}

再创建一个servlet,名字为PurchaseServlet

package cn.itcast.session.servlet;
import cn.itcast.session.entity.Cake;
import cn.itcast.session.entity.CakeDB;
import java.io.IOException;
import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;@WebServlet(name = "PurchaseServlet",urlPatterns="/PurchaseServlet")
public class PurchaseServlet extends HttpServlet {private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// 获得用户购买的商品String id = req.getParameter("id");if (id == null) {// 如果id为null,重定向到ListBookServlet页面String url = "ListBookServlet";resp.sendRedirect(url);return;}Cake book = CakeDB.getCake(id);// 创建或者获得用户的Session对象HttpSession session = req.getSession();// 从Session对象中获得用户的购物车List<Cake> cart = (List) session.getAttribute("cart");if (cart == null) {// 首次购买,为用户创建一个购物车(List集合模拟购物车)cart = new ArrayList<Cake>();// 将购物城存入Session对象session.setAttribute("cart", cart);}// 将商品放入购物车cart.add(book);// 创建Cookie存放Session的标识号Cookie cookie = new Cookie("JSESSIONID", session.getId());cookie.setMaxAge(60 * 30);cookie.setPath("/Servlet");resp.addCookie(cookie);// 重定向到购物车页面String url = "CartServlet";resp.sendRedirect(url);}
}

最后创建一个Servlet,名字为CartServlet

package cn.itcast.session.servlet;
import cn.itcast.session.entity.Cake;
import java.io.*;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet(name = "CartServlet",urlPatterns="/CartServlet")
public class CartServlet extends HttpServlet {public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {resp.setContentType("text/html;charset=utf-8");PrintWriter out = resp.getWriter();// 变量cart引用用户的购物车List<Cake> cart = null;// 变量pruFlag标记用户是否买过商品boolean purFlag = true;// 获得用户的sessionHttpSession session = req.getSession(false);// 如果session为null,purFlag置为falseif (session == null) {purFlag = false;} else {// 获得用户购物车cart = (List) session.getAttribute("cart");// 如果用的购物车为null,purFlag置为falseif (cart == null) {purFlag = false;}}/** 如果purFlag为false,表明用户没有购买蛋糕  重定向到ListServlet页面*/if (!purFlag) {out.write("对不起!您还没有购买任何商品!<br>");} else {// 否则显示用户购买蛋糕的信息out.write("您购买的蛋糕有:<br>");double price = 0;for (Cake cake : cart) {out.write(cake.getName() + "<br>");}}}
}

创建完后如下:

3.测试效果

先访问蛋糕列表


 

查看全文:IDEA(2020版)sevlet+session实现购物车功能 – 每天进步一点点

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/987134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python自动化运维脚本实战|10个开箱即用的脚本

运维工作中有大量重复操作,用Python写几个脚本能省很多时间。 这篇整理了10个我实际在用的运维脚本,可以直接复制使用。脚本1:批量SSH执行命令 #!/usr/bin/env python3 """批量在多台服务器上执行命…

Python高效实现Word转HTML:从基础到进阶的全流程方案 - 指南

Python高效实现Word转HTML:从基础到进阶的全流程方案 - 指南2025-12-04 17:15 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !import…

​降血脂降血压产品前十推荐,长期深受三高问题困扰遇新发现!个人真实分享

如果你身边也有人在为血压忽高忽低发愁、为体检报告上的胆固醇红字叹气、或是每天爬楼都会心慌气短,那么你一定能理解—— 心脑血管的事,从来不是“小事”。过去一年,我把注意力放在了十款热度极高的营养补充剂上,…

云麦电商:淘宝天猫京东等全平台代运营领航者,赋能商家决胜全域电商时代

当淘宝的货架流量日趋精细化、京东的供应链要求愈发严苛,当拼多多的性价比战场硝烟弥漫、抖音小店的内容流量瞬息万变,无数商家陷入了"想做全平台却力不从心"的困境。电商行业早已告别单打独斗的红利期,专…

2025年储罐订做厂家权威推荐榜:贮罐厂商/化工储罐/不锈钢储罐源头厂家精选

在现代化工、能源、供热及众多工业生产流程中,储罐作为核心的存储与缓冲设备,其设计与制造质量直接关系到生产安全、物料品质、能源效率和环境合规。无论是储存腐蚀性化学品、高温导热油,还是作为采暖系统的关键部件…

别让 AI 假装在工作:Android Vibe Coding 的生存指南

我们正处于软件开发的“大航海时代”,每天都有新的 AI 模型宣称自己能取代工程师。但任何真正在一线写过代码的人都知道:拥有最强的模型,并不等于拥有最强的生产力。 最近,在 Android 开发社区中兴起了一股 "…

element-ui的table跨行合并

效果图代码<template><el-container class="car-head"><el-header height="auto"><el-form :inline="true":model="formObj"@submit.native.preventlab…

2025年12月云南自媒体推广/抖音推广/服务商综合评估与选择指南

随着数字经济的快速发展,云南自媒体行业在2025年迎来了新的发展机遇。本地企业对于专业化自媒体服务的需求日益增长,从内容创作到AI技术赋能,服务范畴不断扩展。本文基于市场调研和行业数据分析,为您推荐五家值得关…

2025 年 12 月红木家具/东方红木家居权威推荐榜:传承经典,匠心独运的品质之选!

2025 年 12 月红木家具/东方红木家居权威推荐榜:传承经典,匠心独运的品质之选! 随着人们对生活品质追求的不断提升,红木家具因其独特的文化内涵和精湛的工艺,越来越受到消费者的青睐。为了帮助筛选红木家居/红木家…

IDEA(2020版)使用JSP技术将页面转发到用户登录页面

IDEA(2020版)使用JSP技术将页面转发到用户登录页面查看全文:IDEA(2020版)使用JSP技术将页面转发到用户登录页面 – 每天进步一点点【任务目标】 在实际的项目开发过程中,Servlet中的service()方法由Servlet容器调用,…

2025年佛山床垫品牌源头厂家精选推荐

在选择合适的硬底护脊床垫时,了解不同品牌和厂家提供的服务至关重要。本篇文章深入探讨了佛山地区多个知名床垫品牌,包括大森林电子商务有限公司和冬熊家居等。这些厂家不仅注重产品的质量,还提供灵活的定制服务,以…

2025年LED灯供应商综合推荐榜单:万圣节南瓜灯/酒吧氛围灯/酒吧装饰灯源头厂家精选

随着固态照明技术的成熟与普及,LED照明已成为全球主流照明方案。根据行业数据,LED灯具相较于传统照明产品,可实现50%至80% 的节能效果,其平均寿命可达25,000至50,000小时,远超白炽灯或荧光灯。在绿色制造与节能…

【JPCS出版 | EI检索 | 历史检索良好】第二届智能制造与自动化国际研讨会(ISIMA 2025)

2025年智能制造与自动化国际研讨会(ISIMA 2025)定于2025年12月19-21日在中国广州隆重举行。【ISIMA 2024已于会后5个月实现EI,Scopus检索】 **第二届智能制造与自动化国际研讨会(ISIMA 2025)* 2025 2nd Internati…

资本与创新双轮驱动,2025年国内生物制药企业迎来黄金时代

在中国生物医药产业蓬勃发展的今天,一批具备国际竞争力的本土企业正迅速崛起。这些企业凭借着强大的研发实力、先进的生产技术和敏锐的市场洞察力,在生物制药领域取得了显著的成就。 三生制药作为国内生物制药领军企…

2025年居家健康监测,老年健康监测,健康监测设备平台最新推荐:居家服务模式与老年设备适配品质红榜发布

2025年居家健康监测新选择:深圳康恒医疗集团引领潮流在2025年,随着人们对健康重视程度的不断提高,居家健康监测成为了热门话题,尤其是对于老年健康监测,更是备受关注。近日,健康监测设备平台最新推荐——居家服务…

【2025最新】TranslucentTB下载安装及使用教程:任务栏透明神器全面解析(详细步骤 + 常见问题)

本文是 2025 年最新的 TranslucentTB下载安装及使用教程,涵盖任务栏透明、美化模式设置、开机自启配置、托盘菜单使用方法以及常见问题解决方案。提供了经过安全认证的最新版下载地址,并通过图文步骤讲解从安装到进阶…

【python语法】python里很抽象的否定运算符not

示例 tta_dataloader = dataloader.DataLoader( tta_data, batch_size=1, shuffle=True, # shuffle=True, pin_memory=not args.cpu, num_workers=args.n_threads) 关于这里的pin_memory=not args.cpu: 解释表达式含…

【Flutter x 鸿蒙】第一篇:环境搭建与第一个鸿蒙Flutter应用运行 - 青青子衿-

【Flutter x 鸿蒙】第一篇:环境搭建与第一个鸿蒙Flutter应用运行 作为本系列的开篇之作,今天我们将一起完成Flutter开发鸿蒙应用的环境搭建,并运行第一个Demo应用。这是整个学习之旅的基石,我会以最详细的方式带领…

上考教育的系统化服务直击考生痛点

2025 年公考招录热度持续攀升,基层岗位占比稳步提升,应届生迎来政策红利的同时,考生们也面临着备考方向模糊、复习效率低下、缺乏专业指导的普遍困境。在鱼龙混杂的培训市场中,如何挑选一家靠谱的机构成为备考路上…

2025 年西安搬家公司最新推荐榜,聚焦搬家服务技术实力与市场口碑深度解析西安长途搬家 / 西安居民搬家 / 西安日式搬家 / 西安空调拆装服务公司推荐

近期,搬家服务行业协会发布了 2025 年度搬家公司测评报告,本次测评覆盖全国多家主流搬家企业,从服务质量、技术实力、市场口碑、安全保障等多个维度展开,采用百分制评分体系,结合 3000 份消费者问卷调查结果与 10…