[size=medium]今天遇到一个左侧菜单加载了不到两分钟的问题,查看左侧菜单的源文件,竟然有14万行代码,其中90%是空行,于是我到tomcat的work目录下找到了该JSP对应的源文件,看到对应EL表达式下竟然有很多输出[/size]
[size=medium]由于加载的是菜单,所以会有多次循环,导致大量非显示空白。通过查找,网上基本是两种解决办法:
如果你是tomcat6的话很容易解决
在JSP页面中加入[/size]
[size=medium]这 个命令可以使jsp输出的html时去除多余的空行(jsp上使用EL和tag会产生大量的空格和空行)
如果你是tomcat5的话可以采用如下在tomcat中的全局配置
在server.xml中定义[/size][size=medium]
[size=medium]这个方案有个缺点,它会去掉所有jsp EL标签之间的空格的换行符,两个${}变量之间的空格也会消失。,在部分情况下也来带来不便。
你需要自己定义一个JSTL表示的空格符号要解决这个问题是相当麻烦,要引入一个只有一个空格的变量。
<c:set var="one_space"> </c:set> [/size]
out.write("<!-- 判断是否有该模块权限 -->\r\n");
out.write("\t\t\t\t");
if (_jspx_meth_c_005fset_005f9(_jspx_th_c_005fforEach_005f0, _jspx_page_context, _jspx_push_body_count_c_005fforEach_005f0))
return;
if (_jspx_meth_c_005fforEach_005f1(_jspx_th_c_005fforEach_005f0, _jspx_page_context, _jspx_push_body_count_c_005fforEach_005f0))
return;
out.write("<!-- 有该模块权限则展示 -->\r\n");
out.write("\t\t\t\t");
[size=medium]由于加载的是菜单,所以会有多次循环,导致大量非显示空白。通过查找,网上基本是两种解决办法:
如果你是tomcat6的话很容易解决
在JSP页面中加入[/size]
<%@ page trimDirectiveWhitespaces="true" %>
[size=medium]这 个命令可以使jsp输出的html时去除多余的空行(jsp上使用EL和tag会产生大量的空格和空行)
如果你是tomcat5的话可以采用如下在tomcat中的全局配置
在server.xml中定义[/size][size=medium]
<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>
[/size]<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>
[size=medium]这个方案有个缺点,它会去掉所有jsp EL标签之间的空格的换行符,两个${}变量之间的空格也会消失。,在部分情况下也来带来不便。
你需要自己定义一个JSTL表示的空格符号要解决这个问题是相当麻烦,要引入一个只有一个空格的变量。
<c:set var="one_space"> </c:set> [/size]