1. import java.io.*;  
  2. import java.util.*;  
  3. import javax.servlet.*;  
  4. import javax.servlet.http.*;  
  5. import com.elink.util.*;  
  6.   
  7. public class BusiCacheFilter implements Filter  
  8. {  
  9.  private FilterConfig config  = null;  
  10.  private HashMap expiresMap = new HashMap();  
  11.  
  12.  public void init(FilterConfig filterConfig)  
  13.  {  
  14.   this.config = filterConfig;  
  15.   expiresMap.clear();  
  16.   Enumeration names = config.getInitParameterNames();  
  17.   while( names.hasMoreElements() )  
  18.   {  
  19.    try 
  20.    {  
  21.     String name = (String)names.nextElement();  
  22.     String value = config.getInitParameter( name );  
  23.     Integer expire = Integer.valueOf( value );  
  24.     expiresMap.put( name, expire );  
  25.    }  
  26.    catch( Exception ex)  
  27.    {  
  28.    }  
  29.   }  
  30.  }  
  31.  
  32.  public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain)  
  33.   throws IOException, ServletException  
  34.  {  
  35.   HttpServletRequest req = (HttpServletRequest) request;  
  36.   HttpServletResponse res = (HttpServletResponse) response;  
  37.     
  38.   String uri = req.getRequestURI();  
  39.   String ext = null;  
  40.   int dot =  uri.lastIndexOf(".");  
  41.   if( dot != -1 )  
  42.   {  
  43.    ext = uri.substring( dot+1 );  
  44.   }  
  45.     
  46.   setResponseHeader( res, uri, ext );  
  47.   chain.doFilter(request, response);  
  48.  }  
  49.  
  50.  public void destroy()  
  51.  {  
  52.  }  
  53.    
  54.  protected FilterConfig getFilterConfig()  
  55.  {  
  56.   return (config);  
  57.  }  
  58.    
  59.    
  60.  private void setResponseHeader( HttpServletResponse response, String uri, String ext )  
  61.  {  
  62.   if( ext!= null && ext.length() > 0 )  
  63.   {  
  64.    Integer expires = (Integer)expiresMap.get(ext);  
  65.    if( expires != null )  
  66.    {  
  67.     LogUtil.logDebug( uri + ".Expires: "+ expires.intValue());  
  68.     if( expires.intValue() > 0 )  
  69.     {  
  70.      response.setHeader("Cache-Control","max-age="+expires.intValue()); //HTTP 1.1  
  71.     }  
  72.     else 
  73.     {  
  74.      response.setHeader("Cache-Control","no-cache");  
  75.      response.setHeader("Pragma","no-cache"); //HTTP 1.0  
  76.      response.setDateHeader ("Expires"0 );  
  77.     }  
  78.    }  
  79.   }  
  80.  }  
  81. }  
  82.  
  83. web.xml  
  84.  
  85.  
  86.  busicachefilter  
  87.  class>com.elink.control.BusiCacheFilterclass>  
  88.    
  89.   js  
  90.   3600  
  91.    
  92.    
  93.   gif  
  94.   3600  
  95.    
  96.    
  97.   jpg  
  98.   3600  
  99.    
  100.    
  101.   css  
  102.   3600  
  103.    
  104.     
  105.     
  106.  busicachefilter  
  107.  *.js  
  108.     
  109.     
  110.  busicachefilter  
  111.  *.gif  
  112.     
  113.     
  114.  busicachefilter  
  115.  *.jpg  
  116.     
  117.     
  118.  busicachefilter  
  119.  *.css  
  120.     
  121.