Cookie
什么是Cookie?
Cookie是网景公司发明。Cookie是由服务器端创建,发送给浏览器,浏览器可以将cookie的key/value保存到浏览器端,下一次在请求同一个网站的资源时,就可以将cookie发送给服务器。
在javaee的api中有一个类 javax.servlet.http.Cookie,它就可以创建一个cookie,它的构造方法Cookie c =new Cookie(String name,String value)
Cookie是由http协议制定的,并不是java语言特有的,php或.net都可以使用cookie。
问题1:如果将一个cookie响应到浏览器端?
我们可以通过response对象来操作,可以通过response.addHeader(“set-cookie”,”one=aaa”);也可以通过简便的方法
在http协议中生成的格式 set-cookie:one=aaa; two=bbb
response.addCookie(Cookie);
问题2:如果关服务器端得到一个cookie?
我们要想得到一个cookie可以通过requst对象来获取。
在http请求头中有一个cookie:one=aaa;two=bbb
可以通过request的一个方法Cookie[] getCookies()得到所有的cookie
总结:
1.创建Cookie new Cookie(Stringname,String value);
2.将cookie响应到浏览器端 response.addCookie(Cookie);
3.在服务器中获取Cookie request.getCookies();得到了一个Cookie数组。
得到Cookie对象后,可以使用getName()与getValue()方法来得到cookie的名称与值。
http协议对cookie规定如下:(笔试题)
1. cookie用于携带少量数据最大为4kb
2. 一个服务器最多向一个浏览器保存20个cookie
3. 一个浏览器最多可以保存300个cookie.
cookie持久化问题:
默认情况下,cookie它是会话级别的,简单说,就是cookie是存储在浏览器的内存中,如果将浏览器关闭,cookie就消失。
setMaxAge()可以让cookie持久化.也就是说可以在浏览器端产生一个cookie文件,当关闭浏览器后,cookie也不会消失。
注意:如果将setMaxAge(0)代表的是删除cookie.
我们在删除cookie时要注意一个关于cookie路径的问题。删除与创建cookie时它们的路径必须一致。
cookie路径有什么作用?
它的作用就是确定当访问服务器的资源时,是否要携带cookie.
例如 aCookie /cookieAndSession/ bCookie /cookieAndSession/jsps/ c
cCookie /cookieAndSession/jsps/cookie
当我们访问
http://localhost/cookieAndSession/index.jsp这时只有aCookie会携带到服务器端,原因是路径中包含了aCookie的path
当我们访问
http://localhost/cookieAndSession/jsps/index.jsp这时会有aCookie与bCookie携带到服务器端