当我们打开一个网页之后,查看源代码会发现,很多网页会有空行,如果剔除空行的话,源代码的体积会减少一下。下面是实现方法。
import java.io.IOException;import java.io.PrintWriter;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.annotation.WebFilter;import javax.servlet.http.HttpServletResponse;import com.wappers.HtmlWapper;@WebFilter(filterName="htmlFilter",urlPatterns="/index.jsp")public class HtmlFilter implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("------------------------>进入filter......"); //使用自定义的响应包装器来包装原始的ServletResponse HtmlWapper wapper=new HtmlWapper((HttpServletResponse) response); chain.doFilter(request, wapper); String s=wapper.getResult(); s=s.replaceAll("(?<=\\>)(?:\\s*\r?\n?)(?=\\<)",""); PrintWriter out=response.getWriter(); out.write(s); out.flush(); } @Override public void init(FilterConfig arg0) throws ServletException { } }
import java.io.CharArrayWriter;import java.io.PrintWriter;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpServletResponseWrapper;public class HtmlWapper extends HttpServletResponseWrapper{ private PrintWriter printWriter; private CharArrayWriter charWriter; // private CompressedStream compressedOut; public HtmlWapper(HttpServletResponse response) { super(response); // TODO Auto-generated constructor stub charWriter=new CharArrayWriter(); printWriter=new PrintWriter(charWriter); } public String getResult(){ return charWriter.toString(); } @Override public PrintWriter getWriter(){ return printWriter; } }
效果对比,下面分别是压缩前,压缩后的情况: