Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我设置了cookie的最大年龄,但关闭浏览器后cookie仍然不存在_Java_Spring Mvc_Cookies - Fatal编程技术网

Java 我设置了cookie的最大年龄,但关闭浏览器后cookie仍然不存在

Java 我设置了cookie的最大年龄,但关闭浏览器后cookie仍然不存在,java,spring-mvc,cookies,Java,Spring Mvc,Cookies,我设置了cookie的最大年龄,但关闭浏览器后cookie仍然不存在。我的控制器: package com.jiaotong114.jiaotong.controller; @Controller @RequestMapping("/") public class CityIndex { @RequestMapping(value="/city/{cityName}", method = RequestMethod.GET) public String printHello(ModelMap

我设置了cookie的最大年龄,但关闭浏览器后cookie仍然不存在。我的控制器:

package com.jiaotong114.jiaotong.controller;
@Controller
@RequestMapping("/")
public class CityIndex { 
@RequestMapping(value="/city/{cityName}", method = RequestMethod.GET)
public String printHello(ModelMap model, @PathVariable("cityName") String cityName, HttpServletRequest request, HttpServletResponse response) {

    Cookie[] c = request.getCookies();
    boolean isNew = true;
    for(int i = 0; i < c.length; i++) {
        if(c[i].getName().equals("cityName")) {
            c[i].setValue(cityName);
            c[i].setMaxAge(365 * 24 * 60 * 60);
            response.addCookie(c[i]);
            isNew = false;
        }
    }
    if(isNew) {
        Cookie cityNameCookie = new Cookie("cityName", cityName);
        cityNameCookie.setMaxAge(365 * 24 * 60 * 60);
        response.addCookie(cityNameCookie);
    }
    request.getSession().setAttribute("cityName", cityName);
    return "index";
}
}
package com.jiaotong114.jiaotong.controller;
@控制器
@请求映射(“/”)
公共类城市索引{
@RequestMapping(value=“/city/{cityName}”,method=RequestMethod.GET)
公共字符串printHello(ModelMap模型,@PathVariable(“cityName”)字符串cityName,HttpServletRequest请求,HttpServletResponse响应){
Cookie[]c=request.getCookies();
布尔值isNew=true;
for(int i=0;i
通过访问来运行此控制器。 然后将cookie添加到客户端。 图片:

有效期为一年。(正如我在代码中设置的:
citynamecokie.setMaxAge(365*24*60*60);

但是,当我关闭浏览器,重新打开它,进入浏览器时。然后我发现我的城市名字饼干不见了


我在代码中设置了cookie的最长使用时间,为什么关闭浏览器后cookie会消失?

最后我找到了问题所在


使用
cookie.setPath(“/”
将cookie的路径设置为应用程序的根目录。这将使cookie可用于所有页面。如果不设置此设置,cookie的路径将是请求路径,这意味着您只能在访问cookie的路径或其子路径时访问cookie。

会话已过期?@Roman C我使用“cityNameCookie.setMaxAge(365*24*60*60);”将过期时间设置为一年。从理论上讲,cookie应该在关闭浏览器并关闭会话后存在。如果关闭浏览器,则不能再次使用同一会话。@Roman C是的,但cookie应该存在,即使会话已关闭,因为我调用了setMaxAge()方法并将现有时间设置为一年。默认设置是关闭浏览器(关闭会话)后cookie将消失,但我通过调用setMaxAge()覆盖了默认设置。如果会话过期,您认为为什么要设置cookie?