如何删除JSP编译后的空行

本文介绍如何通过配置减少JSP生成HTML中的空白行,以减小页面体积并提高SEO效果。提供了针对不同JSP版本及Tomcat版本的具体实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • JSP生成的html里面会留下许多空白行(以及space, tab, etc.),那是动态语句留下的痕迹。当初留下这些空白行自然有他的理由 - 方便调试,这样行号才能对的上。但是对于处于production环境中的页面,这么多空白行有时候会是个灾难,常见原因有二: a. 大大增加了页面体积; b. 不利于SEO.
  • 删除JSP编译后的空行办法如下:

    1. 支持JSP 2.1+ ,在每个要去空行的页面里包含下面代码:

            
      
    1. <%@ page trimDirectiveWhitespaces="true" %> 

    在 Tomcat 6.0.14下测试JSP编译成功

    2. 支持servlet 2.5+, 即 web.xml的 XSD版本为2.5,在web.xml中加入如下代码

            
      
    1. <jsp-config> 
    2. <jsp-property-group> 
    3. <url-pattern>*.jsp</url-pattern> 
    4. <trim-directive-whitespaces>true</trim-directive-whitespaces> 
    5. </jsp-property-group> 
    6. </jsp-config> 

    在tomcat 6.0.14下测试JSP编译成功

    3. Tomcat 5.5.x+,在Tomcat安装目录/conf/web.xml中找到名叫"jsp"的servlet,添加下面一段代码:

            
      
    1. <init-param> 
    2. <param-name>trimSpaces</param-name> 
    3. <param-value>true</param-value> 
    4. </init-param> 

    本人测过

    trimSpaces          Should white spaces in template text between  actions or directives be trimmed?  [false]

    在实际操作中我加入了5.5的配置到页面中并反复启动了几次tomcat但是还是没有成功,后来才想到JSP已经编译成servlet了所以没有能改变,进入到tomcat中的work目录把已经进行JSP编译的class全部删除,成功删除空行

     

    4.更好的方案是,利用Ant的replaceregexp task,把你不想要的东西替换掉,包括空行和空白。以下ant代码是我在工程中用到的,供参考:

    <!-- strip blank lines before webpage -->
    <replaceregexp match="/r/n" replace=""
        flags="g" byline="false"
        file="${war.dir}/site/common/setvar.jsp" />
           
    <replaceregexp match="/r/n" replace=""
        flags="g" byline="false">
        <fileset dir="${war.dir}/site/layouts/" includes="**/*.jsp" />
    </replaceregexp>

    由于这个步骤只是在最后把发布的网页修改了,不会影响原文件的可读性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值