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

news/2026/1/20 23:17:14/文章来源: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.rhkb.cn/news/226445.html

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

相关文章

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

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

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

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

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

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

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

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

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

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

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

2025年上海圆锯机企业年度排名:宏萌圆锯机的配件质量好

TOP1 推荐:上海宏萌机械设备有限公司 推荐指数:★★★★★ 口碑评分:长三角精密圆锯机企业 专业能力:上海宏萌机械设备有限公司扎根浙江缙云锯床之乡产业底蕴,融合上海创新资源,打造以精准耐用智联为核心的圆锯机…

2025年中国十大专业版权音乐企业推荐:服务不错的版权音乐公

本榜单依托全维度市场调研与真实行业口碑,深度筛选出十家标杆企业,为企业及创作者选型提供客观依据,助力精准匹配适配的版权音乐服务伙伴。 TOP1 推荐:猴子音悦(上海)网络科技有限公司 推荐指数:★★★★★ 口碑…

2025 年 12 月文创/非遗/艺术品推荐榜单:匠心独运的文化瑰宝与艺术精品深度解析

2025 年 12 月文创/非遗/艺术品推荐榜单:匠心独运的文化瑰宝与艺术精品深度解析 随着文化产业的蓬勃发展,文创、非遗和艺术品市场日益繁荣。为了帮助筛选出优质的品牌,特此发布权威推荐榜单,该榜单也已在行业协会官…

2025 年 12 月红木办公家具权威推荐榜单:精选红木办公桌/老板桌/大班台,办公椅,书桌椅,书房套装,文件柜品牌!

2025 年 12 月红木办公家具权威推荐榜单:精选红木办公桌/老板桌/大班台,办公椅,书桌椅,书房套装,文件柜品牌! 随着红木家具市场的不断发展,越来越多的企业和消费者开始关注红木办公家具。红木办公桌、红木老板桌…

必玩十大网上【小程序休闲游戏】单人易操作不占内存 摸鱼解压全靠它!

忙碌的日常中,谁不需要几款轻松上手、不占内存又能随时摸鱼解压的小游戏呢?今天为大家推荐十款单人易操作、打开即玩的小程序游戏,无需下载、不占空间,适合各种场景轻松休闲! 第一名:《新弹弹堂》 经典弹射竞技游…

聚宽策略想实盘?这个开源项目让你一行代码不改直接跑

聚宽策略想实盘?这个开源项目让你一行代码不改直接跑写了个量化策略,回测年化30%,然后呢?实盘的坑比你想象的多得多。故事的开始 两年前,我遇到了和很多聚宽用户一样的问题:策略回测效果不错,但实盘很麻烦。聚宽…

2025年泉州蹲便疏通打孔公司权威推荐榜单:疏通蹲便‌/蹲便器疏通‌/蹲便疏通口‌源头公司精选

在泉州地区,因长期使用、管道老化或杂物堵塞导致的蹲便器问题是家庭及商业场所中常见的生活难题。根据行业经验,超过80% 的卫生间堵塞问题发生在马桶和蹲便器部位。选择一家技术可靠、响应迅速的专业公司,是快速恢复…

十大爆款小程序休闲游戏:易上手不占空间,摸鱼解压打发时间好伙伴

在快节奏的现代生活中,利用碎片化时间玩上一把轻松有趣的小游戏成了许多人的解压选择。小程序游戏凭借其无需下载、不占空间、即开即玩的特点,迅速成为摸鱼、解压、打发时间的神器。今天,就为大家盘点十款热门的小程…

IDEA(2020版)实现JSP基本语法

IDEA(2020版)实现JSP基本语法查看全文:IDEA(2020版)实现JSP基本语法 – 每天进步一点点在JSP文件中可以嵌套很多内容,例如JSP的脚本元素和注释等,这些内容的编写都需要遵循一定的语法规范。本节将对JSP的基本语法进…

2025 年 12 月码垛机厂家权威推荐榜单:多样板材/倒板/分拣/上料/下料码垛机,全自动与半自动解决方案精选!

2025 年 12 月码垛机厂家权威推荐榜单:多样板材/倒板/分拣/上料/下料码垛机,全自动与半自动解决方案精选! 随着工业自动化技术的不断进步,码垛机在现代制造业中的应用越来越广泛。从多样板材码垛机到倒板码垛机、分…

2025年AI培训权威推荐榜:深度评测与趋势前瞻

引言 AI培训领域鱼龙混杂,课程质量参差不齐,企业如何精准筛选真正优质的培训机构成为一大难题。本榜单从技术实力、课程体系、师资团队、服务保障、实战案例等多维度严格筛选,为您推荐5家标杆机构,助力精准决策。 …

备考必看!2025年12月五大雅思培训机构选择全指南

在当今全球化的时代,雅思考试作为衡量英语能力的重要标准,对于众多有留学、移民以及职业发展需求的人士而言,其重要性不言而喻。随着 2025 年 12 月雅思考试日期的日益临近,无数怀揣着目标与梦想的考生们,正紧锣密…

2025年12月不锈钢橱柜选购宝典:五大零甲醛品牌深度解析,告别甲醛困扰!

导语 健康家居理念深入人心,零甲醛已成为厨房装修的核心诉求,而不锈钢橱柜恰好凭借这一关键优势,叠加耐用抗造、易清洁的特性,成为2025年家庭厨房的热门选择。当前行业在材质升级与设计创新中持续突破,各大品牌不…