• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    JSP输出HTML时产生的大量空格和换行的去除方法
    这个问题当年也困扰了我比较长的时间.因为在jsp内使用的EL标签和其他标签时,会产生大量的空格和换行符.例如:
    复制代码 代码如下:

    ------- start ----------
    c:choose>
    c:when test="${fn:length(mainPageList)>1}">
    Something
    /c:when>
    c:otherwise>
    Others
    /c:otherwise>
    /c:choose>
    ------- end -----------

    这段代码在Tomcat上输出如下,多了几行换行。
    复制代码 代码如下:

    ------- start ----------
    Something
    ------- end -----------

    当然,一般不去特别留意是不会发现有什么问题的,毕竟输出再多的空格和换行符,对于浏览器生成的最终效果是一样的。也就是大部分开发人员忽略这个问题的原因;但实际上这些空格和换行会占用了不少空间,我的经验是30%左右是空格/换行。也有人说,当web服务器以zip的方式来输出html时,空格引起的带宽问题就可以解决了;是的,当使用zip来输出html时,空格/换行的空间会被节省回来,但这个增加zip的工作量,而且最大的问题是,浏览器生成页面时,还是会还原所有的空格的换行符。对于前端开发人员来说这是个噩耗,面对大量的空格和冗长的html源码,想要找到对应出问题的样式所在的位置可不是容易的事情。
    下面说一下解决方案,以Tomcat为例:
    方案一,利用web服务器的trimSpaces功能。
    Tomcat5 以上版本都可以使用,这是最简单的方法。
    复制代码 代码如下:

    servlet>
    servlet-name>jsp/servlet-name>
    servlet-class>org.apache.jasper.servlet.JspServlet/servlet-class>
    init-param>
    param-name>fork/param-name>
    param-value>false/param-value>
    /init-param>
    init-param>
    param-name>trimSpaces /param-name>
    param-value>true /param-value>
    /init-param>
    init-param>
    param-name>xpoweredBy/param-name>
    param-value>false/param-value>
    /init-param>
    load-on-startup>3/load-on-startup>
    /servlet>

    这个方案有个缺点,它会去掉所有jsp EL标签之间的空格的换行符,在部分情况下也来带来不便。
    如:Your name is ${firstName} ${lastName}. ==输出为==> Your name is firstNamelastName.
    两个${}变量之间的空格也会消失。要解决这个问题是相当麻烦,要引入一个只有一个空格的变量。
    c:set var="one_space"> /c:set>
    Your name is ${firstName}${one_space}${lastName}.
    这样就正常了,麻烦。虽然可以在一些全局变量的地方来增加一个one_space的变量,但代码看上去还是不爽。
    方案二,我比较喜欢。
    这个方案只有在支持jsp 2.1的web服务器上才可以使用,如Tomcat6。
    Jsp2.1多了一个很有用的命令;
    %@ page trimDirectiveWhitespaces="true" %>
    这个命令可以使jsp输出的html时去除多余的空行(jsp上使用EL和tag会产生大量的空格和空行),没有使用trimSpaces的问题,现在jsp输出html也可以很好地排版,看上去也专业;以前我一直都羡慕velocity的模板,输出html十分干净好看,现在jsp也可以了。
    另外提一下,Tomcat6有一些兼容性问题,例如不能使用#{}这种代码在jsp中,因为会被当成JSF脚本执行。
    虽然这是一个很小的问题,但我们还是要注意细节。
    您可能感兴趣的文章:
    • javascript实现去除HTML标签的方法
    • php正则去除网页中所有的html,js,css,注释的实现方法
    • js函数获取html中className所在的内容并去除标签
    • asp中去除html中style,javascript,css代码
    • php中去除所有js,html,css代码
    • js中去除字符串中所有的html标签代码实例
    上一篇:JSP errorPage设置方法
    下一篇:JSP 中文字符处理代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    JSP输出HTML时产生的大量空格和换行的去除方法 JSP,输出,HTML,时产,生的,