- import java.io.*;
- import java.util.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- import com.elink.util.*;
- public class BusiCacheFilter implements Filter
- {
- private FilterConfig config = null;
- private HashMap expiresMap = new HashMap();
- public void init(FilterConfig filterConfig)
- {
- this.config = filterConfig;
- expiresMap.clear();
- Enumeration names = config.getInitParameterNames();
- while( names.hasMoreElements() )
- {
- try
- {
- String name = (String)names.nextElement();
- String value = config.getInitParameter( name );
- Integer expire = Integer.valueOf( value );
- expiresMap.put( name, expire );
- }
- catch( Exception ex)
- {
- }
- }
- }
- public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain)
- throws IOException, ServletException
- {
- HttpServletRequest req = (HttpServletRequest) request;
- HttpServletResponse res = (HttpServletResponse) response;
- String uri = req.getRequestURI();
- String ext = null;
- int dot = uri.lastIndexOf(".");
- if( dot != -1 )
- {
- ext = uri.substring( dot+1 );
- }
- setResponseHeader( res, uri, ext );
- chain.doFilter(request, response);
- }
- public void destroy()
- {
- }
- protected FilterConfig getFilterConfig()
- {
- return (config);
- }
- private void setResponseHeader( HttpServletResponse response, String uri, String ext )
- {
- if( ext!= null && ext.length() > 0 )
- {
- Integer expires = (Integer)expiresMap.get(ext);
- if( expires != null )
- {
- LogUtil.logDebug( uri + ".Expires: "+ expires.intValue());
- if( expires.intValue() > 0 )
- {
- response.setHeader("Cache-Control","max-age="+expires.intValue()); //HTTP 1.1
- }
- else
- {
- response.setHeader("Cache-Control","no-cache");
- response.setHeader("Pragma","no-cache"); //HTTP 1.0
- response.setDateHeader ("Expires", 0 );
- }
- }
- }
- }
- }
- web.xml
- <filter>
- <filter-name>busicachefilter</filter-name>
- <filter-class>com.elink.control.BusiCacheFilter</filter-class>
- <init-param>
- <param-name>js</param-name>
- <param-value>3600</param-value>
- </init-param>
- <init-param>
- <param-name>gif</param-name>
- <param-value>3600</param-value>
- </init-param>
- <init-param>
- <param-name>jpg</param-name>
- <param-value>3600</param-value>
- </init-param>
- <init-param>
- <param-name>css</param-name>
- <param-value>3600</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>busicachefilter</filter-name>
- <url-pattern>*.js</url-pattern>
- </filter-mapping>
- <filter-mapping>
- <filter-name>busicachefilter</filter-name>
- <url-pattern>*.gif</url-pattern>
- </filter-mapping>
- <filter-mapping>
- <filter-name>busicachefilter</filter-name>
- <url-pattern>*.jpg</url-pattern>
- </filter-mapping>
- <filter-mapping>
- <filter-name>busicachefilter</filter-name>
- <url-pattern>*.css</url-pattern>
- </filter-mapping>
转载于:https://blog.51cto.com/lya041/666505