【问题标题】:How to parse the 'Cookie' header into `javax.servlet.http.Cookie` with Spring?如何使用 Spring 将“Cookie”标头解析为“javax.servlet.http.Cookie”?
【发布时间】:2015-05-06 07:30:40
【问题描述】:

我想将来自 http 请求的 cookie 标头的值解析为 javax.servlet.http.Cookie 实例。

例如,Cookie 在请求中:

Cookie: HSID=AYQEVnDKrdst; Domain=.foo.com; Path=/aaa; HttpOnly

spring 是否提供了任何工具来轻松解析它?我不想手动解析它或涉及其他一些库

【问题讨论】:

  • How to parse a cookie string 的可能重复项
  • @AdrianLeonhard 将问题更改为仅寻找弹簧解决方案,现在不再与该问题重复
  • 我有点惊讶它不应该作为 MVC 参数。可能会考虑在 Spring JIRA 上发布功能请求。
  • @AdrianLeonhard 那一个是关于 Set-Cookie 标头的,这个问题是关于 Cookie 的。

标签: java spring parsing cookies


【解决方案1】:

Spring 提供@CookieValue 作为处理程序方法参数的注解。它同时支持Cookie 作为参数类型和Stringint

表示方法参数应该绑定到的注解 HTTP cookie。支持 Servlet 和 Portlet 环境。

方法参数可以声明为javax.servlet.http.Cookie类型 或作为 cookie 值类型(Stringint 等)。

在幕后,它使用WebUtils#getCookie 将值解析为Cookie

【讨论】:

    【解决方案2】:

    你可以试试控制器方法中的注解:

    @CookieValue("Cookie") String cookie
    

    然后使用Java内置的解析方法:

    String[] cookieValues = StringUtils.split(cookie, ";");
    

    或使用扫描仪:

    Scanner scan = new Scanner(cookie).useDelimiter(";");
    while(scan.hasNext()){
    ...
    }
    

    【讨论】:

      【解决方案3】:

      WebUtils 提供了一个 getCookie 方法 - WebUtils.getCookie

      Cookie cookieName=WebUtils.getCookie(request,this.COOKIE_NAME);
      String cookieValue = cookieName.getValue();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-19
        • 1970-01-01
        • 2019-07-04
        • 1970-01-01
        • 1970-01-01
        • 2021-07-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多