code:java
import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.annotation.PostConstruct; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * Created by qhong on 2018/10/15 15:46 **/ @Component public class CookieUtils { public static final int COOKIE_MAX_AGE = 7 * 24 * 3600; public static final int COOKIE_HALF_HOUR = 30 * 60; private static HttpServletResponse response; @Autowired private HttpServletResponse response2; private static HttpServletRequest request; @Autowired private HttpServletRequest request2; @PostConstruct public void beforeInit() { request=request2; response=response2; } /** * 根據Cookie名稱獲得Cookie對象,不存在該對象則返回Null * * @param request * @param name * @return */ public static Cookie getCookie(String name) { Cookie[] cookies = request.getCookies(); if (cookies==null||cookies.length<1) { return null; } Cookie cookie = null; for (Cookie c : cookies) { if (name.equals(c.getName())) { cookie = c; break; } } return cookie; } /** * 根據Cookie名稱直接獲得Cookie值 * * @param request * @param name * @return */ public static String getCookieValue(String name) { Cookie cookie = getCookie(name); if(cookie != null){ return cookie.getValue(); } return null; } /** * 移除cookie * @param request * @param response * @param name 這個是名稱,不是值 */ public static void removeCookie(String name) { if (null == name) { return; } Cookie cookie = getCookie(name); if(null != cookie){ cookie.setPath("/"); cookie.setValue(""); cookie.setMaxAge(0); response.addCookie(cookie); } } /** * 添加一條新的Cookie,能夠指定過時時間(單位:秒) * * @param response * @param name * @param value * @param maxValue */ public static void setCookie(String name, String value, int maxValue) { if (StringUtils.isBlank(name)) { return; } if (null == value) { value = ""; } Cookie cookie = new Cookie(name, value); cookie.setPath("/"); if (maxValue != 0) { cookie.setMaxAge(maxValue); } else { cookie.setMaxAge(COOKIE_HALF_HOUR); } response.addCookie(cookie); try { response.flushBuffer(); } catch (IOException e) { e.printStackTrace(); } } /** * 添加一條新的Cookie,默認30分鐘過時時間 * * @param response * @param name * @param value */ public static void setCookie(String name, String value) { setCookie(name, value, COOKIE_HALF_HOUR); } /** * 將cookie封裝到Map裏面 * @param request * @return */ public static Map<String,Cookie> getCookieMap(){ Map<String,Cookie> cookieMap = new HashMap<>(); Cookie[] cookies = request.getCookies(); if(cookies!=null&&cookies.length>1){ for(Cookie cookie : cookies){ cookieMap.put(cookie.getName(), cookie); } } return cookieMap; } }