81,092
社区成员
发帖
与我相关
我的任务
分享
可以这样嘛,就是不知道效率如何?
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
public class NoCacheFilter implements Filter{
private FilterConfig filterConfig=null;
public void init(FilterConfig filterConfig)throws ServletException{
this.filterConfig=filterConfig;
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletException{
HttpServletRequest req=(HttpServletRequest)request;
HttpServletResponse res=(HttpServletResponse)response;
String path=req.getRequestURI();
String filename=path.substring(path.lastIndexOf("/")+1);
String suffix=filename.substring(filename.lastIndexOf(".")+1);
if(!staticResource(suffix)){//不是静态资源,就不能缓存
res.setDateHeader("Expires",0);
res.setHeader("Cache-Control","no-cache");
res.setHeader("Pragma","no-cache");
}
chain.doFilter(request,response);
}
public void destroy(){
this.filterConfig=null;
}
private static String[] staticResources=new String[]{//自己接着添加
"JS","CSS","HTML","HTM","JPG","GIF","JPEG"
};
private static boolean staticResource(String suffix){
suffix=suffix.toUpperCase();
for(int i=0,j=staticResources.length;i<j;i++){
if(staticResources[i].equals(suffix)){
return true;
}
}
return false;
}
}