Cookie 超链接下载
Cookie
Cookie
是浏览器提供的一种技术,通过服务器的程序能将一些只须保存在客户端,或者在客户端进行 处理的数据,放在本地的计算机上,不需要通过网络传输,因而提高网页处理的效率,并且能够减少服务器的负载,但是由于 Cookie
是服务器端保存在客户端的信息, 所以其安全性也是很差的。例如常见的记住密码则可以通过 Cookie
来实现概述 : 曲奇饼干
作用,会话跟踪存在浏览器客户端,不安全
session+cookie
Cookie可以路径绑定
Cookie
的
setPath
设置
cookie
的路径,这个路径直接决定服务器的请求是否会从浏览器中加载某些
cookie
。
情景一:
当前服务器下任何项目的任意资源都可获取
Cookie
对象
/*
当前项目路径为:
s01 */
Cookie cookie
=
new
Cookie
(
"xxx"
,
"XXX"
);
//
设置路径为
"/"
,表示在当前服务器下任何项目都可访问到
Cookie
对象
cookie
.
setPath
(
"/"
);
response
.
addCookie
(
cookie
);
情景二:
当前项目下的资源可获取
Cookie
对象 (默认不设置
Cookie
的
path
)
/*
当前项目路径为:
s01 */
Cookie cookie
=
new
Cookie
(
"xxx"
,
"XXX"
);
//
设置路径为
"/s01"
,表示在当前项目下任何项目都可访问到
Cookie
对象
cookie
.
setPath
(
"/s01"
);
//
默认情况,可不设置
path
的值
response
.
addCookie
(
cookie
);
情景三:
指定项目下的资源可获取
Cookie
对象
/*
当前项目路径为:
s01 */
Cookie cookie
=
new
Cookie
(
"xxx"
,
"XXX"
);
//
设置路径为
"/s02"
,表示在
s02
项目下才可访问到
Cookie
对象
cookie
.
setPath
(
"/s02"
);
//
只能在
s02
项目下获取
Cookie
,就算
cookie
是
s01
产生的,
s01
也不能
获取它
response
.
addCookie
(
cookie
);
总结:当访问的路径包含了
cookie
的路径时,则该请求将带上该
cookie
;如果访问路径不包含
cookie
路径,则该请求不会携带该
cookie
。
如何创建Cookie
通过
new Cookie("key","value");
来创建一个
Cookie
对象,要想将
Cookie
随响应发送到客户端,需 要先添加到 response
对象中,
response.addCookie(cookie);
此时该
cookie
对象则随着响应发送至了客户端。在浏览器上可以看见。
//
创建
Cookie
对象
Cookie cookie
=
new
Cookie
(
"uname"
,
"zhangsan"
);
//
发送
Cookie
对象
response
.
addCookie
(
cookie
);
分类:
瞬时Cookie : 默认,session级别
持久化max-age
Cookie
的获取
在服务器端只提供了一个
getCookies()
的方法用来获取客户端回传的所有
cookie
组成的一个数组,如果需要获取单个 cookie
则需要通过遍历,
getName()
获取
Cookie
的名称,
getValue()
获取
Cookie
的值。
//
获取
Cookie
数组
Cookie
[]
cookies
=
request
.
getCookies
();
//
判断数组是否为空
if
(
cookies
!=
null
&&
cookies
.
length
>
0
) {
//
遍历
Cookie
数组
for
(
Cookie cookie
:
cookies
){
System
.
out
.
println
(
cookie
.
getName
());
System
.
out
.
println
(
cookie
.
getValue
());
}
}
Cookie
设置到期时间
到期时间的取值
负整数
若为负数,表示不存储该
cookie
。
cookie
的
maxAge
属性的默认值就是
-1
,表示只在浏览器内存中存活,一旦关闭浏览器窗口,那
么
cookie
就会消失。
正整数
若大于
0
的整数,表示存储的秒数。
表示
cookie
对象可存活指定的秒数。当生命大于
0
时,浏览器会把
Cookie
保存到硬盘上,就算
关闭浏览器,就算重启客户端电脑,
cookie
也会存活相应的时间。
零
若为
0
,表示删除该
cookie
。
cookie
生命等于
0
是一个特殊的值,它表示
cookie
被作废!也就是说,如果原来浏览器已经保存
了这个
Cookie
,那么可以通过
Cookie
的
setMaxAge(0)
来删除这个
Cookie
。 无论是在浏览器内
存中,还是在客户端硬盘上都会删除这个
Cookie
。
设置
Cookie
对象指定时间后失效
//
创建
Cookie
对象
Cookie cookie
=
new
Cookie
(
"uname"
,
"zhangsan"
);
//
设置
Cookie 3
天后失效
cookie
.
setMaxAge
(
3
*
24
*
60
*
60
);
//
发送
Cookie
对象
response
.
addCookie
(
cookie
);
Cookie
的注意点
1. Cookie
保存在当前浏览器中。
在一般的站点中常常有记住用户名这样一个操作,该操作只是将信息保存在本机上,换电脑以后这 些信息就无效了。而且 cookie
还不能跨浏览器。
2.Cookie
存中文问题
Cookie
中不能出现中文,如果有中文则通过
URLEncoder.encode()
来进行编码,获取时通过
URLDecoder.decode()
来进行解码。
3.
同名
Cookie
问题
如果服务器端发送重复的
Cookie
那么会覆盖原有的
Cookie
。
4.
浏览器存放
Cookie
的数量
不同的浏览器对
Cookie
也有限定,
Cookie
的存储有是上限的。
Cookie
是存储在客户端(浏览器)
的,而且一般是由服务器端创建和设定。后期结合
Session
来实现回话跟踪。
超链接下载
<a href="test.zip">超链接下载</a>
<a href="test.txt" download>超链接下载</a>
上传与下载注意事项:
上传:1.提交方式,必须是post
2.encyype="multipart/form-data"
3.注解:@MultipartConfig
4.坐标 3.1.0以上
下载:<a href=" " download>下载</a>
<a href="down?fileName=aa.txt " >