Cookie对象入门详解

今儿个聊一聊Cookie的一些入门知识点
进入正题前,先了解一下我们常用的四大域对象
在这里插入图片描述
域对象:能放数据,取数据,删除数据

四大域:范围从大到小

域对象域对象的作用范围
ServletContext整个项目
(常用)HttpSession一次会话作用域有效
(常用)Request作用域一次请求内有效
Page域同一个页面有效

Cookie对象是HttpSession域对象中的一个分支
提到Cookie就离不开会话跟踪技术了
会话跟踪技术: 从第一次访问服务器开始,到关闭浏览器之间的整个过程,Session域的数据有效,每个用户有每个用户的Session
Session的ID编号会存入客户端浏览器的Cookie
在这里插入图片描述
换句话说,Cookie每个浏览器都会有,但是Cookie是不能跨浏览器的,也就IE浏览器里的Cookie数据火狐浏览器,Chrome浏览器肯定是获取不到的

好比你去一家A银行办卡存钱,你的账户信息B银行获取不到你的账户信息

Cookie有一些规范:
Cookie的大小上限4kb
一个浏览器最多保存300个Cookie
一个服务器最多再客户端浏览器上保存20个Cookie
补充说明:规范只作为了解,现在很多浏览器为了提高性能已经优化了这方面的一些限制了

Cookie对象的方法:

构造:

Cookie(String name,String value)
//Cookie的构造方法
//如果创建的Cookie的key已经存在,新的Cookie会覆盖旧的
//也就是说Cookie对象也是以key-value键值对的形式存储数据的

操作数据:

getValue()   setValue()
//获取或者修改Cookie的值
getName()
//拿到Cookie的name
setMaxAge(int  expiry)
//设置Cookie存放的时间,默认单位是秒
//expriy=0:表示Cookie立即删除    
//expriy=-1:该值是默认值,Cookie存在客户端内存,当浏览器关闭时,Cookie清除
//expriy>0:即为该Cookie存放时间   
//expiry=60  表示Cookie存放60秒,60秒后浏览器删除该Cookie

修改路径:

setPath()
//设置Cookie访问的路径

访问路径问题

Cookie路径: Cookie如果没有设置路径,默认路径是 “/项目名”
举个栗子: 有三个Servlet类,路径分别如下
ACookie: /test
BCookie: /test/servlet
CCookie: /test/jsp
这三个Servlet能否互相访问内容?
我们先来看看他们各自的url路径

     http://locathost:8888/xx/test/AServlet
    http://locathost:8888/xx/test/servlet/BServlet
    http://locathost:8888/xx/test/jsp/CServlet

AServlet 只能访问ACookie
BServlet 访问ACookie和BCookie
CServlet 访问ACookie和CCookie

Cookie的创建与使用

步骤:
//创建Cookie,Cookie不能存放中文
		Cookie c=new Cookie("age","21");
		Cookie c1=new Cookie("name","zs");
  //给Cookie设置声明周期, 默认单位:秒
            c.setMaxAge(7*24*60*60);//7天
  //保存到客户端
            response.addCookie(c);
		    response.addCookie(c1);

编码/解码问题:

Cookie存放中文,需要将数据进行编码

方法:
URLEncoder.encode()
URLDeEncode.decode()
用法:
	String str="博客";
        //编码
	String url=URLEncoder.encode(str,"UTF-8");
	//解码
        String newStr=URLDecoder.decode(urlStr,"UTF-8");

补充说明:一般实际开发很少用到Cookie中转换为中文,因为中文在开发中还是存在很多未知的错误,这是其一
执行上述的代码发现,编码的"博客"长度很长占的空间比中文大,而"博客"在UTF-8中才占6个字节
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值