package cn.utils;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 操作cookie的工具类(默认cookie的有效路径为"/")
* @author zwq
* @version 1.0
*/
public class CookieUtil {
/**
* 设置cookie
* @param response @see javax.servlet.http.HttpServletResponse
* @param name cookie名
* @param value cookie值
* @param maxAge cookie的最大活跃时间(单位s)
*/
public static void setCookie(HttpServletResponse response,String name,String value,int maxAge){
Cookie cookie = new Cookie(name,value);
cookie.setPath("/");
if(maxAge>0) cookie.setMaxAge(maxAge);
response.addCookie(cookie);
}
/**
* 根据cookie名获取cookie
* @param request @see javax.servlet.http.HttpServletRequest
* @param name cookie名
* @return
*/
public static Cookie getCookieByName(HttpServletRequest request,String name){
Map cookieMap = getCookieMap(request);
if(cookieMap.containsKey(name)){
Cookie cookie = (Cookie)cookieMap.get(name);
return cookie;
}else{
return null;
}
}
/**
* 获取cookie的map集合(key=cookieName,value=cookie)
* @param request @see javax.servlet.http.HttpServletRequest
* @return
*/
private static Map getCookieMap(HttpServletRequest request){
Map cookieMap = new HashMap();
Cookie[] cookies = request.getCookies();
if(null!=cookies){
for(Cookie cookie : cookies){
cookieMap.put(cookie.getName(), cookie);
}
}
return cookieMap;
}
/**
* 根据指定cookie名检测cookie是否存在
* @param request @see javax.servlet.http.HttpServletRequest
* @param name cookie名
* @return
*/
public static boolean checkCookieByName(HttpServletRequest request,String name) {
if (name != null && name.trim() != "") {
Cookie cookie = getCookieByName(request, name);
if (cookie != null) {
return true;
}
}
return false;
}
/**
* 根据指定cookie名删除cookie
* @param request @see javax.servlet.http.HttpServletRequest
* @param response @see javax.servlet.http.HttpServletResponse
* @param name cookie名
*/
public static boolean removeCookie(HttpServletRequest request ,HttpServletResponse response,String name) {
if (name != null && name.trim() != "") {
Cookie[] cookies = request.getCookies();
if (cookies != null && cookies.length > 0) {
for (Cookie cookie : cookies) {
String cookieName = cookie.getName();
// 找到需要删除的Cookie
if (name.equals(cookieName)) {
// 设置生存期为0
cookie.setMaxAge(0);
// 设回Response中生效
response.addCookie(cookie);
return true;
}
}
}
}
return false;
}
}