博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
去除响应网页内容中的空白
阅读量:6192 次
发布时间:2019-06-21

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

 

当我们打开一个网页之后,查看源代码会发现,很多网页会有空行,如果剔除空行的话,源代码的体积会减少一下。下面是实现方法。

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;    }    }

效果对比,下面分别是压缩前,压缩后的情况:

 

转载于:https://www.cnblogs.com/demingblog/p/5193244.html

你可能感兴趣的文章