删除页面上的Cookie启动

时间:2015-04-20 07:51:36

标签: javascript jsp cookies widget liferay

我试图在启动Liferay Server网页时删除cookie。该页面是完全静态的,其内容是用wigdets构建的。我对这个东西很陌生,所以我收到了一个提示创建一个新的wigded,它被加载到该页面上,它唯一的功能是删除一些特定的cookie。

所以我在这个页面上添加了一个新的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>

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

1 个答案:

答案 0 :(得分:0)

以下是我们设法控制Cookie的方法。您可以创建扩展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中保存的站点(他们可以在我们的门户网站上拥有自己的主站点)在您的场景中也可能有用。祝你好运。