Une pratique courante consistait à obtenir des cookies à partir de HttpServletRequest et à en récupérer. Cela ressemble à ceci:
CookieController.java
    @GetMapping("cookies3")
    public String showCookies3(HttpServletRequest httpServletRequest) {
        Cookie[] cookies = httpServletRequest.getCookies();
        Arrays.stream(cookies).forEach(cookie -> System.out.println(cookie.getValue()));
        return VIEW_NAME;
    }
Cependant, vous pouvez l'obtenir un peu plus facilement en utilisant Spring.
Définissez le cookie de manière appropriée.
CookieController.java
    private final String VIEW_NAME = "demo/cookie/index";
    @GetMapping("/")
    public String index(HttpServletResponse httpServletResponse) {
        httpServletResponse.addCookie(new Cookie("key1", "value1"));
        return VIEW_NAME;
   }
Vous pouvez facilement l'obtenir en utilisant l'annotation CookieValue comme indiqué ci-dessous. L'argument est la valeur clé du cookie.
CookieController.java
    private final String VIEW_NAME = "demo/cookie/index";
    @GetMapping("cookies1")
    public String showCookies1(@CookieValue("key1") String cookieValue) {
        System.out.println(cookieValue);
        return VIEW_NAME;
    }
Cependant, avec la méthode d'écriture ci-dessus, si le cookie est supprimé et ne peut pas être obtenu, une erreur d'exécution se produit. ※Resolved [org.springframework.web.bind.MissingRequestCookieException: Missing cookie 'key1' for method parameter of type String])
Par conséquent, cela peut être évité en définissant required de @CookieValue sur false (la valeur par défaut est requise = true) comme indiqué ci-dessous.
Cependant, dans ce cas, null est défini dans l'argument, donc en spécifiant l'attribut defaultValue, il est possible de spécifier la valeur par défaut si elle ne peut pas être obtenue à partir du cookie.
CookieController.java
    private final String VIEW_NAME = "demo/cookie/index";
    @GetMapping("cookies2")
    public String showCookies2(
            @CookieValue(name = "key1", required = false, defaultValue = "default value1") String cookieValue) {
        System.out.println(cookieValue);
        return VIEW_NAME;
    }
c'est tout.
Recommended Posts