位置: IT常识 - 正文

使用Session和cookie会话对象实现简单购物车功能(超详细)(使用session的步骤)

编辑:rootadmin
使用Session和cookie会话对象实现简单购物车功能(超详细) 一、新建项目、实体类、servlet

推荐整理分享使用Session和cookie会话对象实现简单购物车功能(超详细)(使用session的步骤),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:session的使用情景,使用session和cookie是如何进行会话控制的?,session和cookie的使用场景,session和cookie的使用场景,使用session和cookie是如何进行会话控制的?,使用session和不使用session的区别,使用session和cookie会话对象实现简易购物车功能,使用session和不使用session的区别,内容如对您有帮助,希望把文章链接给更多的朋友!

1.新建Dynamic Web project,新建过程如下; 2.在src目录下新建两个包,一个命名为entity,一个命名为servlet,新建过程如下; 3.在entity目录下新建两个实体类,一个名为Cake,一个名为CakeDB,新建过程如下: 4.在servlet目录下新建三个servlet,命名分别为ListCakeServlet、PurchaseServlet和CartServlet,新建过程如下: 所有东西建完后结果如图:

二:源代码

1.Cake实体类:

package entity;public class Cake {private String id;private String name;public Cake() {}public Cake(String id, String name) {this.id = id;this.name = name;}public void setId(String id) {this.id=id;}public String getId() {return id;}public void setName(String name) {this.name=name;}public String getName() {return name;}}使用Session和cookie会话对象实现简单购物车功能(超详细)(使用session的步骤)

2.CakeDB实体类:

package 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("1001", new Cake("1001", "A类:巧克力蛋糕")); cake.put("1002", new Cake("1002", "B类:水果沙拉蛋糕")); cake.put("1003", new Cake("1003", "C类:慕斯蛋糕")); cake.put("1004", new Cake("1004", "D类:奶油蛋糕")); cake.put("1005", new Cake("1005", "E类:干果蛋糕")); } // 获得所有的蛋糕 public static Collection<Cake> getAll() { return cake.values(); } // 根据指定的id获蛋糕 public static Cake getCake(String id) { return cake.get(id); }}

3.ListCakeServlet:

package servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.Collection;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import entity.Cake;import entity.CakeDB;@WebServlet("/ListCakeServlet")public class ListCakeServlet extends HttpServlet {private static final long serialVersionUID = 1L; public ListCakeServlet() { super(); }protected void doGet(HttpServletRequest request, 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>"); }}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

4.PurchaseServlet:

package servlet;import java.io.IOException;import java.util.ArrayList;import java.util.List;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import entity.Cake;import entity.CakeDB;@WebServlet("/PurchaseServlet")public class PurchaseServlet extends HttpServlet {private static final long serialVersionUID = 1L; public PurchaseServlet() { super(); }protected 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);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

5.CartServlet:

package servlet;import entity.Cake;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import java.io.IOException;import java.io.PrintWriter;import java.util.List;@WebServlet("/CartServlet")public class CartServlet extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{ resp.setContentType("text/html;charset=utf-8"); PrintWriter out = resp.getWriter(); List<Cake> cart = null; boolean purFlag = true; HttpSession session = req.getSession(false); if (session == null) { purFlag =false; } else { cart = (List) session.getAttribute("cart"); if (cart == null){ purFlag=false; } } if(!purFlag){ out.write("抱歉,您还没有购买任何商品!<br>"); } else { out.write("您购买的蛋糕有:<br>"); double price = 0; for (Cake cake:cart){ out.write(cake.getName() +"<br>"); } } }}三、运行

1.在ListCakeServlet文件下运行,点击鼠标右键,选择run as,具体如图: 2.运行结果如图: 点击购买之后跳转CartServlet页面,比如我点了巧克力蛋糕后:

以上就是使用Session和cookie会话对象实现简单购物车功能。希望对你有帮助哦~

本文链接地址:https://www.jiuchutong.com/zhishi/297669.html 转载请保留说明!

上一篇:VUE2安装初始化步骤(2022)(vue初始化命令)

下一篇:Anconda虚拟环境创建及pytorch的安装步骤(anconda虚拟环境路径)

  • oppo手机怎么在屏幕放烟花(oppo手机怎么在桌面添加时间和天气)

    oppo手机怎么在屏幕放烟花(oppo手机怎么在桌面添加时间和天气)

  • 苹果长按图标不出现删除(苹果长按图标不能移动)

    苹果长按图标不出现删除(苹果长按图标不能移动)

  • 为何微信传文件收不到(为什么微信传文件)

    为何微信传文件收不到(为什么微信传文件)

  • 华为手机如何用手机测网速多少兆(华为手机如何用nfc复制门禁卡)

    华为手机如何用手机测网速多少兆(华为手机如何用nfc复制门禁卡)

  • 开启朋友验证是删了我吗(开启朋友验证是怎么操作的)

    开启朋友验证是删了我吗(开启朋友验证是怎么操作的)

  • 华为手机有屏幕录制功能吗(华为手机有屏幕使用时间功能吗)

    华为手机有屏幕录制功能吗(华为手机有屏幕使用时间功能吗)

  • 钉钉直播开浮窗算不算时间(钉钉直播开浮窗计时吗)

    钉钉直播开浮窗算不算时间(钉钉直播开浮窗计时吗)

  • 淘宝评论删除了可以重新再评吗?(淘宝评论删除了还可以评论吗)

    淘宝评论删除了可以重新再评吗?(淘宝评论删除了还可以评论吗)

  • 陌陌关注多久可以视频通话(陌陌关注多久可以发语音)

    陌陌关注多久可以视频通话(陌陌关注多久可以发语音)

  • 电脑上钉钉打不开怎么回事(电脑上钉钉打不开是怎么回事)

    电脑上钉钉打不开怎么回事(电脑上钉钉打不开是怎么回事)

  • 手机屏幕没坏触摸失灵 (手机屏幕没坏触摸屏时好时坏)

    手机屏幕没坏触摸失灵 (手机屏幕没坏触摸屏时好时坏)

  • 被卖家拉黑后还能购买不(被卖家拉黑了)

    被卖家拉黑后还能购买不(被卖家拉黑了)

  • 小米8一碰指纹就亮屏(小米8指纹失灵重启好了是咋回事)

    小米8一碰指纹就亮屏(小米8指纹失灵重启好了是咋回事)

  • 微信怎么弄深色模式(微信怎么弄深色模式vivoy66)

    微信怎么弄深色模式(微信怎么弄深色模式vivoy66)

  • miui11是安卓几(miui 11.0.8是安卓几)

    miui11是安卓几(miui 11.0.8是安卓几)

  • 隐藏幻灯片在哪个选项卡(隐藏幻灯片在哪个选项卡里面)

    隐藏幻灯片在哪个选项卡(隐藏幻灯片在哪个选项卡里面)

  • 国行苹果x是什么基带(iphone x 国行)

    国行苹果x是什么基带(iphone x 国行)

  • 手机卡住什么都按不了怎么办(手机卡住什么都不能用)

    手机卡住什么都按不了怎么办(手机卡住什么都不能用)

  • vivoy93红包助手怎么设置(vivox23红包助手)

    vivoy93红包助手怎么设置(vivox23红包助手)

  • 微信运动10000步多少米(微信运动怎么没步数)

    微信运动10000步多少米(微信运动怎么没步数)

  • 抖音免流设置在哪里(抖音免流设置在哪里联通)

    抖音免流设置在哪里(抖音免流设置在哪里联通)

  • 苹果通知中心在哪(苹果通知中心在下面怎么关闭)

    苹果通知中心在哪(苹果通知中心在下面怎么关闭)

  • qq开启消息免打扰对方知道吗(qq开启消息免打扰对方打电话)

    qq开启消息免打扰对方知道吗(qq开启消息免打扰对方打电话)

  • 快影导出视频在哪里(快影导出视频在哪里找到)

    快影导出视频在哪里(快影导出视频在哪里找到)

  • 三七粉的价格(豹七三七粉的价格)

    三七粉的价格(豹七三七粉的价格)

  • 前端:vscode中使用npm安装依赖并运行项目(vscode怎么运行前端)

    前端:vscode中使用npm安装依赖并运行项目(vscode怎么运行前端)

  • React中路由的参数传递 - 路由的配置文件(react中路由有哪些常用组件)

    React中路由的参数传递 - 路由的配置文件(react中路由有哪些常用组件)

  • 当期免抵税额如何做账
  • 讲课费怎么代扣代缴个人所得税
  • 什么是进项税额转出
  • 应交地方教育费附加税率是多少
  • 处置资产开啥发票
  • 政府回购安置房几种模式
  • 物业缴纳发票可以抵税吗
  • 装载机属于哪种车型
  • 营改增后小规模纳税人涉税账务处理
  • 房产税直接减免政策
  • 平均分摊法计算公式
  • 资产重组账务处理 会计视野
  • 虚报亏损的税务处理办法
  • 小规模纳税人发票图片
  • 代销产品缴纳增值税吗
  • 公司购买住宅可以分期付款吗
  • 应征增值税不含税销售额(3%征收率)怎么算
  • 营改增前取得的不动产出售的计税方法
  • 企业购买设备可以税前扣除吗
  • 应收票据背书转让以取得所需物资
  • 税率征收率的区别
  • 孕妇可以喝蜂蜜水吗?
  • 以产品抵债会计分录
  • 开成品油发票要注意什么?
  • 苹果mac电脑自带的软件
  • windows10如何显示桌面图标
  • w7系统怎么用
  • 在win7中如何设置屏幕保护程序
  • php preg_quote
  • 合同资产减值怎么填
  • PHP:pg_get_result()的用法_PostgreSQL函数
  • 无形资产累计摊销借贷方向
  • 固定资产减值准备可以税前扣除吗
  • 房产税的纳税申报与处理会计分录
  • 递延所得税负债借贷方向
  • vue全家桶介绍
  • vue3.0路由配置
  • Vite4+Pinia2+vue-router4+ElmentPlus搭建Vue3项目(组件、图标等按需引入)[保姆级]
  • win11设置项改中文
  • php实现导出带样本的方法
  • 应付账款调整为其他应付款
  • bad block bitmap checksum
  • 物流破损拒收的理由
  • 减免税款的会计分录当月做吗
  • 养老院筹开计划
  • sql server操作教程
  • 发票票种核定发票种类怎么选
  • 收到土地使用权的租金
  • 预付账款期末可能有余额吗
  • 跨年租赁费会计分录
  • 实收资本印花税最新规定
  • 已开票未收款怎么报税
  • 毛利体现的是什么
  • 有存货的公司
  • sql server数据库数据备份
  • sql企业管理器在哪里
  • ubuntu安装linux五笔输入法
  • centos.repo
  • windowssys
  • soffice.exe - soffice进程是什么意思 有什么用
  • 怎么用macbook
  • linux chkdsk
  • schedulerv2.exe - schedulerv2是什么进程 有什么用
  • schost.exe - schost是什么进程 有什么用
  • win7系统打不开浏览器
  • uup windows
  • centos进入指定目录
  • win7系统鼠标指针异常
  • win10系统经典桌面
  • win7网页有错误如何修复?
  • bat批处理脚本教程
  • opengl矩形
  • linux流量监测工具
  • Android Http请求方法汇总
  • unity iphone
  • js math.js
  • Javascript字符串对象函数
  • 率土之滨怎么提高建设值上限
  • 税务申报规则
  • 拆迁户契税减免政策有时间限制
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设