在WEB应用中,如果使用jsp作为view层的显示模板,都会被空格/空换行问题所困扰.
这个问题当年也困扰了我比较长的时间.因为在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脚本执行。
虽然这是一个很小的问题,但我们还是要注意细节。
详细出处参考:http://www.jb51.net/article/20490.htm
相关推荐
JSP输出HTML时产生的大量空格和换行的去除方法.zip
标题中的"Web工具--删除HTML-CSS等许多文件的空格-换行-制表符空间的功能"是指一种实用工具,其主要任务是对HTML、CSS文件进行优化,去除不必要的空白字符,包括空格、换行和制表符。这种操作通常被称为“压缩”或...
【标题】"jsp页面Table自动换行"涉及的...总结,JSP页面Table自动换行涉及到前端HTML和CSS的布局知识,同时也需要开发者具备Linux操作系统的使用经验和相关开发工具的熟练程度,这样才能有效地解决和优化页面显示问题。
### JSP用户输入页面换行 在Web开发中,如何处理用户输入的多行文本并在显示时保持格式是一项常见的需求。对于使用Java Server Pages (JSP) 的开发者来说,实现这一功能同样重要。本文将详细介绍如何在JSP中处理...
- 在使用CSS方法时,`table-layout: fixed;` 和 `word-break: break-all;` 属性的组合通常可以满足大多数场景的需求。但如果需要保留英文单词的完整性,那么应使用 `word-wrap: break-word;`。 - 使用JavaScript的...
总结一下,在使用JSP实现textarea中的文字保存换行空格到数据库的方法时,需要注意以下几点: 1. 在HTML页面上使用textarea标签接收用户的输入,包括换行和空格。 2. 通过POST方法将数据提交到服务器端的JSP页面。 ...
jsp输出对象,类似表格。可用于页面输出图片列表。或是类似图片列表的页面中,如果一个list很多对象,你要将同一个字段在页面输出成一个列表的形式,就请看看吧。
在JSP页面上显示数据库中的文本数据时,一个常见的需求是自动换行。这可以通过将文本中的换行符(如`\r`、`\n`或`\r\n`)转换为HTML的` `标签来实现。例如,在JSP页面上,可以使用以下代码段进行转换: ```java ...
4. **自动化工具**:为了批量处理大量JSP文件,可以编写脚本或者使用现成的工具,如Apache Ant或Maven插件,来自动化转换过程。这些工具可以调用服务器环境,运行JSP并保存结果为HTML。 5. **CDN集成**:转换后的...
在Java Web开发中,JSP(JavaServer Pages)和Servlet是两种常见的技术,它们用于创建动态网页。JSP主要用于视图层,而Servlet则在控制层处理请求和响应。有时,开发者可能需要将HTML或者JSP页面的内容转换为Servlet...
### 将 JSP 转化为静态 HTML 文件输出的相关知识点 #### 一、背景介绍与问题阐述 在 Web 开发领域中,JSP(JavaServer Pages)是一种广泛使用的动态网页技术,它允许开发者在 HTML 文件中嵌入 Java 代码。然而,在...
8. `<pre>`:预格式化文本标签,保留文本中的空格和换行,常用于显示代码样例:"这是预设(preformatted)文本.在 pre 这个 tag 里的文本 保留空格和分行。" 9. `<code>`:此标签用于表示计算机代码或编程语言,通常...
JSP 页面图片分行输出小技巧 JSP(Java Server Pages)是一种广泛应用于 Web 开发的技术,它允许开发者在 HTML 文档中嵌入 Java 代码,以生成动态的 Web 内容。今天,我们来讨论如何在 JSP 页面上实现图片的分行...
jsp输出带表头的三行三列的表格,通过本文档的代码可以教会大家如何通过JSP界面输出表格~
在实现九九乘法表时,我们通常会在JSP页面中使用循环结构。JSP的`<% for %>`循环语句可以实现这一需求。例如,我们可以用两个嵌套的for循环,外层循环控制被乘数,内层循环控制乘数。每一轮循环,都会计算乘积并输出...
在JSP中,换行标签如` `用于文本的换行,`<hr>`创建水平线,而`<tr>`和`<td>`则分别代表HTML表格的行和列元素。这些基础标签是构建网页布局的基本元素。 ### 二、JSP内置对象 1. **out对象**:这是JSP的默认...
这是因为搜索引擎爬虫通常更易于理解和索引静态内容,而JSP等动态页面可能在抓取和解析时遇到困难。下面我们将详细讨论如何实现JSP到HTML的转换,以及这种转换对SEO的影响。 首先,JSP和HTML的区别在于,JSP是在...