GWT:response.setHeader - howto?

时间:2011-06-08 19:34:10

标签: java gwt response

您好我有一个Google Web Toolkit项目。我想用

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");

但我不知道在GWT中设置标头是否热门。我有这个“入门”应用程序:

public class Starter extends HttpServlet {

    @Override
    public void init() throws ServletException {
      //do something    
    }
}

但我怎样才能获得“回复”?我需要一个“HttpServletResponse”。但是我该如何以及在哪里放呢?我看到了这个请求:Client side caching in GWT,它类似我的,但它没有帮助。

谢谢

3 个答案:

答案 0 :(得分:1)

我写了一个答案here,它解释了如何使用过滤器设置标题(我的示例代码应该适用于所有servlet容器,如Tomcat,Jetty,......)

这既可以应用于静态文件(如果从servlet容器中提供),也可以应用于Servlet(只需确保过滤器适用于相同路径Servlet - 然后你的过滤器将“包装”Servlet。这比将标题代码直接放在Servlet中更方便,这也可以在你的doGet()doPost()方法中使用。)

另一个选择是将一个reverse proxy服务器放在Web服务器前面,然后让它根据请求URI添加缓存头(或者可能适用于所有POST请求等)

使用GWT,确保为不同的资源设置正确的缓存标头非常重要 - 请参阅我的问题here。如有疑问,请始终选择不缓存,然后逐步引入缓存!

答案 1 :(得分:0)

您使用的是GWT AJAX(AsyncCallBack等)吗?

如果您只是将GWT模块嵌入到现有JSP中,并通过AJAX调用服务器端方法,那么您就无法访问响应对象。 GWT框架负责将请求作为XmlHttpRequest发送并将其取回并重新绘制浏览器DOM。您没有对响应进行细粒度控制。

答案 2 :(得分:0)

要查看的一个选项是设置过滤器,以便您的请求通过它。在那里,您可以更改响应标头。