编写过滤器
这里主要提供了js,css缓存
如果想要的话,自己可以直接添加图片的映射
package com.foo.filter;import org.apache.log4j.Logger; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Enumeration; public class ReplyHeaderFilter implements Filter { static Logger log = Logger.getLogger(ReplyHeaderFilter.class); private String[][] replyHeaders = {{}}; public void init(FilterConfig config) { Enumeration names = config.getInitParameterNames(); ArrayList tmp = new ArrayList(); while (names.hasMoreElements()) { String name = (String)names.nextElement(); String value = config.getInitParameter(name); log.debug("Adding header name: " + name + "='" + value + "'"); String[] pair = {name, value}; tmp.add(pair); } replyHeaders = new String[tmp.size()][2]; tmp.toArray(replyHeaders); } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // Apply the headers HttpServletResponse httpResponse = (HttpServletResponse)response; for (int n = 0; n < replyHeaders.length; n++) { String name = replyHeaders[n][0]; String value = replyHeaders[n][1]; httpResponse.setHeader(name, value); } long relExpiresInMillis = System.currentTimeMillis() + (1000 * 259200); httpResponse.setHeader("Expires", getGMTTimeString(relExpiresInMillis)); chain.doFilter(request, response); } public static String getGMTTimeString(long milliSeconds) { SimpleDateFormat sdf = new SimpleDateFormat("E, d MMM yyyy HH:mm:ss 'GMT'"); return sdf.format(new Date(milliSeconds)); } public void destroy() { } }
<filter> <description>Adds cacheing to content output files.</description> <filter-name>CacheControlFilter</filter-name> <filter-class>com.foo.filter.ReplyHeaderFilter</filter-class> <init-param> <param-name>Cache-Control</param-name> <param-value>public,max-age=86400</param-value> </init-param> <init-param> <param-name>Pragma</param-name> <param-value>public</param-value> </init-param> </filter> <filter-mapping> <filter-name>CacheControlFilter</filter-name> <url-pattern>*.js</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CacheControlFilter</filter-name> <url-pattern>*.css</url-pattern> </filter-mapping>