【问题标题】:How to set Filter to be applied for content-type "html/text" ONLY?如何设置仅适用于内容类型“html/text”的过滤器?
【发布时间】:2015-03-24 10:30:28
【问题描述】:

我写了以下代码。

import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;

public class CacheFilter implements Filter {

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

    HttpServletResponse resp = (HttpServletResponse) response;
    resp.setHeader("Cache-Control", "no-store, no-cache,must-revalidate,max-age=0");
    resp.setHeader("Pragma", "no-cache");

    chain.doFilter(request, response);
}

public void destroy() {
//delegate.destroy();
}
public void init(FilterConfig filterConfig) {
//delegate.destroy();
}
}

这是 web.xml 文件中的映射代码

  <filter>
     <filter-name>CacheFilter</filter-name>
     <filter-class>com.util.CacheFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>CacheFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>

这个东西有效,但是这个过滤器被应用于所有内容,从而降低了我网站的性能。我希望此过滤器仅适用于内容类型“text/html”。这可以通过像这样的ExpiresFilter轻松实现

 <init-param>
     <param-name>ExpiresByType text/html</param-name>
     <param-value>access plus 0 seconds</param-value>
</init-param>

但是如何在这段代码中实现呢? 感谢您尽早提供帮助。

【问题讨论】:

    标签: java filter content-type servlet-filters cache-control


    【解决方案1】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多