Javascript 在页面启动时删除Cookie

Javascript 在页面启动时删除Cookie,javascript,jsp,cookies,widget,liferay,Javascript,Jsp,Cookies,Widget,Liferay,我正在尝试在启动Liferay服务器网页时删除cookie。该页面是完全静态的,其内容由wigdets构建。我对这个东西还不熟悉,所以我收到了创建一个新的wigded的提示,它被加载到那个页面上,它唯一的功能就是删除一些特定的cookies 所以我在这个页面上放了一个新的wigded,让他加载一些jsp文件,这个文件包含以下代码: <% Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cook

我正在尝试在启动Liferay服务器网页时删除cookie。该页面是完全静态的,其内容由wigdets构建。我对这个东西还不熟悉,所以我收到了创建一个新的wigded的提示,它被加载到那个页面上,它唯一的功能就是删除一些特定的cookies

所以我在这个页面上放了一个新的wigded,让他加载一些jsp文件,这个文件包含以下代码:

<%
Cookie[] cookies = request.getCookies();
if (cookies != null)
{
    for (Cookie cookie:cookies)
    {
        if(cookie.getName().equals("Cookie1")  || cookie.getName().equals("Cookie2"))
        {
            Cookie clearCookie = new Cookie(cookie.getName(), null);
            clearCookie.setMaxAge(0);
            clearCookie.setPath("/");
            response.addCookie(clearCookie);
        }
    }
}
%>
到目前为止,这一个部分有效。它接收来自请求对象的所有cookie,它还找到我正在寻找的两个cookie,但是当涉及到必须替换cookie的部分时,没有任何更改。即使我尝试创建新的cookie,它也不起作用,我想这与响应对象有关,因为我可能需要将它传递给其他对象。但我怎样才能做到这一点呢

我还使用Javascript进行了如下尝试:

<script>
    window.onload = function() {
      document.cookie = "Cookie1=;Path=/";
      document.cookie = "Cookie2=;Path=/";
    };
</script>

问题是,我想替换的cookies没有被替换。相反,这个脚本只是创建了第二批cookie,其名称和路径与第一批cookie相同,但值为空

下面是我们如何控制cookies的。您可以创建扩展Action类的钩子。下面是部分代码,您可以使用

public class ManageCookiesAction extends Action {

    @Override
    public void run(HttpServletRequest request, HttpServletResponse response)
        throws ActionException {

    Cookie[] cookies = request.getCookies();

    /** Manage cookies in you scenario... **/

    }
}
然后在../resource/portal.properties中

servlet.service.events.pre=net.your.hook.class.package.ManageCookiesAction
我们使用它来管理重定向到保存在每个用户cookie中的站点。他们可以在我们的门户上拥有自己的主页,这在您的场景中可能也很有用。祝你好运