news 2026/4/22 23:47:37

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/22 11:43:40

Disk fragmentation碎片整理对训练影响

Disk fragmentation碎片整理对训练影响 在深度学习的日常实践中&#xff0c;我们常常把注意力集中在模型结构、优化器选择或GPU利用率上。然而&#xff0c;一个看似“过时”的话题——磁盘碎片化&#xff0c;却可能正在悄悄拖慢你的训练速度。你是否遇到过这样的情况&#xff1…

作者头像 李华
网站建设 2026/4/21 21:13:40

AI智能体架构与应用:让系统自主完成业务目标的黑科技

文章阐述了AI智能体如何从问答交互发展为能自主理解上下文、规划路径、调用工具的系统。介绍了智能体的三大核心能力突破&#xff08;自主决策、世界模型构建、持续学习&#xff09;&#xff0c;分析了架构设计与应用场景&#xff0c;探讨了技术优势、挑战与伦理问题。文章强调…

作者头像 李华
网站建设 2026/4/21 5:22:01

如何成为一名RPA工程师:从入门到精通的完整指南

在当今数字化转型浪潮中&#xff0c;企业对自动化的需求日益增长。机器人流程自动化&#xff08;Robotic Process Automation, RPA&#xff09;作为一种能够模拟人类操作、自动执行重复性任务的技术&#xff0c;正迅速成为提升运营效率、降低成本的重要工具。而RPA工程师&#…

作者头像 李华
网站建设 2026/4/17 19:55:11

2025最新!专科生必备10个AI论文工具,毕业论文写作全测评

2025最新&#xff01;专科生必备10个AI论文工具&#xff0c;毕业论文写作全测评 2025年专科生论文写作工具测评&#xff1a;为何需要这份榜单&#xff1f; 随着人工智能技术的不断进步&#xff0c;AI论文工具已成为许多专科生完成毕业论文的重要辅助。然而&#xff0c;面对市场…

作者头像 李华