饼干:。是浏览器端存储数据的技术服务器不能存储的cookie,但是服务器可以发送请求命令浏览器存储的cookie。
如何存储cookie
在文档中有一个属性叫cookie
cookie是一个键值对,是一个使用等号连接的键值,是一个字符串
cookie直接使用赋值来追加数据
多个cookie的数据使用分号空格连接,并且他也是一个字符串
cookie的存储特点
1> cookie默认是生命周期是浏览器关闭以前
2> cookie在多个页面中可以共享数据
3> cookie可以伴随http请求传递数据
4> cookie在存储非ascii码的时候要使用指定方法来转换
escape,unescape
encodeURI,decodeURI
encodeURIComponent,decodeURIComponent
5> cookie的存储可以设置生命周期
给每一个cookie值添加一个属性expires,其取值为一个时间类型的字符串
今天基本上使用max-age来代替expires属性,max-age取值是秒数
6> cookie的访问级别(路径)
使用路径属性可以配置的cookie的访问级别,即哪一个文件夹下的文件可以访问该cookie的
默认是./
如果希望上一级目录可以访问,路径就给赋值上一级目录的目录名
如果希望整个网站都可以访问,那么使用path = /即可
7> cookie不能够跨域,但是可以是设定同域的访问级别(域)
8> cookie还有一个特性安全
cookie会伴随着http请求发送。
安全如果设置为真表示只有在https请求的时候发送
9>一般如果希望不使用cookie来存储数据(会随着HTTP请求提交)
可以使用隐藏域:<input type =“hidden”>
html5开始引入了其他的存储数据的办法:本地存储(localStorage的)
如何读取饼干的中数据
读取的时候会将所有的数据都一并取出来,但是并非全部数据我都需要,因此这里需要对数据进行解析
的cookie数据格式:“键=值; 键=值; 键=值”
获得数据的时候理论上的英文利用键名取对应的值
字典搜索结构(键值对结构)
代码示例
//cookie的操作:
String str=genRandomString(4);
//写cookie(cookie的名称与值)
Cookie cookie=new Cookie("yanzhengma",str);
//过期时间
cookie.setMaxAge(10000);
//只允许服务端读取
cookie.setHttpOnly(true);
//保存cookie到客户端
response.addCookie(cookie);
// 设置生命周期为0,表示将要删除
cookie.setMaxAge(0);
// 执行添加后就从response里删除了
response.addCookie(cookie);
//读取cookie
Cookie[] cookies = request.getCookies();
for(Cookie ck:cookies){
System.out.println(ck.getName()+"="+ck.getValue());
}