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();
  • 相关阅读:
    ORA00911: 无效字符
    在创建外键约束时追加on delete cascade或on delete set null
    仿58同城下拉菜单
    经典SQL语句大全
    Substitution 使用方法 页面缓存时的局部刷新
    解决IE8开发人员工具无法使用的问题
    ASP.NET 页面缓存 @ OutputCache
    关于clientWidth、offsetWidth、clientHeight、offsetHeight的测试比较
    调用ThunderAgent 迅雷局域网版的开发
    仿58同城 tips 鼠标悬停提示 类似title、alt
  • 原文地址:https://www.cnblogs.com/demingblog/p/5193244.html
Copyright © 2011-2022 走看看