博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
缓存过滤器
阅读量:2397 次
发布时间:2019-05-10

本文共 1488 字,大约阅读时间需要 4 分钟。

是缓存到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 Map
cache = 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 { }}

转载于:https://my.oschina.net/u/2356176/blog/468023

你可能感兴趣的文章
vim 添加代码补全功能(Omnicppcomplete 添加对STL支持)
查看>>
HDU 4013 图论 树的最小表示
查看>>
Ubunu下moderncv加载moderntimeline
查看>>
Ubuntu 12.04安装Jetty
查看>>
Ubuntu 12.04安装OpenCV
查看>>
K-D树 C++实现
查看>>
搜索引擎的预料库 —— 万恶的爬虫
查看>>
网易工程师 Ruheng 一文教你轻松学会 Git
查看>>
文字与编码的奥秘(下)
查看>>
阿里分布式事务框架 GTS 全解析
查看>>
轻量级 Web 框架 Gin 结构分析
查看>>
一个字节的网络漫游故事独白
查看>>
RabbitMQ 消息可靠性、延时队列以及高可用集群
查看>>
分布式系统的可靠性指的是什么 —— 你可能从来就没有认真思考过
查看>>
布隆过滤器过时了,未来属于布谷鸟过滤器?
查看>>
面试题 —— 数字幻方
查看>>
5折抢购最后一天 | 戴尔顶级配置电脑,限时秒!
查看>>
SpringBoot 究竟是如何跑起来的?
查看>>
阿里开源限流组件 Sentinel 集群流控全解析
查看>>
深度解密HTTP通信细节
查看>>