去除响应网页内容中的空白
当我们打开一个网页之后,查看源代码会发现,很多网页会有空行,如果剔除空行的话,源代码的体积会减少一下。下面是实现方法。
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; } }
效果对比,下面分别是压缩前,压缩后的情况:
打印网页指定位置:
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();
如果我的文章对你有帮助,欢迎微信支付打赏。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构