news 2026/8/29 7:25:21

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
IDEA(2020版)sevlet+session实现购物车功能

查看全文:https://www.longkui.site/program/java/idea2020sevletsession3/7204/


【任务目标】

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

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 Stringid;private String name;publicCake(){}public Cake(String id, String name){this.id=id;this.name=name;}public StringgetId(){returnid;}public void setId(Stringid){this.id=id;}public StringgetName(){returnname;}public void setName(String name){this.name=name;}}

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

package cn.itcast.session.entity;importjava.util.Collection;importjava.util.LinkedHashMap;importjava.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(){returncake.values();}// 根据指定的id获蛋糕 public static Cake getCake(Stringid){returncake.get(id);}}

创建完后如下:


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

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

名称为 servlet


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


代码参考如下:

package cn.itcast.session.servlet;importcn.itcast.session.entity.Cake;importcn.itcast.session.entity.CakeDB;importjava.io.*;importjava.util.Collection;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.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;importcn.itcast.session.entity.Cake;importcn.itcast.session.entity.CakeDB;importjava.io.IOException;importjava.util.*;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.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{// 获得用户购买的商品 Stringid=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;importcn.itcast.session.entity.Cake;importjava.io.*;importjava.util.List;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.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;// 获得用户的session HttpSession 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.测试效果
先访问蛋糕列表

http://localhost:8080/Servlet01_war_exploded/ListCakeServlet


后续查看全文:https://www.longkui.site/program/java/idea2020sevletsession3/7204/

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 6:44:34

2025年最值得收藏的GitHub大模型开源项目合集,小白也能轻松上手

文章精选了5个GitHub热门开源项目&#xff1a;Awesome知识库(370kStar)、self-llm大模型入门指南、mindsDB AI查询引擎、Qlib AI量化投资平台和R&D-Agent智能体框架。这些项目覆盖大模型学习、数据查询、量化投资和AI研发等领域&#xff0c;帮助程序员和AI爱好者快速掌握技…

作者头像 李华
网站建设 2026/8/29 6:43:25

解决leetcode第3791题.给定范围内平衡整数的数目

3791.给定范围内平衡整数的数目难度&#xff1a;困难问题描述&#xff1a;给你两个整数low和high。如果一个整数同时满足以下两个条件&#xff0c;则称其为平衡整数&#xff1a;它至少包含两位数字。偶数位置上的数字之和等于奇数位置上的数字之和&#xff08;最左边的数字位置…

作者头像 李华
网站建设 2026/8/28 20:28:06

GitHub Wiki编写PyTorch项目文档

GitHub Wiki 编写 PyTorch 项目文档 在深度学习项目开发中&#xff0c;最让人头疼的往往不是模型结构设计或调参技巧&#xff0c;而是“为什么你的代码在我机器上跑不起来&#xff1f;”——这个看似简单的问题背后&#xff0c;隐藏着环境依赖混乱、CUDA 版本冲突、Python 包版…

作者头像 李华
网站建设 2026/8/21 12:58:59

分布式训练容错机制:PyTorch Eager与FSDP对比

分布式训练容错机制&#xff1a;PyTorch Eager与FSDP对比 在当今大模型时代&#xff0c;一次训练动辄持续数天甚至数周&#xff0c;GPU集群每小时的计算成本可能高达数百美元。如果因为某个节点突然宕机导致整个训练任务中断&#xff0c;不仅意味着巨大的时间损失&#xff0c;更…

作者头像 李华
网站建设 2026/8/24 17:13:29

基于PLC的智能交通灯控制系统设计

基于PLC的智能交通灯控制系统设计 第一章 引言 在城市道路交通管理中&#xff0c;交通灯是规范车流、人流秩序的核心设施&#xff0c;其控制合理性直接影响通行效率与交通安全。传统交通灯多采用固定时序控制&#xff0c;无法根据实时车流量、行人流量动态调整信号时长&#xf…

作者头像 李华