是缓存到tomcat里面去,所以就算换浏览器也是一样访问缓存,除非重启tomcat服务器才会重新访问网站
package cn.itcast.web.filter;import java.io.IOException;import java.util.HashMap;import java.util.Map;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import cn.itcast.web.decorator.MyResponse;//单例public class CacheFilter implements Filter { //实例变量[每个线程共享] private Mapcache = new HashMap (); public void destroy() { } public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; //NO1:取得客户端访问的资源路径 String uri = request.getRequestURI(); //NO2:根据uri去缓存中查询对应的页面资源有没有 byte[] data = cache.get(uri); //NO3:如果没有 if(data==null){ //将请求和响应放行到web资源中 MyResponse myResponse = new MyResponse(response); chain.doFilter(request,myResponse); //NO4:将刚取得的数据放入到缓存中,便于下次重用 data = myResponse.getBuffer(); cache.put(uri,data); System.out.println("从服务端取得资源"); //NO5:如果有,直接从缓存中了得数据 } //NO6:向浏览器输出数据 response.getOutputStream().write(data); } public void init(FilterConfig filterConfig) throws ServletException { }}