JavaWeb学习之cookie

什么是Cookie?

1、Cookie是一种会话技术,其由服务器生成并且保留在客户端上,其是一种会话跟踪技术

2、形成流程:
用户第一次发送请求,由服务器生成一个cookie并封装到返回给客户端的响应中,客户端在接受到响应后会保留其中的cookie。在下一次向服务器发送请求时,会携带上次保存在客户端的cookie 的数据一起发送的到服务器,服务器会对其做出相应的处理,

3、属性与值的以什么形式存储?:以键值对的方式进行存储
3.1、其响应头为set-cookie
4、cookie的细节
4.1、请求一次是可以发送多个cookie,只需在服务器端多创建几个cookie在返回给客户端
4.2、cookie在浏览器中保存的时间:
1、默认情况下,如果浏览器被关闭那么cookie数据就会被销毁,相当于此时cookie只是在内存当中,一旦浏览器被关闭,那么它也跟着被销毁了

5、关于cookie数据中文的问题
5.1、在tomcat8以前是不支持中文数据,如果需要中文数据需要手动将其编码,
但在tomcat8以后就支持中文数据,不必在对其进行手动编码
5.2、需要注意的是,不论在中文还是英文状态下,cookie的数据中如果包含空格等字符,那么tomcat服务器会报500的非法参数异常
异常如下:

HTTP Status 500 – Internal Server Error
Type 异常报告消息 An invalid character [32] was present in the Cookie value

描述 服务器遇到一个意外的情况,阻止它完成请求。

Exception

java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value

在这里插入图片描述
其中[32]在asiic码中对应的是空格,在这里插入图片描述那么此时该异常的解决方法有两种:
一、删除包含的空格等字符。二、手动对其进行编码操作
采用URL编码的方式解决:

编码的方法:直接调用URLEncoder类下的encoder方法对其编码在写入到cookie中则可解决该异常
语法格式:URLEecoder.encoder(“需要编码的字符串”,“编码的字符集”)

解码的方法:由于编码之后的字符是十六进制,所以如果需要展示该数据则需要对其进行解码的操作,可以直接调用URLDecoder类下的decoder方法
语法格式:URLDecoder.decoder(“需要解码的字符串”,“解码的字符集”)

6、关于cookie的存活时间
6.1、在默认情况下,在一次请求后获得的cookie,那么之后cookie的存活时间随着浏览器的关闭而被销毁
6.2、如果需要cookie持久化的保存在用户浏览器中,那么只需要设置cookie的最大保存时间,那么就能让cookie持久化的保存在用户的浏览器中。

6.3、关于设置cookie的保存时间的方法:
setMaxAge(int a) 该方法的参数是以秒为单位,如果希望cookie保存多长时间那么给其传入一个指定的时间即可,
特殊的:当参数为正数,负数于零的三种情况
正数:表示为希望其保存的时间为多长
零:如果指定的cookie被设置为0,那么该cookie会被服务器所删除,也就是说0就相当于是一个删除cookie的参数
负数:默认值也是负数,那么说明,如果cookie被设置为负数,那么该cookie的存在时间会随着浏览器的关闭而被销毁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值