关于使用cookie存储购物车信息存在的问题

本文介绍了在前后端交互中使用cookie遇到的问题及解决方案,重点讨论了cookie的作用域设置与数据编码方式,包括如何正确设置path参数及使用encodeURIComponent方法对对象数组进行编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面毕业设计有好几天天天玩cookie,遇到了一些问题,上次系统维护,这回想起来就记录一下;

首先吧,就是cookie的作用域问题,我们在把信息加入cookie的时候别忘了加一个作用域path哦,不然的话,就要浏览器默认就是以你当前发请求的地址作为作用域了,在很多情况下都是无法获取的;

其次就是我们存储在cookie中的数据要经过编码哦,因为cookie不能有特殊字符,比如=号等等;
再一个就是我在发请求的时候,把我存在cookie中的信息在后台获取的时候,出现了一个严肃的问题,就是我存储的是对象数组字符串经过encodeURL编码的,这时候在后台获取一直都是只能获取一部分,自习观察,反复琢磨,还是想到了特殊字符的问题;encodeURL主要是针对于我们的url地址进行编码,这个方法不会将请求地址的某些字符进行编码的,比如一个http://这个都是不会经过编码的,所以我就使用了这个方法,导致我在后台取值解码的时候一直都获取不完整。
解决办法: 使用encodeURIComponent方法咯,看看单词组成也不难理解,就是将我们的这个字符串完全编码呗,这时候一测试,哈哈,成功了,最后针对这两个方法的解码方法也是一样的咯。在前台,一个使用decodeURI就可以了,另一个使用decodeURIComponent解码就可以了,在后台就使用 URLDecoder.decode()这个方法就好了,好啦,就说到这里吧 

购物车案例: 基本设计思想: (1)使用session机制,保存用户状态(用户购买的商品)。 (2)为了方便对购买操作的处理(比如,购买商品、 删除已经购买的商品、查看已经购买的商品、计价等等), 设计一个Cart类,封装这些操作。Cart对象会放在Session对象。 具体的设计: 表:t_computer create table t_computer( id bigint primary key auto_increment, name varchar(50), description varchar(100), pic varchar(255), price double(8,2)); 实体类: Computer dao: ComputerDAO Comuter findById(long id) List findAll() save(Computer computer); ComputerDAOJdbcImpl 测试dao: 购物车的设计: CartItem //商品条目 属性: int qty //购买产品的数量 Computer c //购买的产品是什么 方法: get/set方法 Cart //购物车 属性: List items //存放所有购买的商品 方法: boolean add(CartItem item) //boolean值如果是false,表示 已经购买过该商品。 void delete(long id) //删除某个商品。id是产品的ID号。 void modify(long id,int qty) //修改商品的数量 double sum() //计价 void clear() //清空商品 List list //列出所有商品 页面: cart_list.jsp: 功能:列出所有商品,用户点击链接实现购买。 实现:查询t_computer表(由ShoppingServlet来负责查询) cart.jsp 功能:列出所有已经购买的商品,并且可以修改数量、 删除某个商品、清空购物车、返回到cart_list.jsp。 实现:(ShoppingServlet调用以下方法) 列出所有已经购买的商品: cart.list() 修改数量:cart.modify() 删除:cart.delete() 清空:cart.clear() ShoppingServlet: (1)创建Session: request.getSession(); (2)创建Cart,并且将Cart放到session (3)调用Cart的方法,完成请求;也会调用 ComputerDAO完成数据库操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值