zoukankan      html  css  js  c++  java
  • 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;
    	}
    
    }
    
    
  • 相关阅读:
    I2C总线驱动框架详解
    Allegro封装的制作
    轮询与中断 简单分析
    SMI#、SCI#信号在OS、BIOS、EC中的中断方式(Linux)
    var
    集合元素重复问题
    子类重写父类属性和方法
    内存(转)
    DesiredSize,RenderSize&& Width ,ActualWidth
    sql select(A.B)拼接
  • 原文地址:https://www.cnblogs.com/hongdada/p/9791663.html
Copyright © 2011-2022 走看看