关于CookieUtile的相关代码
public class CookieUtil{
/**
* 根据name获得cookie
*
* @param request
* @param name
* @return
*/
public static Cookie getCookie(HttpServletRequest request,String name){
Cookie cookies[] = request.getCookies();
if (cookies == null || name == null || name.length() == 0){
return null;
}
for (int i = 0; i < cookies.length; i++){
if (name.equals(cookies[i].getName())
/* && request.getServerName().equals(cookies[i].getDomain()) */){
return cookies[i];
}
}
return null;
}
/**
* 根据cookie对象移除cookie
*
* @param request
* @param response
* @param cookie
*/
public static void deleteCookie(HttpServletRequest request,HttpServletResponse response,Cookie cookie){
if (cookie != null){
cookie.setPath(getPath(request));
cookie.setValue("");
cookie.setMaxAge(0);
response.addCookie(cookie);
}
}
/**
* 根据cookie的name删除
*
* @param request
* @param response
* @param cookieName
*/
public static void deleteCookie(HttpServletRequest request,HttpServletResponse response,String cookieName){
Cookie cookie = new Cookie(cookieName, "");
deleteCookie(request, response, cookie);
}
/**
* 通过name和value产生一个生命周期为2592000秒的cookie
*
* @param request
* @param response
* @param name
* 键
* @param value
* 值
*/
public static void setCookie(HttpServletRequest request,HttpServletResponse response,String name,String value){
setCookie(request, response, name, value, 0x278d00);
}
/**
* 通过name和value产生一个生命周期为maxAge秒的cookie
*
* @param request
* @param response
* @param name
* 键
* @param value
* 值
* @param maxAge
* 生命周期
*/
public static void setCookie(HttpServletRequest request,HttpServletResponse response,String name,String value,int maxAge){
Cookie cookie = new Cookie(name, value == null ? "" : value);
cookie.setMaxAge(maxAge);
cookie.setPath(getPath(request));
response.addCookie(cookie);
}
private static StringBuffer generateCookieStringInTomcat(final Cookie cookie,final boolean httpOnly){
final StringBuffer sb = new StringBuffer();
// web application code can receive a IllegalArgumentException
// from the appendCookieValue invokation
if (SecurityUtil.isPackageProtectionEnabled()){
AccessController.doPrivileged(new PrivilegedAction(){
public Object run(){
ServerCookie.appendCookieValue(
sb,
cookie.getVersion(),
cookie.getName(),
cookie.getValue(),
cookie.getPath(),
cookie.getDomain(),
cookie.getComment(),
cookie.getMaxAge(),
cookie.getSecure(),
httpOnly);
return null;
}
});
}else{
ServerCookie.appendCookieValue(
sb,
cookie.getVersion(),
cookie.getName(),
cookie.getValue(),
cookie.getPath(),
cookie.getDomain(),
cookie.getComment(),
cookie.getMaxAge(),
cookie.getSecure(),
httpOnly);
}
return sb;
}
/**
* setCookie的增强版
*
* @param request
* @param response
* @param name
* 键
* @param value
* 值
* @param maxAge
* 生命周期
*/
public static void setCookieHttp(HttpServletRequest request,HttpServletResponse response,String name,String value,int maxAge){
StringBuffer cookie = generateCookieStringInTomcat(new TimeIntervalCookie(name, value, maxAge), true);
response.addHeader("Set-Cookie", cookie.toString());
}
private static String getPath(HttpServletRequest request){
String path = request.getContextPath();
return (path == null || path.length() == 0) ? "/" : path;
}
}