js、css及公共文件過濾器

<filter>
 <filter-name>ctsistatic</filter-name>
 <filter-class> cn.com.ctsi.dispatcher.StaticFilter </filter-class>
</filter>
<filter-mapping>
 <filter-name>ctsistatic</filter-name>
 <url-pattern>/common/*</url-pattern>
</filter-mapping>
<filter-mapping>
 <filter-name>ctsistatic</filter-name>
 <url-pattern>/css/*</url-pattern>
</filter-mapping>
<filter-mapping>
 <filter-name>ctsistatic</filter-name>
 <url-pattern>/js/*</url-pattern>
</filter-mapping>

 

========================================================================

 

 

package cn.com.ctsi.dispatcher;

import cn.com.ctsi.util.LogUtil;
import cn.com.ctsi.util.SpringContext;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.JarURLConnection;
import java.net.URL;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class StaticFilter
  implements Filter
{
  public void init(FilterConfig filterConfig)
  {
  }

  public void destroy()
  {
  }

  public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
  {
    HttpServletRequest request = (HttpServletRequest)req;
    HttpServletResponse response = (HttpServletResponse)res;
    try {
      String path = request.getRequestURI().substring(request.getContextPath().length());
      if ((path != null) && (!(path.endsWith(".as"))))
      {
        response.setHeader("Cache-Control", "no-cache");
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Expires", "-1");

        InputStream is = null;
        File p = new File(SpringContext.getRootPath() + "/WEB-INF/classes/cn/com/ctsi/static");
        if (p.exists()) {
          is = new FileInputStream(SpringContext.getRootPath() + "/WEB-INF/classes/cn/com/ctsi/static" + path);
        } else {
          URL url = new URL("jar:file:" + SpringContext.getRootPath() + "/WEB-INF/lib/ctsi-commons.jar!/cn/com/ctsi/static" + path);
          JarURLConnection jarCon = (JarURLConnection)url.openConnection();
          is = jarCon.getInputStream();
        }

        try
        {
          byte[] buffer = new byte[4096];
          int n;
          while (-1 != (n = is.read(buffer)))
          {
            response.getOutputStream().write(buffer, 0, n);
          }
        } finally {
          is.close(); } return;
      }

      chain.doFilter(request, response);

      return;
    }
    catch (Exception ex) {
      LogUtil.logError(ex.getMessage(), StaticFilter.class);
    }
  }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章