val.replace(/\s+/g,'_')
\s: space, 空格
+: 一个或多个
^: 开始,^\s,以空格开始
$: 结束,\s$,以空格结束
|:或者
/g:global, 全局
function verify() {
$.ajax({//issue for IE cache; timestamp=" + new Date().getTime()
url:"checkGroupName?timestamp=" + new Date().getTime(),
async: true,
data:"groupName=" + $("#cn").val()+"&groupTypeForDetail="+$("#groupType").val()+"&prefix="+$("#p").val(),
dataType:"html",
success:function(data){
if(data==1){
$("#result").html("<font color='green'>Group name["+$("#p").val()+ $("#cn").val()+"]Valid</font>");
var emal_val=$("#p").val()+$("#cn").val()+$("#emailHidden").val();
$("#email").val(emal_val.replace(/\s+/g,'_'));
$('#subData').removeAttr("disabled");
}else if(data==2){
$("#result").html("<font color='red'>Group name["+$("#p").val()+ $("#cn").val()+ "]already existed.</font>");
$('#subData').attr('disabled',"true");
}else{
$("#result").html("<font color='red'>Group name can not be empty.</font>");
$('#subData').attr('disabled',"true");
}
}
});
}
用eclipse搭建struts开发环境
学习struts已经两周了,但是一直没有成功搭建出struts开发环境,总是遇到一些问题,百度了一番也没能解决。今天实验课上在同学的帮助下成功搭建了struts开发环境并成功运行了程序,回寝室后又在自己的小本上试验了几番,最终成功掌握了在eclipse下搭建struts开发环境的过程。先将自己的一些心得写出来,和与我由着共同疑惑和错误的同仁们分享。
步骤:
一、新建web工程
File->New->Dynamic Web Project
(此处,如果New菜单中没有Dynamic Web Project,可以点击Other选项,在其中进行查找。)
在随后的对话框中输入工程名称,“确定”完成创建web工程。
二、导入struts所需的jar包
1. 解压struts-2.3.8-all.zip文件
2. 打开解压后生成的struts-2.3.8文件目录下的apps文件夹,复制struts2-blank.war粘贴到tomcat/webapps目录下。
3. 启动tomcat服务器:运行tomcat/lib/startup.bat文件启动tomcat,tomcat启动的过程中,struts2-blank.war将被解压成struts2-blank文件。
4. struts2-blank是一个空白的web工程(读者可以在浏览器中输入http://localhost:8080/struts2-blank执行该工程以查看运行效果),里面有些我们进行struts开发需要用到的一些文件,如web.xml、struts.xml等。
三、导入struts所需的jar包
1.在新建的工程名上 “右键”->Build Path->Configure Build Path->Libraries->Add External JARs....
2.此处需要注意,struts常用的JAR包有11个,如下如所示。这里有两种导入struts JAR包的方式:
①导入tomcat下webapps\struts2-blank\WEB-INF\lib目录下常用的11个包
②导入struts-2.3.8\lib目录下的11个常用JAR包,这种方式相对有些麻烦,需要从一大堆JAR包中找出这11个常用JAR包。
3.点击 OK 成功导入JAR包
四、将所需的jar包复制到WEB-INF/lib目录下
在这里我遇到了最大的困难。
之前我还像Java开发和JSP开发时候一样,导入JAR包后完事。
但是此次不同了,在写好代码运行时,直接报出了
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter这个很经典的错误,说白了,就是找不到JAR包。我在百度上查了半天这个错误出现的原因,也找到一大堆解决方法,最终结果呢:不好使。
同学告诉我:需要把这11个JAR包放到工程文件的WebContent\WEB-INF\lib目录下。我照做了,于是问题才得以解决。
所以此处我也特别提醒大家,别忘了把这11个JAR包拷贝一份到工程文件的WebContent\WEB-INF\lib目录下。
五、编写工程文件
到这里,struts开发环境就算配好了,如果大家在配置过程中遇到其他问题,我们可以一起探讨,发E-mail到1259023512@qq.com即可。
至于源文件的编写就需要在以后的学习中慢慢积累经验了。
现将我写的一个web.xml文件和struts.xml文件的简单样例粘到文章中吧。
、、、、、、、、、、、、、、、、web.xml。。。。。。。。。。。。。。。。。。。。。。。。。
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Struts Blank</display-name>
<filter>
<filter-name>struts2</
repaint(重绘)是在一个元素的外观被改变,但没有改变布局的情况下发生,如改变visibility、outline、前景色。当repaint发生时,浏览器会验证DOM树上的所有其它结点的visibility属性。
2. Reflow如果变化涉及元素布局 (如 width), 浏览器则抛弃原有属性, 重新计算并把结果传递给 render 以重新描绘页面元素, 此过程称为 reflow。reflow(回流)是导致DOM脚本执行低效的关键因素之一。页面上任何一个结点触发reflow,都会导致它的子结点及祖先结点重新渲染。
以下操作会引起reflow:
- 改变窗囗大小
- 改变文字大小
- 添加/删除样式表
- 内容的改变,如用户在输入框中敲字
- 激活伪类,如:hover
- 操作class属性
- 脚本操作DOM
- 计算offsetWidth和offsetHeight
- 设置style属性
Reflow是不可避免的,只能将reflow对性能的影响减小到最小,以下是一些建议:
- 尽可能限制reflow的影响范围。有时 reflow 页面中的一个元素会 reflow 它的父元素(译注:这里是复数)以及所有子元素。
- 通过设置style属性改变结点样式的话,每设置一次都会导致一次reflow。所以最好通过设置class的方式。
- 实现元素的动画,它的position属性应当设为fixed或absolute,这样不会影响其它元素的布局。
- 权衡速度的平滑。比如实现一个动画,以1个像素为单位移动这样最平滑,但reflow就会过于频繁,CPU很快就会被完全占用。如果以3个像素为单位移动就会好很多。
- 不要用tables布局的另一个原因就是tables中某个元素一旦触发reflow就会导致table里所有的其它元素reflow。在适合用table的场合,可以设置table-layout为auto或fixed,这样可以让table一行一行的渲染,这种做法也是为了限制reflow的影响范围。
- 很多情况下都会触发reflow,如果css里有expression,每次都会重新计算一遍。
- 避免在document上直接进行频繁的DOM操作,如果确实需要可以采用off-document的方式进行
- 先将元素从document中删除,完成修改后再把元素放回原来的位置
- 将元素的display设置为”none”,完成修改后再把display修改为原来的值
- 如果需要创建多个DOM节点,可以使用DocumentFragment创建完后一次性的加入
- Minimizing browser reflow
- Rendering: repaint, reflow/relayout, restyle
- 页面重构应注意的repaint和reflow
如需转载,请注明来自: BorisHuai前端修炼 > Repaint and Reflow