package com.app.mvc.util;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Created by jimin on 15/11/5.
*/
public class CookieUtil {
public static String getCookieValue(Cookie[] cookies, String name) {
if (cookies == null) {
return null;
}
for (Cookie c : cookies) {
if (name.equals(c.getName())) {
return c.getValue();
}
}
return null;
}
/**
* 在取cookie值,如果获取失败,将用空字符串代替null。
* 同时把代码中多处重复代码都替换成这个
*/
public static String getCookieValueWithEmptyStrReplaceNull(HttpServletRequest request, String name) {
Cookie[] cookies = request.getCookies();
String defaultVal = "";
if (cookies != null) {
for (Cookie c : cookies) {
if (name.equals(c.getName())) {
defaultVal = c.getValue();
break;
}
}
}
return defaultVal;
}
/**
* 记录当前的所有cookie
*/
public static String getAllCookie(HttpServletRequest request) {
Cookie[] cookies = request.getCookies();
StringBuffer cookieSb = new StringBuffer();
if (cookies != null) {
for (Cookie ck : cookies) {
cookieSb.append(ck.getName());
cookieSb.append(",");
cookieSb.append(ck.getValue());
cookieSb.append(";");
}
}
return cookieSb.toString();
}
public static String getRfcCookies(HttpServletRequest request, String domain) {
Cookie[] cookies = request.getCookies();
StringBuffer cookieSb = new StringBuffer();
if (cookies != null) {
for (Cookie ck : cookies) {
cookieSb.append(ck.getName());
cookieSb.append("=");
cookieSb.append(ck.getValue());
cookieSb.append(";");
}
}
if (StringUtils.isNotEmpty(domain)) {
cookieSb.append("domain=").append(domain).append(";");
}
return cookieSb.toString();
}
public static Cookie getCookie(HttpServletRequest request, String cookieName) {
Cookie[] cookies = request.getCookies();
if (cookies == null) {
return null;
}
Cookie cookie = null;
for (Cookie ck : cookies) {
String ckName = ck.getName();
if (cookieName.equals(ckName)) {
cookie = ck;
break;
}
}
return cookie;
}
public static void writeTouchCookie(HttpServletResponse response, HttpServletRequest request, int maxAge, String cName, String cValue, String domain) {
Cookie cookie = CookieUtil.getCookie(request, cName);
if (cookie == null) {
cookie = new Cookie(cName, cValue);
} else {
cookie.setValue(cValue);
}
cookie.setMaxAge(maxAge);
cookie.setDomain(domain);
cookie.setPath("/");
response.addCookie(cookie);
}
public static void writeTouchCookie(HttpServletResponse response, HttpServletRequest request, String cName, String cValue, String domain, int hour) {
writeTouchCookie(response, request, hour * 3600, cName, cValue, domain);
}
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 String getPath(HttpServletRequest request) {
String path = request.getContextPath();
return (path == null || path.length() == 0) ? "/" : path;
}
}