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

tomcat 5.x以后,在conf/web.xml中加入了一个参数来解决这个问题(我用的是Tomcat 6.0.10),那就是

 
  
  1. <init-param>  
  2. <param-name>trimSpaces</param-name>  
  3. <param-value>true</param-value>  
  4. </init-param>  
  5.  
  6.  
  7. <servlet>  
  8. <servlet-name>jsp</servlet-name>  
  9. <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>  
  10. <init-param>  
  11. <param-name>fork</param-name>  
  12. <param-value>false</param-value>  
  13. </init-param>  
  14. <init-param>  
  15. <param-name>xpoweredBy</param-name>  
  16. <param-value>false</param-value>  
  17. </init-param>  
  18. <init-param>  
  19. <param-name>trimSpaces</param-name>  
  20. <param-value>true</param-value>  
  21. </init-param>  
  22. <load-on-startup>3</load-on-startup>  
  23. </servlet> 

在web.xml里面给jsp servlet添加这个参数就OK。

我试了几次好象不行,还需要在页面上加一段代码:out.clear();
比如:

 
  
  1. <%@ page language="java" pageEncoding="GB18030"%>  
  2. <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>  
  3. <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>  
  4. <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>  
  5. <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>  
  6. <%  
  7. String filepath = "adminSet.do";//页面路径  
  8. request.setAttribute("filepath", filepath);  
  9. String path = request.getContextPath();  
  10. String basePath = request.getScheme() + "://" 
  11. + request.getServerName() + ":" + request.getServerPort()  
  12. + path + "/";  
  13. //String path = request.getRequestURI();  
  14. //String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  15. out.clear();  
  16. %>