首页 > 编程语言 >Javaweb开发核⼼心之Cookie实战

Javaweb开发核⼼心之Cookie实战

时间:2024-11-20 10:49:09浏览次数:3  
标签:实战 cookie http Javaweb Cookie import servlet javax

简介:javaweb操作浏览器器cookie

1.创建并发送 Cookie

package com.gaze;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;


@WebServlet("/setCookie")
public class SetCookieServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 创建 Cookie
        Cookie cookie = new Cookie("username", "JohnDoe");

        // 设置有效期(单位:秒,3600秒为1小时)
        cookie.setMaxAge(3600);

        // 设置作用路径
        cookie.setPath("/");

        // 将 Cookie 发送给客户端
        response.addCookie(cookie);

        response.getWriter().println("Cookie 'username' has been set.");
    }
}

cookie.setPath("/")详解

  • cookie 是一个 javax.servlet.http.Cookie 类的实例,它代表了一个HTTP Cookie,通常用于在客户端(用户的浏览器)和服务器之间传递信息。

  • setPath(String path) 是 Cookie 类的一个方法,用于指定Cookie的有效路径。这个路径决定了浏览器在哪些URL请求中会包含这个Cookie。

  • 当你调用 cookie.setPath("/"); 时,你实际上是在告诉浏览器,这个Cookie对于当前Web应用程序的根目录及其所有子目录下的所有页面都是有效的。换句话说,只要请求的URL是以域名开头

例如:

  • 如果你设置 cookie.setPath("/");,那么无论用户访问 http://www.example.com/index.html

  • http://www.example.com/products/list.html 是 http://www.example.com/about/us.html,浏览器都会发送这个Cookie。

  • 如果你设置 cookie.setPath("/products");,那么这个Cookie只会在用户访问以 /products 开头的页面时发送,如 http://www.example.com/products/list.html,但不会在访问 http://www.example.com/about/us.html 时发送。

 

Cookie 的设置、读取、修改和删除:

  1. package com.gaze;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.*;
    import java.io.IOException;
    
    
    @WebServlet("/setCookie")
    public class SetCookieServlet extends HttpServlet {
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 创建 Cookie
            Cookie cookie = new Cookie("username", "JohnDoe");
    
            // 设置有效期(单位:秒,3600秒为1小时)
            cookie.setMaxAge(3600);
    
            // 设置作用路径
            cookie.setPath("/");
    
            // 将 Cookie 发送给客户端
            response.addCookie(cookie);
    
            response.getWriter().println("Cookie 'username' has been set.");
        }
    }
    package com.gaze;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/getCookie")
    public class GetCookieServlet extends HttpServlet {
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, IOException {
            Cookie[] cookies = request.getCookies();
            if (cookies != null) {
                for (Cookie cookie : cookies) {
                    // 输出 Cookie 的名称和值
                    response.getWriter().println(cookie.getName() + ": " + cookie.getValue());
                }
            } else {
                response.getWriter().println("No cookies found.");
            }
        }
    }
    
    package com.gaze;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/deleteCookie")
    public class DeleteCookieServlet extends HttpServlet {
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            Cookie cookieToDelete = new Cookie("username", null);
            cookieToDelete.setMaxAge(0); // 设置有效期为 0
            cookieToDelete.setPath("/");
            response.addCookie(cookieToDelete);
    
            response.getWriter().println("Cookie has been deleted.");
        }
    }
    
    package com.gaze;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet("/updateCookie")
    public class UpdateCookieServlet extends HttpServlet {
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, IOException {
            Cookie updatedCookie = new Cookie("username", "JaneDoe");
            updatedCookie.setMaxAge(3600); // 更新有效期
            updatedCookie.setPath("/");
            response.addCookie(updatedCookie);
    
            response.getWriter().println("Cookie has been updated.");
        }
    }
    

    注意:js获取cookie,可以获取token,但是获取不不到JSESSIONID,因为 http-only原因

标签:实战,cookie,http,Javaweb,Cookie,import,servlet,javax
From: https://blog.csdn.net/weixin_67996964/article/details/143889679

相关文章

  • Python 人工智能项目的五大实战技巧
    技巧一:数据预处理的重要性理论讲解:数据是机器学习的基础,而数据预处理则是确保模型性能的关键步骤。常见的数据预处理技术包括数据清洗、缺失值处理、特征缩放和编码等。通过这些步骤,可以提高模型的准确性和泛化能力。代码示例:importpandasaspdfromsklearn.preprocess......
  • edusrc—记录一次某证书站捡漏拿下证书实战,网络安全零基础入门到精通教程!
    一、信息收集测试证书站首先得对他的资产收集一波首先,在icp备案查询网站查询备案的主域名有哪些https://beian.miit.gov.cn/img然后利用子域名收集工具对二级子域名,三级子域名进行收集,扩大资产范围我一般用oneforall这个工具收集资产,挺好用的,这里放上链接https://gi......
  • 【默子实战】李子柒回归之际,千行代码分析李子柒B站33万条弹幕!
    大家好,我是默子。随着李子柒的强势回归,B站上的相关视频和弹幕热度持续攀升。作为一名技术爱好者,默子决定用编程的方式深入分析B站李子柒视频以及相关视频的33万条弹幕探究观众的真实情感和互动模式。今天,默子将带大家详细拆解每一个技术环节展示怎么对B站弹幕进行全面......
  • scrapy关于输入了cookies,却还是重定向到了登陆页面的问题
    一、前言    hello,兄弟们我又来解惑了,这次我遇到的问题与标题所写的一样,我是用selenium获取cookie后传给scrapy处理请求,这几天,因为response会重定向到登录页面,这让我费了一把的头发,东问西问,终于在网上找了许多资料,终于找到了解决的方案二、解决方案    输......
  • 上门家政系统功能解析案例实战演练
    上门家政APP平台的问世,在极大程度上化解了大众家庭中不愿做家务的难题,这让众多创业者从中看到了新的创业方向。他们觉得上门家政APP平台竞争小,易于复制,属于轻资产创业模式,经济负担不大,并且上线速度快,能够迅速抢占市场。上门家政APP平台主要涵盖用户端、家政端、后台端三个......
  • 【Python】30个Python爬虫的实战项目!!!(附源码)
    Python爬虫是数据采集自动化的利器。本文精选了30个实用的Python爬虫项目,从基础到进阶,每个项目都配有完整源码和详细讲解。通过这些项目的实战,可以全面掌握网页数据抓取、反爬处理、并发下载等核心技能。一、环境准备在开始爬虫项目前,需要安装以下Python库:......
  • 鸿蒙HarmonyOS实战开发:hilog命令行查询
     鸿蒙NEXT开发实战往期必看文章:一分钟了解”纯血版!鸿蒙HarmonyOSNext应用开发!“非常详细的”鸿蒙HarmonyOSNext应用开发学习路线!(从零基础入门到精通)HarmonyOSNEXT应用开发案例实践总结合(持续更新......)HarmonyOSNEXT应用开发性能优化实践总结(持续更新......)HiLog日......
  • AI 实战篇:Spring-AI再更新!细细讲下Advisors
    在2024年10月8日,SpringAI再次进行了更新,尽管当前版本仍为非稳定版本(1.0.0-M3),但博主将持续关注这些动态,并从流行的智能体视角深入解析其技术底层。目前,SpringAI仍处于小众状态,尚未经过开源社区多年的维护和稳定化过程,这与已经较为成熟的Spring框架形成鲜明对比。即便是SpringAI......
  • LangGraph 状态机:复杂 Agent 任务流程管理实战
    什么是LangGraph?LangGraph是一个专门为LLM应用设计的工作流编排框架。它的核心理念是:将复杂任务拆分为状态和转换管理状态之间的流转逻辑处理任务执行过程中的各种异常情况想象一下购物过程:浏览商品→加入购物车→结算→支付,LangGraph就是帮助我们管理这种流程......
  • Flink 实战之 Real-Time DateHistogram
    系列文章Flink实战之Real-TimeDateHistogramFlink实战之从Kafka到ESDateHistogram用于根据日期或时间数据进行分桶聚合统计。它允许你将时间序列数据按照指定的时间间隔进行分组,从而生成统计信息,例如每小时、每天、每周或每月的数据分布情况。Elasticsearch就......