『壹』 如何去除 JSP 生成的 HTML 中的空格和换行
在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脚本执行。
虽然这是一个很小的问题,但我们还是要注意细节。
『贰』 java 中 jsp页面怎么过滤文本框中的 头尾空格 有几种方法!!!
可以用字符串方法,切割,将空格切割掉.
str.split(" ");
或者首位去空格
str.trim();
或者用替换
nstr.replaceAll(" ","" );
『叁』 关于JSP判断输入是否为空或空格的问题
应该说有3个方向来可供选择
第一个源是使用原生的JavaScript编写,判断,控制css显示提示内容, 这样麻烦些
第二个就是使用jQuery的相关验证插件,很方便.
如果使用了前段框架[比如easyUI, bootstrap等]更简单了,按照要求写一点js
『肆』 去除jsp输入的空格后再校验字符长度
function nTabs(thisObj,Num){
if(thisObj.className == "active")return;
var tabObj = thisObj.parentNode.id;
var tabList = document.getElementById(tabObj).getElementsByTagName("li");
for(i=0; i <tabList.length; i++)
{
『伍』 怎样去除jsp页面留下的空白,jsp
在web.xml文件中这样配回置答
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>false</el-ignored>
<trim-directive-whitespaces>true</trim-directive-whitespaces>
</jsp-property-group>
</jsp-config>
『陆』 Jsp页面怎么将空格显示出来
你用,这个和HTML是一样的。输入 &nb sp; 表示空格。(中间的空格去掉,因为回在这里如果去答掉网络会直接显示一个空格。)
如果直接打空格的话,无论你打多少个显示的都只有一个的。而 就可以叠加。
『柒』 怎么去除jsp中换行和用el标签带来的空格
<%@ page trimDirectiveWhitespaces="true" %>
这个命令可以使jsp输出的html时去除多余的空行(jsp上使用EL和tag会产生大量的回空格和空行)。答
但是这个命令是从JSP2.1规范以后才得到支持。
所以在tomcat 6.0之前的版本上如果使用这个命令就会抛出异常:
Page directive has invalid attribute: trimDirectiveWhitespaces
『捌』 JSP中如何删除字符串的前后空格的
如果你说的是javascript,用:
String.prototype.LTrim = function()// 用正则表达式将前空格用空字符串替代。
{
return this.replace(/(^\s*)/g, "");
}
String.prototype.RTrim = function()// 用正则表达式将后空格用空字符串替代。
{
return this.replace(/(\s*$)/g, "");
}
String.prototype.LRTrim = function()// 用正则表达式将前后空格用空字符串替代。
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}
String.prototype.ALLTrim = function()// 用正则表达式将所有空格用空字符串替代。
{
return this.replace(/ /g, "");
}
// 有空格的字符串
var t = " leading and trailing spaces ";
var s=t;
window.alert("原始的:"+s + " (" + s.length + ")");
s = t.lrTrim();// 删除前后空格
window.alert("前后:"+s + " (" + s.length + ")");
s = t.allTrim();// 删除all空格
window.alert("all:"+s + " (" + s.length + ")");
s = t.lTrim();// 删除前空格
window.alert("前空格:"+s + " (" + s.length + ")");
s = t.rTrim();// 删除后空格
window.alert("后空格:"+s + " (" + s.length + ")");
如果你说的是jsp(java server page),用java的:
String s=" asdf sadf";
System.out.println(s.trim());