1.以保存用户登录状态为例
servlet中的代码
//判断用户是否同意保存用户登录状态
String[] isCookies=request.getParameterValues("isUseCookie");
if(isCookies!=null&&isCookies.length>0){
System.out.println("保存cookie!!!");
Cookie usernameCookie=new Cookie("username",username);
Cookie passwordCookie=new Cookie("password",password);
usernameCookie.setMaxAge(864000); //设置最大生存期限为10天
passwordCookie.setMaxAge(864000);
//设置可以访问到此cookie的路径(默认在当前目录下)设置到需要访问的路径下
usernameCookie.setPath(request.getContextPath());
passwordCookie.setPath(request.getContextPath());
response.addCookie(usernameCookie);
response.addCookie(passwordCookie);
}
else{
Cookie[] cookies=request.getCookies();
if(cookies!=null&&cookies.length>0)
{
for(Cookie c : cookies)
{ //c.getName得到的是键值
if(c.getName().equals("username")||c.getName().equals("password"))
{
c.setMaxAge(0); //设置Cookie失效
c.setPath(request.getContextPath());
response.addCookie(c); //重新保存
}
}
}
}
2.注意事项
(1).移除一个cookie是setMaxAge(0);即可
(2).前端无法得到cookie
查看所用cookie的访问路径,不设置则使用默认路径(当前路径),如果是在servlet里新建的cookie的默认访问路径是当前servlet的路径,前端页面是无法访问的,此时需要设置cookie的路径为setPath(request.getContextPath()); 设置的cookie路径可以直接从浏览器中查看
正常的cookie只能在一个应用中共享,即一个cookie只能由创建它的应用获得。
1.可在同一应用服务器内共享方法:设置cookie.setPath("/");2.跨域共享cookie的方法:设置cookie.setDomain(".jszx.com");