位置: 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虚拟环境路径)

  • 圆通快递人工客服电话怎么转人工(圆通快递人工客服电话)(圆通快递人工客服几点下班)

    圆通快递人工客服电话怎么转人工(圆通快递人工客服电话)(圆通快递人工客服几点下班)

  • 小爱音响怎么重新连接wifi(小爱音响怎么重新配对)

    小爱音响怎么重新连接wifi(小爱音响怎么重新配对)

  • 华为nova5微信视频美颜怎么设置(华为nova5微信视频没有美颜)

    华为nova5微信视频美颜怎么设置(华为nova5微信视频没有美颜)

  • 手机支付宝免冠照片怎么拍(手机支付宝免冠照怎么拍)

    手机支付宝免冠照片怎么拍(手机支付宝免冠照怎么拍)

  • 腾讯会议怎么退出会议(腾讯会议怎么退出账号)

    腾讯会议怎么退出会议(腾讯会议怎么退出账号)

  • 如何用siri声音做视频(怎么用siri音效)

    如何用siri声音做视频(怎么用siri音效)

  • 台式电脑怎么按摄像头(台式电脑怎么按音响)

    台式电脑怎么按摄像头(台式电脑怎么按音响)

  • 快手封永久还能提现吗(快手永久封了该怎么办)

    快手封永久还能提现吗(快手永久封了该怎么办)

  • 防火墙技术是什么安全模型(防火墙技术是什么最重要的安全技术之一)

    防火墙技术是什么安全模型(防火墙技术是什么最重要的安全技术之一)

  • 小米8是安卓几的版本(小米8是安卓吗)

    小米8是安卓几的版本(小米8是安卓吗)

  • 技嘉大雕和小雕的区别(技嘉大雕小雕超级雕)

    技嘉大雕和小雕的区别(技嘉大雕小雕超级雕)

  • 华为m5平板可以插u盘吗(华为m5平板可以用触控笔吗)

    华为m5平板可以插u盘吗(华为m5平板可以用触控笔吗)

  • 如何注销酷我账号(如何注销酷我账号手机号)

    如何注销酷我账号(如何注销酷我账号手机号)

  • 手机流量不够怎么办(手机流量不够怎样买流量)

    手机流量不够怎么办(手机流量不够怎样买流量)

  • 淘宝月销是什么意思(淘宝月销是实时更新的吗)

    淘宝月销是什么意思(淘宝月销是实时更新的吗)

  • 抖音怎么删掉自己的作品(抖音怎么删掉自己的评论)

    抖音怎么删掉自己的作品(抖音怎么删掉自己的评论)

  • 华为 watch gt2 运动版 时尚版 区别(华为watchgt2运动版功能)

    华为 watch gt2 运动版 时尚版 区别(华为watchgt2运动版功能)

  • 荣耀9x支持快充吗(荣耀50支持多少w快充)

    荣耀9x支持快充吗(荣耀50支持多少w快充)

  • oppoa59s音量如何扩大(oppo手机音量控制键怎么设置?)

    oppoa59s音量如何扩大(oppo手机音量控制键怎么设置?)

  • qq删除好友火花还在吗(qq删除好友火花怎么恢复原来天数)

    qq删除好友火花还在吗(qq删除好友火花怎么恢复原来天数)

  • 笔记本光标乱跳(笔记本光标乱跳不受控制)

    笔记本光标乱跳(笔记本光标乱跳不受控制)

  • 碎片化问题到来,超一半企业 PC 设备无法升级到微软 Win11(碎片化对应什么)

    碎片化问题到来,超一半企业 PC 设备无法升级到微软 Win11(碎片化对应什么)

  • 织梦标签dede:list中增加noflag属性的方法支持5.7版本(织梦标签理解)

    织梦标签dede:list中增加noflag属性的方法支持5.7版本(织梦标签理解)

  • 劳务公司一般纳税人要交什么税
  • 施工合同的印花税需要合同双方都缴纳吗?
  • 小规模纳税人免税会计分录
  • 财务软件交多少钱印花税
  • 纳税人资格类型有哪些
  • 非居民个人如何认定
  • 子公司向母公司借款利息税务处理
  • 负债与所有者权益比率
  • 当月个税申报的是几月的工资表
  • 补缴去年的附加税
  • 坏账准备和信用账户区别
  • 以前年度影响利润吗
  • 企业所得税季报可以更正吗
  • 2019年计算机软件行业人均年工资
  • 房产税的原值是如何确定的
  • 报废过期产品怎么做会计分录
  • 资产负债表存货怎么填列
  • 税费返还如何处理
  • 费用跨年入账所得怎么算
  • 支付股权投资的会计科目
  • 转让名额协议
  • 领备用金时会计怎么做分录
  • 上个月银行流水没有录这个月补录
  • 普票记账联可以报销吗
  • 增值税税负的概念和如何确定税负
  • 红包营销活动方案
  • 减税降费新政策解读
  • 商铺 公司
  • 免税投资背后的风险,你都清楚吗?
  • 建筑材料增值税税率
  • 物料买回来再发货可以吗
  • 公司购买投影仪的必要性?
  • 异常抵扣凭证进项税转出入哪个所属期
  • windows10如何切屏
  • 询证函是什么文书
  • 以前年度应收账款无法收回
  • 缴纳上月增值税记账凭证怎么填写
  • 简单了解php编程软件
  • 投资性房地产转换日公允价值大于账面价值
  • 以前年度损益调整借贷方向
  • 酒水入库的会计分录怎么做
  • 小规模拍卖公司怎么开票
  • markdown语法是什么意思
  • 手把手教你用Excel制作考勤表
  • java htmlparser
  • 个人发票抬头是自己的名字吗
  • facebook/scribe · GitHub
  • python怎么用
  • python如何建立函数
  • 织梦怎么建站
  • 固定补贴是否属于社保
  • 预计表示什么意思
  • 利用职务之便谋取私利是什么罪
  • 长期股权投资收益要交税吗
  • 外币支付账户
  • 估价入库的会计分录
  • 选用劳务派遣人员
  • 农业合作社销售农产品怎样纳税
  • 股东 退股
  • 政府奖励企业如何领取
  • xp系统注册表空白怎么办
  • ubuntu20设置wifi
  • dos查看进程占用cpu
  • win8系统升级
  • mac os xv10.11
  • 好用linux
  • win7安装kb3170455失败
  • window10光驱不能用了
  • 水模拟软件
  • shell监控进程
  • nodejs怎么调试
  • 字符串查找子串
  • unity相关问题
  • java script
  • jquery获取单选按钮的值
  • 税务局的章
  • 德清社保局固定电话多少
  • 中国十大经济排名
  • 苹果关税多少钱一个
  • 减免所得税额怎么算的
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设