Caching 如何要求浏览器不存储缓存JavaEE/Tomcat

Caching 如何要求浏览器不存储缓存JavaEE/Tomcat,caching,tomcat,jakarta-ee,browser,browser-cache,Caching,Tomcat,Jakarta Ee,Browser,Browser Cache,我希望我的浏览器不存储缓存,当我更新服务器的内容时,我总是拥有文档的第一个版本 但当我在浏览器上删除缓存时,一切都正常。 在运行我的webApp时,是否有任何方法告诉浏览器不要存储缓存? 我正在使用Java EE(JSP)和Apache Tomcat服务器。您可以使用ServletFilter来确保HTTP响应包含指示浏览器不要缓存的标题: public class NoCachingFilter implements Filter { public void init(FilterC

我希望我的浏览器不存储缓存,当我更新服务器的内容时,我总是拥有文档的第一个版本

但当我在浏览器上删除缓存时,一切都正常。 在运行我的webApp时,是否有任何方法告诉浏览器不要存储缓存?
我正在使用Java EE(JSP)和Apache Tomcat服务器。

您可以使用ServletFilter来确保HTTP响应包含指示浏览器不要缓存的标题:

public class NoCachingFilter implements Filter {

    public void init(FilterConfig filterConfig) {
    }

    public void destroy() {
    }

    public void doFilter(
                   ServletRequest request, 
                   ServletResponse response, 
                   FilterChain chain) 
           throws IOException, ServletException {
        HttpServletResponse httpResponse = (HttpServletResponse) response;

        httpResponse.setHeader("Cache-Control", "no-cache");
        httpResponse.setDateHeader("Expires", 0);
        httpResponse.setHeader("Pragma", "no-cache");
        httpResponse.setDateHeader("Max-Age", 0);

        chain.doFilter(request, response);
    }
}
然后将web.xml配置为对所有请求使用该筛选器:

<filter>
    <filter-name>NoCachingFilter</filter-name>
    <filter-class>my.pkg.NoCachingFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>NoCachingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

无机械过滤器
my.pkg.NoachingFilter
无机械过滤器
/*

您可以使用ServletFilter确保HTTP响应包含指示浏览器不要缓存的标题:

public class NoCachingFilter implements Filter {

    public void init(FilterConfig filterConfig) {
    }

    public void destroy() {
    }

    public void doFilter(
                   ServletRequest request, 
                   ServletResponse response, 
                   FilterChain chain) 
           throws IOException, ServletException {
        HttpServletResponse httpResponse = (HttpServletResponse) response;

        httpResponse.setHeader("Cache-Control", "no-cache");
        httpResponse.setDateHeader("Expires", 0);
        httpResponse.setHeader("Pragma", "no-cache");
        httpResponse.setDateHeader("Max-Age", 0);

        chain.doFilter(request, response);
    }
}
然后将web.xml配置为对所有请求使用该筛选器:

<filter>
    <filter-name>NoCachingFilter</filter-name>
    <filter-class>my.pkg.NoCachingFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>NoCachingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

无机械过滤器
my.pkg.NoachingFilter
无机械过滤器
/*