自学内容网 自学内容网

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();
 
    //忽略其他代码...
}


原文地址:https://blog.csdn.net/pan_junbiao/article/details/143776558

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!