如何使用 Spring 将"Cookie"标头解析为"javax.servlet.http.Cookie"?



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

例如,请求中的Cookie

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

spring是否提供了一些实用工具来轻松解析它?我不想手动解析它,也不想涉及其他一些库

Spring提供@CookieValue作为处理程序方法参数的注释。它既支持Cookie作为参数类型,也支持Stringint

指示方法参数应绑定到的注释HTTP cookie。Servlet和中的注释处理程序方法支持Portlet环境。

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

在封面下面,它使用WebUtils#getCookie将值解析为Cookie

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

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

您可以在控制器方法中使用Annotation进行尝试

@CookieValue("Cookie") String cookie

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

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

或带有扫描仪:

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

最新更新