<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);
}
}
}