[英]java - get cookie value by name in spring mvc
我正在研究一個java spring mvc應用程序。 我用這種方式在我的一個控制器方法中設置了一個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
注釋的控制器中使用它:
@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"));
您還可以使用org.springframework.web.util.WebUtils.getCookie(HttpServletRequest, String)
。
private String getCookieValue(HttpServletRequest req, String cookieName) {
return Arrays.stream(req.getCookies())
.filter(c -> c.getName().equals(cookieName))
.findFirst()
.map(Cookie::getValue)
.orElse(null);
}
Spring MVC已經為您提供了HttpServletRequest
對象,它有一個返回Cookie[]
的getCookies()
方法,因此您可以對其進行迭代。
private String extractCookie(HttpServletRequest req) {
for (Cookie c : req.getCookies()) {
if (c.getName().equals("myCookie"))
return c.getValue();
}
return null;
}
Cookie沒有方法來獲取價值試試這個
Cookie cookie[]=request.getCookies();
Cookie cook;
String uname="",pass="";
if (cookie != null) {
for (int i = 0; i < cookie.length; i++) {
cook = cookie[i];
if(cook.getName().equalsIgnoreCase("loginPayrollUserName"))
uname=cook.getValue();
if(cook.getName().equalsIgnoreCase("loginPayrollPassword"))
pass=cook.getValue();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.