SpringBoot cookie工具类

code:

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;
	}

}

原文地址:https://www.cnblogs.com/hongdada/p/9791663.html