zoukankan      html  css  js  c++  java
  • 去除响应网页内容中的空白

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

    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*
    ?
    ?)(?=\<)","");
             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;
        }
        
    }

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

    打印网页指定位置:

    var newWindow=window.open("打印窗口","_blank");
    // 假设要打印的区域 包在 div 中,id 为:data_div_id
    var obj = document.getElementById("data_div_id");
    var docStr = obj.innerHTML;
    newWindow.document.write(docStr);
    newWindow.document.close();
    newWindow.print();
  • 相关阅读:
    leetcode-----75. 颜色分类
    《面向机器智能的TensorFlow实践》_段菲学习资料
    事务及其ACID特性
    greenplum基本使用操作
    通过java api统计hive库下的所有表的文件个数、文件大小
    深度学习原理与TensorFlow实践_喻俨资料整理
    采集数据到HDFS
    《深入理解TensorFlow架构设计与实现原理》_彭靖田学习材料整理
    Too many open files
    子元素高度100%
  • 原文地址:https://www.cnblogs.com/demingblog/p/5193244.html
Copyright © 2011-2022 走看看