• 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。

  • 相关阅读:
    07.C#泛型的限制和可空类型的简单说明(三章3.5-四章4.1)
    列表的相关操作和方法/深浅拷贝
    字符串的格式化format和字符串相关函数
    for循环和关键字
    双项循环经典题
    python流程控制
    python运算符
    容器类型的强制转换和字典强转
    python强制类型转换和自动类型转换
    Javascript 执行环境及作用域
  • 原文地址:https://www.cnblogs.com/kkdn/p/8931936.html
Copyright © 2020-2023  润新知