zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    2019 ICPC Asia Nanchang Regional E Eating Plan 离散化+前缀和
    2018icpc南京/gym101981 G Pyramid 找规律
    2018icpc沈阳/gym101955 J How Much Memory Your Code Is Using? 签到
    2018icpc南京/gym101981 K Kangaroo Puzzle 随机化
    series_02
    series_01
    locust_参数化关联
    locust_关联
    locust_单接口
    截图处理
  • 原文地址:https://www.cnblogs.com/EasonJim/p/7721950.html
Copyright © 2011-2022 走看看