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 " >