参考文档

示例

示例1

PublicParam 是一个公共参数类

import com.anchi.car.coresystem.consumer.exception.LoginException;
import com.anchi.car.coresystem.consumer.model.PublicParam;
import com.google.common.base.Splitter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * cookie工具类
 * Created by 
 * 2017-07-30 16:31
 */
@Slf4j
@Component
public class CookieUtil {

    /**
     * 元素个数
     */
    private static final Integer COOKIE_ELE_SIZE = 8;

    /**
     * 设置
     *
     * @param response
     * @param name
     * @param value
     * @param maxAge
     */
    public void set(HttpServletResponse response,
                    String name,
                    String value,
                    int maxAge) {
        Cookie cookie = new Cookie(name, value);
        cookie.setPath("/");
        cookie.setMaxAge(maxAge);
        response.addCookie(cookie);
    }

    /**
     * 获取cookie
     *
     * @param request
     * @param name
     * @return
     */
    public Cookie get(HttpServletRequest request,
                      String name) {
        Map<String, Cookie> cookieMap = readCookieMap(request);
        return cookieMap.getOrDefault(name, null);
    }

    /**
     * 获取cookie的值
     *
     * @param request
     * @param name
     * @return
     */
    public String getValue(HttpServletRequest request,
                           String name) {
        Map<String, Cookie> cookieMap = readCookieMap(request);
        if (cookieMap.containsKey(name)) {
            return cookieMap.get(name).getValue();
        } else {
            throw new LoginException("登录异常");
        }
    }

    /**
     * 获取cookie的值
     *
     * @param request
     * @param name
     * @return
     */
    public PublicParam getPublicParam(HttpServletRequest request,
                                      String name) {
        String cookieValue = getValue(request, name);
        List<String> cookieValueList = new ArrayList<>();
        Splitter.on("|").split(cookieValue).forEach(cookieValueList::add);
        if (cookieValueList.size() != COOKIE_ELE_SIZE) {
            throw new LoginException("登录异常");
        }
        PublicParam publicParamTemp = new PublicParam();
        for (int i = 0; i < cookieValueList.size(); i++) {
            if (i == 0) {
                publicParamTemp.setUserId(cookieValueList.get(i));
            }

            if (i == 1) {
                publicParamTemp.setDeviceId(cookieValueList.get(i));
            }

            if (i == 2) {
                publicParamTemp.setPid(cookieValueList.get(i));
            }

            if (i == 3) {
                publicParamTemp.setVid(cookieValueList.get(i));
            }

            if (i == 4) {
                publicParamTemp.setLng(cookieValueList.get(i));
            }

            if (i == 5) {
                publicParamTemp.setLat(cookieValueList.get(i));
            }

            if (i == 6) {
                publicParamTemp.setLang(cookieValueList.get(i));
            }

            if (i == 7) {
                publicParamTemp.setDeviceToken(cookieValueList.get(i));
            }
        }
        return publicParamTemp;
    }

    /**
     * 将cookie封装成Map
     *
     * @param request
     * @return
     */
    private Map<String, Cookie> readCookieMap(HttpServletRequest request) {
        Cookie[] cookies = request.getCookies();
        if (cookies != null) {
            Map<String, Cookie> cookieMap = new HashMap<>(cookies.length);
            for (Cookie cookie : cookies) {
                cookieMap.put(cookie.getName(), cookie);
            }
            return cookieMap;
        } else {
            return new HashMap<>(0);
        }
    }

}