缓存Filter工作流程:
1)截获浏览器提交的request
2)如果请求方式为"POST"则不经过缓存
3)若请求方式为"GET"且存在缓存且缓存没有过期,返回缓存数据
4)若不存在缓存或缓存已过期,则查询并创建缓存;返回数据
使用缓存Filter注意事项
1)缓存Filter不用于实时变化数据。适用于数据变化不大但访问次数多的内容:如论坛、博客、新闻等
2)缓存Filter不用于"POST"方式提交数据,如登陆、发表文章等
3)缓存内容要依赖于Cookie而不能依赖于Session,即用Cookie而不是Session纪录客户身份。且无论客户身份是管理员还是普通浏览着 Servlet 输出数据都相同,只能在浏览器层使用JavaScript根据Cookie来决定显示什么内容。
参照《java Web整合开发...》实现一个简单的缓存Filter主要完成以下工作
1)继承 HttpServletResponseWrapper ,重写必要方法
package servlet.filter;
import java.io.CharArrayWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
public class CacheResponseWrapper extends HttpServletResponseWrapp