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