package org.springside.examples.showcase.web; import java.io.IOException; 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 org.springside.modules.utils.web.ServletUtils; /** * 为Response设置客户端缓存控制Header的Filter. * * eg.在web.xml中设置 * <filter> * <filter-name>cacheControlHeaderFilter</filter-name> * <filter-class>org.springside.modules.web.CacheControlHeaderFilter</filter-class> * <init-param> * <param-name>expiresSeconds</param-name> * <param-value>31536000</param-value> * </init-param> * </filter> * <filter-mapping> * <filter-name>cacheControlHeaderFilter</filter-name> * <url-pattern>/img/*</url-pattern> * </filter-mapping> * * @author calvin */ public class CacheControlHeaderFilter implements Filter { private static final String PARAM_EXPIRES_SECONDS = "expiresSeconds"; private long expiresSeconds; public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { ServletUtils.setExpiresHeader((HttpServletResponse) res, expiresSeconds); chain.doFilter(req, res); } /** * @see Filter#init(FilterConfig) */ public void init(FilterConfig filterConfig) { String expiresSecondsParam = filterConfig.getInitParameter(PARAM_EXPIRES_SECONDS); if (expiresSecondsParam != null) { expiresSeconds = Long.valueOf(expiresSecondsParam); } else { expiresSeconds = ServletUtils.ONE_YEAR_SECONDS; } } /** * @see Filter#destroy() */ public void destroy() { } }