news 2026/4/16 1:39:33

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/4/16 10:41:49

【k8s-1.34.2安装部署】八.metric-server-0.8.0安装

文章目录简介一.metrics-server的安装二. 验证安装简介 本章节主要讲解metrics-server的安装&#xff0c;metrics-server主要是用于采集k8s中节点和pod的内存和cpu指标&#xff0c;在观察几点和pod的实时资源使用情况还是比较有用的&#xff0c;如果需要记录历史信息&#xff0…

作者头像 李华
网站建设 2026/4/16 10:45:47

PREEvision在E2E保护机制设计中的应用实践

在汽车功能安全开发中&#xff0c;端到端(E2E)保护机制是确保信号传输完整性与可信度的关键防线。但E2E参数繁多&#xff0c;ISO 26262要求明确&#xff0c;如何将AUTOSAR E2E规范准确、一致地落地到具体项目中&#xff0c;并针对不同总线&#xff08;如CAN、以太网&#xff09…

作者头像 李华
网站建设 2026/4/16 2:38:55

AI大模型学习全攻略:30节课程+企业项目实战+500+论文资源包,助你高薪入局AI时代_AI大模型教程来了(大模型从入门到实战)

文章提供了一套完整的AI大模型学习体系&#xff0c;包含30节课程涵盖理论、论文带读和实战项目&#xff0c;系统介绍NLP大模型、模型压缩、剪枝技术、扩散模型、RLHF等前沿技术。附赠500论文和104G学习资源包&#xff0c;强调大模型技术的高就业前景(平均薪资3.7万)和高成长性&…

作者头像 李华
网站建设 2026/4/16 9:21:09

Pip install -e . 可编辑安装用途说明

可编辑安装与深度学习环境的高效协同&#xff1a;pip install -e . 的实战价值 在现代 AI 开发中&#xff0c;一个常见的场景是&#xff1a;你正在调试一个新的神经网络模块&#xff0c;刚改完几行代码&#xff0c;想立刻在 Jupyter Notebook 里测试效果。但传统流程要求你重新…

作者头像 李华
网站建设 2026/4/16 10:47:07

生成式AI在兼容性测试中的创新

第一章 兼容性测试的演进困局与AI破局点 1.1 传统测试的四大瓶颈 设备碎片化黑洞&#xff1a;Android 12,000设备型号覆盖率不足23%&#xff08;2025 Gartner数据&#xff09; 场景覆盖盲区&#xff1a;用户操作路径组合爆炸&#xff08;理论超10^18种&#xff09; 维护成本…

作者头像 李华
网站建设 2026/4/16 10:56:03

SSH端口转发访问远程Jupyter服务的操作步骤

SSH端口转发访问远程Jupyter服务的操作步骤 在深度学习项目开发中&#xff0c;一个常见的场景是&#xff1a;你手头只有一台轻薄笔记本&#xff0c;却需要运行基于 PyTorch 的大规模模型训练任务。真正的算力——那台配备了 A100 显卡的远程服务器——远在数据中心里。你想用熟…

作者头像 李华