在WEB应用,如果使用jsp做view层,而在jsp里面如果使用了jstl或其他的标签,则页面在渲染时,对应的代码将会产生多余空格和换行,在servlet的表现是out.print()

虽然有很多的空格和换行并不影响最终客户端的渲染结果,但实际上这些空格也是占用了不少的传输带宽。使用gzip返回html时,虽然带宽的问题可以解决掉,但是后台处理gzip时会使得性能降低。而且在有很多空格和换行的情况下,html并没有排版,前端开发并不很容易的定位到页面问题。后台开启trimSpaces后,html也可以很好地排版,看上去会更专业。

而且现在很多应用都是前后端分离的形式开发,虽然没有多少人用jsp渲染json或xml…,但这也是一个问题

开启方法:

在servlet 2.5+, 即web.xml的xsd version为2.5+ 针对项目

在web.xml中加入如下代码:

    <jsp-config>
        <jsp-property-group>
            <url-pattern>*.jsp</url-pattern>
            <trim-directive-whitespaces>true</trim-directive-whitespaces>
        </jsp-property-group>
    </jsp-config>

JSP 2.1+ 针对JSP

在页面头部将trimDirectiveWhitespaces开启

<%@ page trimDirectiveWhitespaces="true" %>

Tomcat 5.5.x+ 针对服务

在服务端tomcat的web.xml中找到名叫jsp的servlet

<init-param>
        <param-name>trimSpaces</param-name>
        <param-value>true</param-value>
</init-param>

效果对比: