当前位置: 首页 > article >正文

SpringBoot创建Cookie工具类实现Cookie的:写入、读取、删除

1、什么是 Cookie

Cookie 是网站服务器发送到客户端(通常是浏览器)的一小段数据,用于在客户端存储用户信息,以便在用户再次访问网站时提供更好的体验。当用户在浏览器中访问某个网站时,服务器可能会在用户的计算机上创建一个 Cookie。这个 Cookie 包含了服务器的某些信息,如用户的登录状态、个性化设置等。当用户再次访问该网站时,浏览器会自动将这些 Cookie 发送给服务器,服务器通过读取这些信息来识别用户并提供相应的服务。

1.1 Cookie 的用途

用户身份识别:通过 Cookie 可以标识和识别用户,帮助网站记住用户的登录状态和个性化设置。

购物车和购买记录:在网上购物时,Cookie 可以跟踪用户添加到购物车中的商品和购买记录,确保购物过程的连续性和方便性。

网站分析和统计:网站使用 Cookie 来收集匿名的用户访问数据,如访问次数、页面浏览量、用户行为等,以用于网站的分析和优化。

广告定向:一些广告商使用 Cookie 来跟踪用户在网上的活动,从而投放更加相关和个性化的广告。

网站功能优化:Cookies 还可以用于网站功能的优化,例如记住用户选择的语言、地区等。

1.2 安全性与隐私

安全性:Cookie 本身并不包含病毒或恶意软件,但它们可以被用于跟踪用户的在线活动,从而可能引发隐私泄露的风险。因此,使用 Cookie 时需要谨慎处理用户数据,并遵守相关的隐私政策和法律法规。

隐私保护:为了保护用户的隐私,许多浏览器都提供了清除 Cookie 的功能。用户可以随时选择删除计算机上的 Cookie,以避免个人信息被泄露或滥用。 

2、创建 Cookie 工具类

在 SpringBoot 项目中,后端需要经常操作 Cookie 对象,所有创建 Cookie 工具类可以提高开发效率。

创建  CookieUtil 类(Cookie公共方法类):

package com.pjb.ems.util;

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

/**
 * Cookie公共方法类
 * @author pan_junbiao
 **/
public class CookieUtil
{
    /**
     * 写入 Cookie 对象
     * 过期时间(单位为秒):-1:负数永不过期;0:则立马过期
     */
    public static void writeCookie(String name, String value, int maxAge, HttpServletResponse response)
    {
        Cookie cookie = new Cookie(name, value);
        cookie.setMaxAge(maxAge);      // 设置过期时间(单位为秒)
        cookie.setDomain("127.0.0.1"); // 设置域名,实现跨域功能
        cookie.setPath("/");
        response.addCookie(cookie);
    }

    /**
     * 读取 Cookie 的值
     */
    public static String readCookie(String name, HttpServletRequest request)
    {
        String value = null;
        Cookie[] cookies = request.getCookies();
        if (cookies != null && cookies.length > 0)
        {
            for (Cookie cookie : cookies)
            {
                if (name.equals(cookie.getName()))
                {
                    value = cookie.getValue();
                    break;
                }
            }
        }
        return value;
    }

    /**
     * 删除 Cookie 对象
     */
    public static void deleteCookie(String name, HttpServletRequest request, HttpServletResponse response)
    {
        Cookie[] cookies = request.getCookies();
        if (cookies != null && cookies.length > 0)
        {
            for (Cookie cookie : cookies)
            {
                if (name.equals(cookie.getName()))
                {
                    cookie.setMaxAge(0); // 设置有效时间为0秒的时候:创建完cookie后,则立马过期(删除);
                    cookie.setPath("/");
                    response.addCookie(cookie);
                }
            }
        }
    }
}

3、知识补充

在 SpringBoot 项目中,后端如何获取 HttpServletRequest、HttpServletResponse 和 HttpSession 对象?

 SpringBoot 如何获取 HttpServletRequest、HttpServletResponse 和 HttpSession 对象:

详细方法,请求点击浏览文章:《SpringMVC获取HttpServletRequest、HttpServletResponse和HttpSession对象的3种方法》

后端代码,可以通过ServletRequestAttributes对象。

/**
 * 获取信息
 *
 * @author pan_junbiao
 */
@RequestMapping(value = "/getInfo")
public void getInfo()
{
    //获取ServletRequestAttributes对象
    ServletRequestAttributes servletRequestAttributes = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes());
 
    //获取HttpServletRequest对象
    HttpServletRequest request = servletRequestAttributes.getRequest();
 
    //获取HttpServletResponse对象
    HttpServletResponse response = servletRequestAttributes.getResponse();
 
    //获取HttpSession对象
    HttpSession session = servletRequestAttributes.getRequest().getSession();
 
    //忽略其他代码...
}


http://www.kler.cn/a/400898.html

相关文章:

  • Windows docker下载minio出现“Using default tag: latestError response from daemon”
  • kubernetes如何配置默认存储
  • Django5 2024全栈开发指南(三):数据库模型与ORM操作
  • esp32c3开发板通过micropython的mqtt库连MQTT物联网消息服务器
  • linux虚拟机无法使用yum在线拉取
  • 从零入门激光SLAM(二十三)——direct_visual_lidar_calibration全型号激光雷达-相机标定包
  • 用c++做游戏开发至少要掌握哪些知识?
  • 人工智能技术颠覆未来生活
  • 【Rust调用Windows API】读取系统CPU利用率
  • Vue3 目录结构
  • Vue3.0 + Ts:动态设置style样式 ts 报错
  • 数据库审计工具--Yearning 3.1.9普民的使用指南
  • 卡尔曼滤波学习资料汇总
  • Spring Security 核心组件
  • ArcGIS Pro ADGeoDatabase DAML
  • Git提交时如何排除bin、obj目录
  • 新手小白学习docker第六弹------Docker常规安装(安装tomcat、mysql、redis)
  • 鸿蒙NEXT自定义组件:太极Loading
  • 使用 Keras 训练一个循环神经网络(RNN)
  • Spring MVC前后端数据传输项目实践
  • 【nginx】client timed out和send_timeout的大小设置
  • Python模块、迭代器、正则表达式
  • redis服务启动windows客户端操作 (双开)
  • ETH钱包地址如何获取 如何购买比特币
  • PHP Switch 语句
  • Python模块、迭代器与正则表达式day10