您好我有一个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,它类似我的,但它没有帮助。
谢谢
答案 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)
要查看的一个选项是设置过滤器,以便您的请求通过它。在那里,您可以更改响应标头。