一、设置Cookie
public static void SetCookie(HttpServletRequest request,
HttpServletResponse response, String strName, String strValue,
String uri, int hour) {
// 方式一
// response.setHeader("Set-Cookie", "userName=张三");
// 方式二
Cookie c = new Cookie(strName, strValue);
if (hour > 0) {
// 没有设置过MaxAge则这个Cookie是一个会话级别的Cookie,这个Cookie信息打给浏览器后浏览器会将它保存在浏览器的内存中,这意味着只要浏览器已关闭随着浏览器内存的销毁Cookie信息也就消失了.
// 设置MaxAge,则会将这个Cookie信息以文件的形式保存在浏览器的临时文件夹中,保存到指定的时间到来位置.由于这些浏览器都能在临时文件夹中看到cookie文件,所以在cookie失效之前cookie信息都存在.
c.setMaxAge(3600 * hour);
}
// 用来通知浏览器在访问服务器中的哪个路径及其子路径时带着当前cookie信息过来
// 如果不明确设置,则默认的路径是发送Cookie的Servlet所在的路径
if (uri != null && uri != "") {
c.setPath(uri);
} else {
c.setPath(request.getContextPath());
}
// 用来通知浏览器在访问哪个域名的时候带着当前的cookie信息.
// 但是要注意,现代的浏览器一旦发现cookie设置过domain信息则会拒绝接受这个Cookie.我们平常不要设置这个方法
// c.setDomain(".baidu.com");
response.addCookie(c);
}
二、查找指定cookie
public static String GetCookie(HttpServletRequest request, String strName) {
Cookie[] cs = request.getCookies();
Cookie findC = null;
if (cs != null) {
for (Cookie c : cs) {
if (strName.equals(c.getName())) {
findC = c;
}
}
}
if (findC != null) {
return findC.getValue();
}
return null;
}
三、删除cookie
// 删除一个Cookie,发送一个同名同path的cookie,maxage设置为0
// 注意,删除cookie时,path必须一致,否则不会删除(浏览器通过cookie的name+path来标识一个cookie)
Cookie c = new Cookie(strName, null);
c.setMaxAge(0);
c.setPath(request.getContextPath());
response.addCookie(c);