Java中Cookie常用操作类(Spring中操作Cookie)

说明:Cookie下用Key取值没有快速的方法,只能便利循环去取。

技巧:置0则cookie会立即删除,设置-1,负值则会在关闭浏览器后删除。切记一定要增加路径:setPath("/"),不然不会生效。在获取Cookie时要看下是否设置了域名:setDomain,不然本地调试时获取不到。

Cookie 的限制:

大多数浏览器支持最大为4096字节(4KB)的 Cookie。由于这限制了Cookie的大小,最好用Cookie来存储少量数据,或者存储用户ID之类的标识符。用户ID随后便可用于标识用户,以及从数据库或其他数据源中读取用户信息。 浏览器还限制站点可以在用户计算机上存储的Cookie的数量。大多数浏览器只允许每个站点存储20个Cookie;如果试图存储更多Cookie,则最旧的Cookie便会被丢弃。有些浏览器还会对它们将接受的来自所有站点的Cookie总数作出绝对限制,通常为300个。

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CookieTool {
    /**
     * 添加cookie
     * 
     * @param response
     * @param name Key
     * @param value Value
     * @param maxAge 有效时间
     */
    public static void addCookie(HttpServletResponse response, String name, String value, int maxAge) {
        Cookie cookie = new Cookie(name, value);
        cookie.setPath("/");
        cookie.setMaxAge(maxAge);
        cookie.setDomain(".jsoft.me"); // cookie作用域
        response.addCookie(cookie);
    }

    /**
     * 检索所有Cookie封装到Map集合
     * 
     * @param request
     * @return
     */
    public static Map<String, String> readCookieMap(HttpServletRequest request) {
        Map<String, String> cookieMap = new HashMap<String, String>();
        Cookie[] cookies = request.getCookies();
        if (null != cookies) {
            for (Cookie cookie : cookies) {
                cookieMap.put(cookie.getName(), cookie.getValue());
            }
        }
        return cookieMap;
    }

    /**
     * 通过Key获取Value
     * 
     * @param request
     * @param name Key
     * @return Value
     */
    public static String getCookieValueByName(HttpServletRequest request, String name) {
        Map<String, String> cookieMap = readCookieMap(request);
        if (cookieMap.containsKey(name)) {
            String cookieValue = (String) cookieMap.get(name);
            return cookieValue;
        } else {
            return null;
        }
    }

}

在Spring MVC的Controller中使用:

在Spring MVC中使用CookieValue注解映射请求参数,@CookieValue有三个属性,分别如下:

  1. value请求参数的参数名;
  2. required该参数是否必填,默认为true(必填),当设置成必填时,如果没有传入参数,报错;
  3. defaultValue 设置请求参数的默认值;

 

参考:

http://www.cnblogs.com/jun-ma/p/5679459.html

http://blog.csdn.net/u011848397/article/details/52201339

http://www.ibloger.net/article/33.html(以上内容转自此篇文章)

http://bubkoo.com/2014/04/21/http-cookies-explained/

posted @ 2017-10-24 09:32  EasonJim  阅读(7623)  评论(0编辑  收藏  举报