我是把保存读取写在工具类里面,优化cookie的时候就在工具类优化就好了,其实原理就那几行,主要就是在response写入cookie,resp.addCookie(new Cookie(key,value));这个代码那里都可以写,只要你拿的到response就可以了。

public class CookieUtil {/**
     * 保存Cookies
     * @param response
     * @param key
     * @param value
     * @param time
     * @param ip
     * @return
     */
    public static HttpServletResponse setCookie(HttpServletResponse response, String key, String value, int time,String ip) {// new一个Cookie对象,键值对为参数
        Cookie cookie = new Cookie(key, value);
        // tomcat下多应用共享
        cookie.setPath("/");
        //cookie.setDomain(ip);
        // 如果cookie的值中含有中文时,需要对cookie进行编码,不然会产生乱码.
        try {URLEncoder.encode(value, "utf-8");
        } catch (UnsupportedEncodingException e) {e.printStackTrace();
        }//秒为单位
        cookie.setMaxAge(time);
        // 将Cookie添加到Response中,使之生效
        response.addCookie(cookie); // addCookie后,如果已经存在相同名字的cookie,则最新的覆盖旧的cookie
        return response;
    }/**
     * 将cookie封装到Map里面
     * @param request
     * @return
     */
    private static Map<String, Cookie> ReadCookieMap(HttpServletRequest request) {Map<String, Cookie> cookieMap = new HashMap<String, Cookie>();
        Cookie[] cookies = request.getCookies();
        if (null != cookies) {for (Cookie cookie : cookies) {cookieMap.put(cookie.getName(), cookie);
            }}return cookieMap;
    }/**
     * 根据名字获取cookie
     *
     * @param request
     * @param name
     *            cookie名字
     * @return
     */
    public static Cookie getCookieByName(HttpServletRequest request, String name) {Map<String, Cookie> cookieMap = ReadCookieMap(request);
        if (cookieMap.containsKey(name)) {Cookie cookie = (Cookie) cookieMap.get(name);
            return cookie;
        } else {return null;
        }}/**
     * 删除无效cookie
     * @param request
     * @param response
     * @param deleteKey
     * @throws NullPointerException
     */
    private void delectCookieByName(HttpServletRequest request, HttpServletResponse response,String deleteKey) throws NullPointerException {Map<String, Cookie> cookieMap = ReadCookieMap(request);
        for (String key : cookieMap.keySet()) {if (key == deleteKey && key.equals(deleteKey)) {Cookie cookie = cookieMap.get(key);
                cookie.setMaxAge(0);//设置cookie有效时间为0
                cookie.setPath("/");//不设置存储路径
                response.addCookie(cookie);
            }}}
}

写入方式:(调用工具类接口传参就完事了)

//将userId,tiken存入cookie
CookieUtil.setCookie(response,"userId",userSession.getUser().getId().toString(),1800,userSession.getIp());

读取cookie有3种方式,反正我现在只知道3种:

//1.获取的是数组类型的cookie
Cookie[] cookies=request.getCookies();
//循环或者这么取都行
String cookie = request.getCookies()[0].getValue();
//2.使用自己封装好的的工具类
CookieUtil.getCookieByName(request,"userId");

3.如果你是spring boot,在需要使用cookie的方法下面使用注解@CookieValue,userId自动获取,name要对的上哦,完事!

@RequestMapping(value = "/isStore",method = RequestMethod.GET)
public ResponseEntity<ErrorMessageBag> isStore(@CookieValue(value = "userId")String userId){

java 获取cookies相关推荐

  1. Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几

    Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...

  2. Java获取照片的Exif信息,并解析GPS

    Java获取照片的Exif信息,并解析GPS 1. 效果图 2. 什么是Exif? 3. 源代码 参考 ❤️ 这篇博客将介绍什么EXIF,以及如何用Java语言读取Exif信息,并转换经纬度为位置信息 ...

  3. java 获取已有字体,java获取本机全部可用字体

    java获取本机所有可用字体 //just for fun,那个28个字母的函数满满都是恶心 import java.awt.GraphicsEnvironment ; class Tester { ...

  4. Java 查看文件绝对路径,JAVA获取文件绝对路径的方法

    本文实例讲述了JAVA获取文件绝对路径的方法.分享给大家供大家参考.具体实现方法如下: /** * 获取一个类的class文件所在的绝对路径. 这个类可以是JDK自身的类,也可以是用户自定义的类,或者 ...

  5. JAVA获取资源的方法

    类名.class=对象.getClass() 获得该类的Class对象 java获取当前工作路径System.getProperty("user.dir"); java获取类所在路 ...

  6. java获取当前路径

    java获取当前路径时间 1.利用System.getProperty()函数获取当前路径: System.out.println(System.getProperty("user.dir& ...

  7. Java 获取操作系统名字、系统版本、cpu信息

    Java 获取操作系统名字.系统版本.cpu信息 System.getProperty("os.name");//得到操作系统名字 System.getProperty(" ...

  8. Java获取数据库表的字段信息,及如何将ResultSet转为json

    为什么80%的码农都做不了架构师?>>>    一.Java获取数据库表的各个字段的相关信息 在某些开发情景中,需要获取数据库中表的各个字段的相关信息,如字段名,字段类型,字段大小等 ...

  9. 通过JAVA获取优酷、土豆、酷6、6间房等视频

    为什么80%的码农都做不了架构师?>>>    通过JAVA获取优酷.土豆.酷6.6间房.56视频,现在很多社会网站都有这个功能,用户输入优酷.土豆.酷6.6间房.56视频地址后,能 ...

最新文章

  1. PHP MVC框架核心类
  2. 不用面部识别?亚马逊准备推出人手支付,0.3秒刷手支付
  3. iview选择月份 月初月末 时间戳格式
  4. 动态调整线程池_调整线程池的重要性
  5. Problem B: 结构体---职工信息结构体
  6. andorid 回调的理解
  7. GlideDemo【Glide3.7.0版本的简单使用以及圆角功能】
  8. 今天是有纪念意义的一天--中国13亿人口日
  9. Ali-Tomcat 安装
  10. 新概念英语第一册1-144课(转)
  11. 篮球比赛表式计时器_篮球比赛24秒倒计时器的设计(word文档)
  12. Python-----并发,并行,进程,多进程
  13. 2022年中国工业互联网安全大赛北京市选拔赛暨全国线上预选赛MISC-工控文件Writeup
  14. MYSQL数据库报错 1055
  15. 盈利“晴空”下,唯品会拨不开的“乌云”
  16. 【Json转换为实体类】
  17. 大学生生涯职业规划计算机专业,大学生职业生涯规划书计算机专业范文
  18. 高斯朴素贝叶斯分类的原理解释和手写代码实现
  19. 国产数据库岁末大盘点
  20. 针式怎么修改打印机服务器属性,针式打印机设置,小编教你针式打印机怎么设置纸张大小...

热门文章

  1. 操作记录表怎么设计_驻马店钢结构楼梯设计公司
  2. MySQL密码重置(windows版本)
  3. vue 封装js常用工具函数包
  4. 两个tplink路由器有线桥接_TP-Link路由器有线桥接
  5. Linux网络编程——字节序与网络字节序
  6. 深入学习java非阻塞IO
  7. 抽象工厂模式实现简单的kfc点餐
  8. 王者荣耀s23服务器维护,王者荣耀s23更新不了是什么原因 王者荣耀s23不能更新怎么解决...
  9. 闭着眼睛也要会打的【数据的输入和输出有几道练习题】---- HDU1089-1096
  10. python时间计算_python 计算一年内的所有周的具体日期详解