zoukankan      html  css  js  c++  java
  • Spring cookie 实战(山东数漫江湖)

    Cookie是什么

    简单来说,cookie就是浏览器储存在用户电脑上的一小段文本文件。cookie 是纯文本格式,不包含任何可执行的代码。一个web页面或服务器告知浏览器按照一定规范来储存这些信息,并在随后的请求中将这些信息发送至服务器,Web服务器就可以使用这些信息来识别不同的用户。大多数需要登录的网站在用户验证成功之后都会设置一个cookie,只要这个 cookie 存在,用户就可以自由浏览这个网站的任意页面。

    为什么需要cookie

    因为HTTP协议是无状态的,对于一个浏览器发出的多次请求,Web服务器无法区分是不是来源于同一个浏览器。所以,需要额外的数据用于维护会话。 Cookie 正是这样的一段随HTTP请求一起被传递的额外数据。

    如何通过代码操作cookie

    新建项目

    mvn archetype:generate -DgroupId=com.cookie -DartifactId=SpringCookieTest -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false -DarchetypeCatalog=internal

    新增cookie

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @ResponseBody
    @RequestMapping("/addCookie")
    public void addCookie(HttpServletRequest request,HttpServletResponse response){
     
    Cookie cookie=new Cookie("test","hello cookie"+System.currentTimeMillis());
    cookie.setMaxAge(300);//设置生命周期以秒为单位
    //cookie.setDomain("localhost");//设置域名,跨域访问时使用
    //cookie.setPath("/");//设置路径,共享cookie时使用
    response.addCookie(cookie);
     
    return;
    }

    显示请求中的cookie

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    @ResponseBody
    @RequestMapping("/showCookie")
    public void showCookie(HttpServletRequest request,HttpServletResponse response){
     
    Cookie[] cookies=request.getCookies();//获取请求中的所有cookie
    if(null!=cookies) {
    for (Cookie cookie : cookies) {
    //输出cookie的标志(name)和值(value)
    System.out.println(cookie.getName() + " - " + cookie.getValue());
    }
    }
    else{
    System.out.println("cookies is null");
    }
     
    return;
    }

    通过Spring获取特定cookie

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import org.springframework.web.bind.annotation.CookieValue;
    import org.springframework.web.bind.annotation.RequestMapping;
     
    @ResponseBody
    @RequestMapping("/getCookie")
    public void getCookieBySpring(
    @CookieValue(value = "test", defaultValue = "hello") String cookie) {
     
    return;
    }

    测试结果

    cookie实例

    注意事项

    如果有操作HttpServletResponse的输出流,要把cookie的操作放在输出流操作之前,不然在浏览器读不到cookie。

  • 相关阅读:
    realsense SDK debug
    网络
    JVM基础系列第11讲:JVM参数之堆栈空间配置
    图片一句话木马简单制作方法
    RocketMQ(四):生产者消息数据写入实现细节
    RocketMQ(三):broker启动逻辑
    发现一个新的技术网站 https://dotnet9.com/
    【最新】解决Github网页上图片显示失败的问题
    c++入门
    Newtonsoft.Json json.net 可以丢弃了,微软发布了 System.Text.Json 适用于.net 4.6.1 +,后悔了,建议.net5+项目使用
  • 原文地址:https://www.cnblogs.com/kkdn/p/8931936.html
Copyright © 2011-2022 走看看