Cookie的常见⽅法
1.Cookie的创建与发送
  通过new Cookie("key", "value")来创建⼀个Cookie对象,发送时使⽤response.addCookie(cookie)⽅法,此时该cookie对象就会跟随着响应发送到客户端,存储在浏览器内存中,⽰例如下:
@WebServlet("/cookie_set")
public class Cookie_set extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
//Cookie的创建
Cookie cookie =new Cookie("key","value");
//发送(响应)cookie对象
resp.addCookie(cookie);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
this.doGet(req, resp);
}
}
注意事项:cookie格式是键值对,与map相类似,key不能重复,如果重复,则后⼀个value会替换前⼀个value。
2.Cookie设置到期时间
  cookie存储在浏览器内存时,当浏览器被关闭,则该cookie就失效。想要⾃定义cookie的存活时间,可
以通过cookie.setMaxAge(int time)⽅法设置,单位为秒,⽰例如下:
@WebServlet("/cookie_life")
public class Cookie_life extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
//到期时间:负整数(默认值-1,表⽰只在浏览器内存中存活,关闭浏览器失效
Cookie cookie1 =new Cookie("name1","zhangsan");
cookie1.setMaxAge(-1);
resp.addCookie(cookie1);
//到期时间:正整数(表⽰存活指定秒数,会将数据存在磁盘中
Cookie cookie2 =new Cookie("name2","lisi");
cookie2.setMaxAge(30);
resp.addCookie(cookie2);
//到期时间:0 (表⽰删除cookie)
Cookie[] cookies = Cookies();
if(cookies !=null&& cookies.length >0){
for(Cookie cookie : cookies){
if("key".Name())){
cookie.setMaxAge(0);
resp.addCookie(cookie);
}
}
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
this.doGet(req, resp);
}
}
cookie到期时间取值:
取值含义selenium获取cookie
负整数cookie的maxAge默认为-1,表⽰只在浏览器内存中存储0表⽰删除该cookie
正整数表⽰将该cookie持久化,浏览器会将cookie保存到硬盘上,存活相应时间
3.Cookie设置路径
  通过cookie.setPath(path)⽅法设置cookie的路径,这个路径直接决定服务器的请求是否会从浏览器中加载该cookie。
当前服务器下任何项⽬的任意资源都可获取Cookie对象
Cookie cookie1 =new Cookie("cookie1","cookie1");
//设置路径为”/”,表⽰在当前服务器下任何项⽬都可以访问到Cookie对象
cookie1.setPath("/");
resp.addCookie(cookie1);
当前项⽬下的资源都可获取Cookie对象(默认情况)
Cookie cookie2 =new Cookie("cookie2","cookie2");
//默认不设置Cookie的path,或者设置为当前站点名
cookie2.setPath("/servlet_study_war_exploded");
resp.addCookie(cookie2);
指定项⽬下的资源可获取Cookie对象
Cookie cookie3 =new Cookie("cookie3","cookie3");
//设置指定项⽬的站点名
cookie3.setPath("/xxx");//站点名为xxx的项⽬能获取cookie,⽽/的不能
resp.addCookie(cookie3);
项⽬下指定的资源可获取Cookie对象
Cookie cookie4 =new Cookie("cookie4","cookie4");
//设置指定项⽬的站点名
cookie4.setPath("/servlet_study_war_exploded/cookie_get");//只有该路径能获取cookie
resp.addCookie(cookie4);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。