java - 在spring mvc中按名称获取cookie值

标签 java spring-mvc cookies

我正在开发一个 java spring mvc 应用程序。我以这种方式在我的 Controller 的一个方法中设置了一个 cookie:

@RequestMapping(value = {"/news"}, method = RequestMethod.GET)
public ModelAndView news(Locale locale, Model model, HttpServletResponse response, HttpServletRequest request) throws Exception {

    ...
    response.setHeader("Set-Cookie", "test=value; Path=/");
    ...

    modelAndView.setViewName("path/to/my/view");
    return modelAndView;
}

这工作正常,我可以在我的浏览器控制台中看到一个名为 test 和值“value”的 cookie。现在我想在其他方法中按名称获取 cookie 值。如何获取 test cookie 的值?

最佳答案

最简单的方法是在带有 @CookieValue 注释的 Controller 中使用它:

@RequestMapping("/hello")
public String hello(@CookieValue("foo") String fooCookie) {
    // ...
}

否则,您可以使用 Spring org.springframework.web.util.WebUtils

从 servlet 请求中获取它
WebUtils.getCookie(HttpServletRequest request, String cookieName)

顺便说一句,粘贴到问题中的代码可以稍微改进一下。而不是使用 #setHeader(),这更优雅:

response.addCookie(new Cookie("test", "value"));

关于java - 在spring mvc中按名称获取cookie值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33118342/

相关文章:

java - 使用 httpclient 4.x 验证单个请求

java - 创建 Liferay portlet 配置页面

java - 使用 Spring Controller 处理错误 404

javascript - Safari javascript cookie 问题

javascript - Angular karma 测试 $.cookie

java - 尝试导入项目时,IntelliJ IDE 中未检测到框架

java - EJB 仍然有用吗? Spring Framework 有哪些替代 EJB 的方法?

java - Jersey/Spring/Grizzly 集成测试始终返回 500 - 无详细信息

java - 从非 Spring 类调用 Spring 服务失败

javascript - 如何在没有 cookie 的情况下在我的网站上使用 MathJax