一般在jsp头部有至少一行空白,是因为
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ page import="..."%> <%@ taglib prefix="xxx" uri=".tld"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
为什么容不下空白?有几行空白有什么不好?
1.响应内容会更大,比没有空白或空行的
2.如果要解析响应内容要多哪么几行代码
3.我们眼中容不下空白,
怎么去掉它呢?
1.坏办法:一一把jsp头部或可能出现空白的行打到一行上,这样再次编辑或打开时不易查看
2.简单了:在tomcat的conf/web.xml中的org.apache.jasper.servlet.JspServlet servlet 增加几个参数,这是默认的配置(取自7.0.55)
<!-- The JSP page compiler and execution servlet, which is the mechanism --> <!-- used by Tomcat to support JSP pages. Traditionally, this servlet --> <!-- is mapped to the URL pattern "*.jsp". This servlet supports the --> <!-- following initialization parameters (default values are in square --> <!-- brackets): --> <!-- --> <!-- checkInterval If development is false and checkInterval is --> <!-- greater than zero, background compilations are --> <!-- enabled. checkInterval is the time in seconds --> <!-- between checks to see if a JSP page (and its --> <!-- dependent files) needs to be recompiled. [0] --> <!-- --> <!-- classdebuginfo Should the class file be compiled with --> <!-- debugging information? [true] --> <!-- --> <!-- classpath What class path should I use while compiling --> <!-- generated servlets? [Created dynamically --> <!-- based on the current web application] --> <!-- --> <!-- compiler Which compiler Ant should use to compile JSP --> <!-- pages. See the jasper documentation for more --> <!-- information. --> <!-- --> <!-- compilerSourceVM Compiler source VM. [1.6] --> <!-- --> <!-- compilerTargetVM Compiler target VM. [1.6] --> <!-- --> <!-- development Is Jasper used in development mode? If true, --> <!-- the frequency at which JSPs are checked for --> <!-- modification may be specified via the --> <!-- modificationTestInterval parameter. [true] --> <!-- --> <!-- displaySourceFragment --> <!-- Should a source fragment be included in --> <!-- exception messages? [true] --> <!-- --> <!-- dumpSmap Should the SMAP info for JSR45 debugging be --> <!-- dumped to a file? [false] --> <!-- False if suppressSmap is true --> <!-- --> <!-- enablePooling Determines whether tag handler pooling is --> <!-- enabled. This is a compilation option. It will --> <!-- not alter the behaviour of JSPs that have --> <!-- already been compiled. [true] --> <!-- --> <!-- engineOptionsClass Allows specifying the Options class used to --> <!-- configure Jasper. If not present, the default --> <!-- EmbeddedServletOptions will be used. --> <!-- --> <!-- errorOnUseBeanInvalidClassAttribute --> <!-- Should Jasper issue an error when the value of --> <!-- the class attribute in an useBean action is --> <!-- not a valid bean class? [true] --> <!-- --> <!-- fork Tell Ant to fork compiles of JSP pages so that --> <!-- a separate JVM is used for JSP page compiles --> <!-- from the one Tomcat is running in. [true] --> <!-- --> <!-- genStringAsCharArray --> <!-- Should text strings be generated as char --> <!-- arrays, to improve performance in some cases? --> <!-- [false] --> <!-- --> <!-- ieClassId The class-id value to be sent to Internet --> <!-- Explorer when using <jsp:plugin> tags. --> <!-- [clsid:8AD9C840-044E-11D1-B3E9-00805F499D93] --> <!-- --> <!-- javaEncoding Java file encoding to use for generating java --> <!-- source files. [UTF8] --> <!-- --> <!-- keepgenerated Should we keep the generated Java source code --> <!-- for each page instead of deleting it? [true] --> <!-- --> <!-- mappedfile Should we generate static content with one --> <!-- print statement per input line, to ease --> <!-- debugging? [true] --> <!-- --> <!-- maxLoadedJsps The maximum number of JSPs that will be loaded --> <!-- for a web application. If more than this --> <!-- number of JSPs are loaded, the least recently --> <!-- used JSPs will be unloaded so that the number --> <!-- of JSPs loaded at any one time does not exceed --> <!-- this limit. A value of zero or less indicates --> <!-- no limit. [-1] --> <!-- --> <!-- jspIdleTimeout The amount of time in seconds a JSP can be --> <!-- idle before it is unloaded. A value of zero --> <!-- or less indicates never unload. [-1] --> <!-- --> <!-- modificationTestInterval --> <!-- Causes a JSP (and its dependent files) to not --> <!-- be checked for modification during the --> <!-- specified time interval (in seconds) from the --> <!-- last time the JSP was checked for --> <!-- modification. A value of 0 will cause the JSP --> <!-- to be checked on every access. --> <!-- Used in development mode only. [4] --> <!-- --> <!-- recompileOnFail If a JSP compilation fails should the --> <!-- modificationTestInterval be ignored and the --> <!-- next access trigger a re-compilation attempt? --> <!-- Used in development mode only and is disabled --> <!-- by default as compilation may be expensive and --> <!-- could lead to excessive resource usage. --> <!-- [false] --> <!-- --> <!-- scratchdir What scratch directory should we use when --> <!-- compiling JSP pages? [default work directory --> <!-- for the current web application] --> <!-- --> <!-- suppressSmap Should the generation of SMAP info for JSR45 --> <!-- debugging be suppressed? [false] --> <!-- --> <!-- trimSpaces Should white spaces in template text between --> <!-- actions or directives be trimmed? [false] --> <!-- --> <!-- xpoweredBy Determines whether X-Powered-By response --> <!-- header is added by generated servlet. [false] --> <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>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet>
有了conf/web.xml中的配置还不足以去掉空白,还需要在你的项目的web.xml中增加一个jsp-config
<jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <trim-directive-whitespaces>true</trim-directive-whitespaces> </jsp-property-group> </jsp-config>
3.其它方法:留给你白渡了