当前位置:  编程技术>java/j2ee

JSP输出HTML时产生的大量空格和换行的去除方法

    来源: 互联网  发布时间:2014-10-18

    本文导语:  这个问题当年也困扰了我比较长的时间.因为在jsp内使用的EL标签和其他标签时,会产生大量的空格和换行符.例如: 代码如下: ------- start ---------- Something Others ------- end ----------- 这段代码在Tomcat上输出如下,多了几行换行。 ...

这个问题当年也困扰了我比较长的时间.因为在jsp内使用的EL标签和其他标签时,会产生大量的空格和换行符.例如:
代码如下:

------- start ----------


Something


Others


------- end -----------

这段代码在Tomcat上输出如下,多了几行换行。
代码如下:

------- start ----------
Something
------- end -----------

当然,一般不去特别留意是不会发现有什么问题的,毕竟输出再多的空格和换行符,对于浏览器生成的最终效果是一样的。也就是大部分开发人员忽略这个问题的原因;但实际上这些空格和换行会占用了不少空间,我的经验是30%左右是空格/换行。也有人说,当web服务器以zip的方式来输出html时,空格引起的带宽问题就可以解决了;是的,当使用zip来输出html时,空格/换行的空间会被节省回来,但这个增加zip的工作量,而且最大的问题是,浏览器生成页面时,还是会还原所有的空格的换行符。对于前端开发人员来说这是个噩耗,面对大量的空格和冗长的html源码,想要找到对应出问题的样式所在的位置可不是容易的事情。
下面说一下解决方案,以Tomcat为例:
方案一,利用web服务器的trimSpaces功能。
Tomcat5 以上版本都可以使用,这是最简单的方法。
代码如下:


jsp
org.apache.jasper.servlet.JspServlet

fork
false


trimSpaces
true


xpoweredBy
false

3


这个方案有个缺点,它会去掉所有jsp EL标签之间的空格的换行符,在部分情况下也来带来不便。
如:Your name is ${firstName} ${lastName}. ==输出为==> Your name is firstNamelastName.
两个${}变量之间的空格也会消失。要解决这个问题是相当麻烦,要引入一个只有一个空格的变量。

Your name is ${firstName}${one_space}${lastName}.
这样就正常了,麻烦。虽然可以在一些全局变量的地方来增加一个one_space的变量,但代码看上去还是不爽。
方案二,我比较喜欢。
这个方案只有在支持jsp 2.1的web服务器上才可以使用,如Tomcat6。
Jsp2.1多了一个很有用的命令;

这个命令可以使jsp输出的html时去除多余的空行(jsp上使用EL和tag会产生大量的空格和空行),没有使用trimSpaces的问题,现在jsp输出html也可以很好地排版,看上去也专业;以前我一直都羡慕velocity的模板,输出html十分干净好看,现在jsp也可以了。
另外提一下,Tomcat6有一些兼容性问题,例如不能使用#{}这种代码在jsp中,因为会被当成JSF脚本执行。
虽然这是一个很小的问题,但我们还是要注意细节。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 我已经在输出前包含了<jsp:include page="2.jsp"/>,
  • ******"Servlet根据JSP视图的需求生成JavaBeans的实例并输出给JSP环境"如何实现上面这句话的效果??*******
  • 在jsp页面上输出图形的问题,高分酬谢。
  • 请问如何在jsp页面中用class在网页上输出信息?100分
  • 在jsp页面加载时自动调用某个特定的servlet,由servlet查询数据库输出WEB页面返回给jsp显示?
  • jsp的线程中如何向客户端输出?
  • JSP页面中能定义文件输出流变量吗?
  • jsp怎样能使从sql server数据库读出来的数据正常输出到显示的页面呢?怎样使后添的内容输出到查看留言最前面呢?
  • 使用JSP扩展标签,可否从标签内得到一个输出参数?
  • 需要从数据库中动态生成的页面是该在SERVLET输出生成,还是应该在JSP编码实现?
  • 请问:如何实现jsp的汉字输出?
  • 如何中断jsp的执行,输出呢?
  • JSP中调用Java Bean,为什么Bean中不能输出?
  • 请问在JSP页面中如何打印该页面中<body>标记符中的内容?还有如何获得一个到打印机的输出流?谢谢先
  • 在jsp中打印用pdf输出,谁能给个材料,网址,最好是例子,分不是问题?
  • 请问jsp中有没转意字符,如想输出"——急!急!急!(online wait)
  • jsp源码实例1(输出)
  • jsp 页面上图片分行输出小技巧
  • 在jsp中定义的方法里面,是不是只能用system.out.print输出,而不能用out.print输出?代码如下:
  • Web服务器/前端 iis7站长之家
  • JSP中清空cookie代码参考
  • 现有1.jsp、2.jsp、3.jsp三个文件,我怎么在3.jsp文件中得到1.jsp中输入的值?
  • 一个框界网爷包含上下两个网页a1.jsp和a2.jsp,怎么实现a1.jsp自身不变且提交数据到下面的a2.jsp呢?不胜感激,急..
  • 请问jsp和serlet之间怎么通讯,jsp和jsp之间呢?
  • 请问<%@include file="abc.jsp"%>与<jsp:include page="abc.jsp"/>之间的差别
  • response.sendRedirect("index.jsp") 和 <jsp:forward page="index.jsp"/>的区别?
  • 想把一个jsp转到另一个jsp页面,要穿参数,中文的(jsp变量)。谁教教我?!
  • aaa.jsp有如下链接,当单击该链接时将id值传递给bbb.jsp,怎样在bbb.jsp中引用这个id值?
  • jsp+bean还是jsp+ejb还是jsp+servlet还是asp+activex好?
  • 谁能告诉我,怎么调试jsp程序呀!我在jsp中调用java,但是Tomcat这家伙只会给我报jsp文件出错。这可怎么办呀?
  • jsp中如何获得当前jsp文件所在的目录,用request.getServletPath()得到的路径含有jsp文件名,有没有办法得到目录(不含文件名)?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3