Сервлет по умолчанию, обслуживающий статическое содержимое в контейнерах, таких как Tomcat, не устанавливает заголовки управления кэшем. Вам не нужно писать сервлет только для этого. Просто создайте фильтр, подобный этому,
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
long expiry = new Date().getTime() + cacheAge*1000;
HttpServletResponse httpResponse = (HttpServletResponse)response;
httpResponse.setDateHeader("Expires", expiry);
httpResponse.setHeader("Cache-Control", "max-age="+ cacheAge);
chain.doFilter(request, response);
}
Всякий раз, когда вы хотите добавить элемент управления кэшем, просто добавьте фильтр к ресурсам в web.xml. Например,
<filter>
<filter-name>CacheControl</filter-name>
<filter-class>filters.CacheControlFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CacheControl</filter-name>
<url-pattern>/images/*</url-pattern>
</filter-mapping>