一、公司要求我使用redis缓存网站主页和H5版本主页需要的json数据,网站主页是经过jsp动态生成的。所以希望写一个过滤器在web容器生成html页面之前把它拿到存到redis中,具体代码如下。
网站版本缓存html首页
1、自定义包装类
<span style="font-size:14px;">
public class CacheHtmlResponseWrapper extends HttpServletResponseWrapper {
//存储经过渲染的html
private PrintWriter cachedWriter;
private CharArrayWriter bufferedWriter;
public CacheHtmlResponseWrapper(HttpServletResponse response) {
super(response);
// 保存返回结果
bufferedWriter = new CharArrayWriter();
cachedWriter = new PrintWriter(bufferedWriter);
}
@Override
public PrintWriter getWriter() {
return cachedWriter;
}
public String getResult() {
return bufferedWriter.toString();
}
}
</span>
2、在过滤器中使用
<span style="font-size:14px;">
public class HtmlToRedisFilter implements Filter{
private static Logger logger = LoggerFactory.getLogger(HtmlToRedisFilter.class);
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
throws IOException, ServletException {
HttpServletResponse resp = (HttpServletResponse) response;
HttpServletRequest req = (HttpServletRequest) request;