当前位置: 首页 > 面试题库 >

在Java Servlet中,如何更改现有Cookie的值?

劳高爽
2023-03-14
问题内容

在Java
Servlet中,如何更改现有Cookie的值?有一个addCookie方法,但是HttpServletResponse中没有deleteCookie或editCookie


问题答案:

那些确实不存在。只需自己创建实用工具方法即可。特别是获得所需的cookie会很肿。例如

public final class Servlets {

    private Servlets() {}

    public static Cookie getCookie(HttpServletRequest request, String name) {
        if (request.getCookies() != null) {
            for (Cookie cookie : request.getCookies()) {
                if (cookie.getName().equals(name)) {
                    return cookie;
                }
            }
        }

        return null;
    }

}

要编辑Cookie,请设置其值,然后将其添加到响应中:

Cookie cookie = Servlets.getCookie(request, "foo");

if (cookie != null) {
    cookie.setValue(newValue);
    response.addCookie(cookie);
}

如果有必要,请设置最大值,路径和域(如果它们与您的默认值不同)。客户端即不回传此信息。

要删除Cookie,请将最长期限设置为0(最好将值也设置为null):

Cookie cookie = Servlets.getCookie(request, "foo");

if (cookie != null) {
    cookie.setMaxAge(0);
    cookie.setValue(null);
    response.addCookie(cookie);
}

如果需要,请设置路径和域(如果它们与默认设置不同)。客户端即不回传此信息。



 类似资料:
  • 我使用Eclipse创建了一个网站,Servlet在其中将数据发送到jsp。但是我不知道为什么我在Servlet中更改数据。它仍然将旧数据发送到jsp。即使我尝试了这些选项.. 菜单-项目-清理(如果不使用自动构建,请单击此选项) 菜单-项目-项目自动构建(选中此选项) 下面是一个例子: Product.java ProductModel.java ProductController.java i

  • 我的应用程序使用webview打开一个网页,该网页正在更新网页上某些交互的一些cookie。现在我想阅读这个cookie,并根据cookie的值对UI进行一些调整。 iOs有一些观察器的实现,可以附加到cookie列表,并在发生任何cookie更改时获取通知。 我正在从long搜索类似的解决方案,但找不到任何类型的侦听器或可以附加到cookie并在更新时了解它们的东西。 我读了和中的所有内容 ht

  • 问题内容: 我们在同一个域的后面有两个项目(在它们前面的zuul代理),都使用spring会话项目,会话保存在redis中。 这两个会话应该是不同的,但似乎它们正在覆盖名为“ SESSION”的cookie中的彼此id。如何更改名字?有没有简单的方法可以通过配置来做到这一点? 问题答案: 好的,我没有在配置中找到任何属性来更改它。我深入研究了Spring会话的源代码,最后做了: “ SESSION

  • 问题内容: 我的代码在tomcat 8版本8.0.33上运行,但在8.5.4上我得到:为此Cookie指定了无效的域[.mydomain]。 我发现Rfc6265CookieProcessor是在tomcat 8最新版本中引入的。 它在官方文档上说可以在context.xml中还原为LegacyCookieProcessor,但是我不知道如何。 请让我知道该怎么做。 谢谢 问题答案: 您可以在co

  • 问题内容: 我想更改的值,我该怎么做? 我正在运行Ubuntu 12.04。 问题答案: 仅运行一次(从unix shell提示符): 更永久地: 在Windows中: 在Windows PowerShell中:

  • 我有一个来自javax的现有jsonobject。json。JsonObject类。 我一辈子都想不出如何修改其中现有的价值观。理想情况下,我想这样做: 根据API,不允许修改该映射。 http://docs.oracle.com/javaee/7/api/javax/json/JsonObject.html 此映射对象提供对JSON对象数据的只读访问,并尝试修改映射,无论是直接修改还是通过其集合