`
seadragonnj
  • 浏览: 59004 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

2009-04-24

阅读更多

2009-04-24

1、关于ajax的一点知识

     ajax本身上异步交互的,这也是它的成功之处,但异步并不总是有用的,今天就遇到一个因为异步的引起的问题,就是提交表单时,要进行表单验证,其中有些表单是要进行ajax验证的:

function submitForm(){
		var storeName=$("#storeName");
		var url="${req.contextPath}/store/checkStoreName.action";
		var flag=true;
		$.post(url,{storeName:storeName.val()},
			function(data){
				if(data=="exist"){
					showMsg_OnError(document.getElementById("storeName"),"店铺名已经存在");
		flag=false;
				}else{

		flag=true;
					showMsg_OnPass(obj);
				}
			});
					
		if(!flag){
			return false;
		}
		var storeClass=$("#storeClass");
		if(storeClass.val()==""){
			showMsg_OnFocus(document.getElementById("storeClass"),"请选择店铺类型");
			storeClass.focus();
			return false;
		}
		document.form1.submit();	
	}

       在这段代码中有一段ajax验证的代码,同时一个哨兵flag,如果店铺名存在的话,就把flag设为false,然后在ajax调用后判断这个哨兵字段为false时,表单就不提交,但因为ajax是异步的,所以ajax在还没有来得及调用success后的方法,就调用submitForm()方法后面的代码了,而这时候的flag还是true(即使ajax验证店铺名存在),

     解决这个问题的办法就是不要让ajax异步执行,这时候就得用jQuery的$.ajax()这个方法了:

var flag=true;
		$.ajax({
			type:"post",
			url:url,
			data:"storeName="+storeName.val(),
			async:false,
			success:function(data){
				if(data=="exist"){
					showMsg_OnError(document.getElementById("storeName"),"店铺名已经存在");
					document.getElementById("storeName").focus();
					flag=false;
				}else{
					flag=true;
					showMsg_OnPass(document.getElementById("storeName"));
				}
			}
		});
		if(!flag){
			return false;
		} 
 

2、用webwork的拦截器来过滤页面输入的HTML标签

package com.upcenter.interceptor;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.regex.*;

import javax.servlet.ServletContext;

import com.opensymphony.xwork.ActionInvocation;
import com.opensymphony.xwork.interceptor.Interceptor;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.opensymphony.webwork.ServletActionContext;

public class FilterInterceptor implements Interceptor {
	/**
	 * 替换bean中的所有string类型字段的script等危险脚本 注意参数仅限于bean,不能为string等基础类型
	 * beanFieldWipeScript
	 * 
	 * @param obj
	 * @throws Exception
	 * @return void
	 * @throws Exception
	 */
	public static void beanFieldWipeScript(Object obj) throws Exception {
		if (obj == null)
			return;

		Field fieldsa[] = obj.getClass().getDeclaredFields(); // 取得clsa的所有field
		Field fielda;
		String ecclasspath = "com.upcenter.model";

		// 在a中查找字段fieldname
		for (int j = 0; j < fieldsa.length; j++) {
			fielda = fieldsa[j];	
			if (fielda.getType().getName().toLowerCase().indexOf(
					"java.lang.string") != -1) {// 属性为string类型
				
				int mod = fielda.getModifiers();
				String modifiers = Modifier.toString(mod).toLowerCase(); // 字段的修饰关键字
					if (modifiers.indexOf("static") == -1
						&& modifiers.indexOf("final") == -1) { // 不包含static和final关键字

					fielda.setAccessible(true);
					
					String tmpfieldvalue = fielda.get(obj) == null ? null
							: (String) fielda.get(obj);
					

					fielda.set(obj, wipeScript(tmpfieldvalue));
				}
			} else if (fielda.getType().getName().toLowerCase().indexOf(
					ecclasspath) != -1) { // 为model时
				fielda.setAccessible(true);
				beanFieldWipeScript(fielda.get(obj));// 递归调用处理对象内的对象
			}
		}



		//System.out.println("脚本过滤完毕:" + obj.getClass().getName());
	}

	/**
	 * 过滤script 过滤iframe 过滤on事件 wipeScript
	 * 
	 * @param html
	 * @return
	 * @return String
	 * @throws Exception
	 */
	public static String wipeScript(String html) {
		if (html == null){
return null;

}
		//System.out.println("过滤前:"+html);
		html = html.replaceAll("<", "&lt;").replaceAll(">", "&gt;");
		//System.out.println("过滤后:"+html);
		return html;
	}

	public void destroy() {
	}

	public void init() {
	}

	public String intercept(ActionInvocation invocation) throws Exception {
		Object acionobj = invocation.getAction();
		beanFieldWipeScript(acionobj); // 调用进行过滤
		return invocation.invoke();
	}
}
 

2009-04-27

1、在java中的正则表达式中,/s并不能匹配全角空格:要替换全角空格直接输入全角空格就可以了:

	String keyWords = model.getKeyWords().replaceAll(" "," ");
 

2009-04-28

反过来用like,性能可能不好,但也不失为一种解决问题的思路,如下面:是否keyword包含非法字符

select * from dict_keyword_filter d where #keyword# like concat(concat('%',keyword),'%')
 

2009-04-29

1、jquery的:contains(text)的用法:

含意:匹配包含给定文本的元素

$("#more_courses #courses_table tbody tr").hide().filter(":contains("+$(this).val()+")").show();

 2、一个正则表达式的网站,以前老是忘记

http://www.regexlab.com/zh/

3、jquery的index()方法

     可以通过index取得元素的索引值,上代码:

	$("td").hover(function(){
		//alert($("li").index(this));
		alert($("td").index(this));
	});
<table>
	<tr>
		<td>1</td>
		<td>2</td>
		<td>3</td>
	</tr>
</table>
 

 

 

 

 

分享到:
评论

相关推荐

    grub4dos-V0.4.6a-2017-02-04更新

    2017-02-04(yaya) Ls command: Empty Folder returns false. 2016-12-08(yaya) 修正lz4、vhd不显示解压缩进度指示。增加lzma解压缩进度指示。 2016-11-09(不点) 0x8205 bit 5 = 1: 使checkkey闲置循环...

    ESET_VC52_AUTOID精锐id自动获取器(绝对能用!)

    1.6.9.5_x64更新:2009-04-24 1、优化ESET服务器验证问题。 1.6.9.6_x64更新:2009-04-26 1、去除ESET服务验证,改为当第一次验证不到时就会改用别的线路验证。 1.7.0.0_x64更新:2009-05-05 1、重新编写“静默...

    nod32 id获取器

    1.6.9.5_x64更新:2009-04-24 1、优化ESET服务器验证问题。 1.6.9.6_x64更新:2009-04-26 1、去除ESET服务验证,改为当第一次验证不到时就会改用别的线路验证。 1.7.0.0_x64更新:2009-05-05 1、重新编写“静默...

    ESET nod32 ID自动获取工具【ESET_VC52_AUTOID】 V1.7.2.3

    1.6.9.5_x64更新:2009-04-24 1、优化ESET服务器验证问题。 1.6.9.6_x64更新:2009-04-26 1、去除ESET服务验证,改为当第一次验证不到时就会改用别的线路验证。 1.7.0.0_x64更新:2009-05-05 1、重新编写“静默...

    ESET nod32 ID自动获取工具【ESET_VC52_AUTOID】 V1.7.2.1

    1.6.9.5_x64更新:2009-04-24 1、优化ESET服务器验证问题。 1.6.9.6_x64更新:2009-04-26 1、去除ESET服务验证,改为当第一次验证不到时就会改用别的线路验证。 1.7.0.0_x64更新:2009-05-05 1、重新编写“静默...

    ESET nod32 ID自动获取工具【ESET_VC52_AUTOID】 V1.7.2.2

    1.6.9.5_x64更新:2009-04-24 1、优化ESET服务器验证问题。 1.6.9.6_x64更新:2009-04-26 1、去除ESET服务验证,改为当第一次验证不到时就会改用别的线路验证。 1.7.0.0_x64更新:2009-05-05 1、重新编写“静默...

    Testinside 1Y0-A04最新题库分享

    Testinside 1Y0-A04最新题库,更新时间:2009-7-24

    MW8209量产工具UdTools V1.1.1.0.rar

    老版本的MW8209量产工具V1.1.1.0正式版,更新发布日期:2009-04-24此版本优化了系统兼容性、同时还优化了容量升级处理;优化了测试周边环境;可以制作可移动盘 本地盘 写保护盘 加密盘 ISO自动播放盘;还可以...

    人力资源管理软件(完全免费)

    2008-04-24 人力资源管理软件修正了一些问题 解决模糊查询输入只要带有字母s报错的漏洞(感谢bravelc ) 人力资源管理软件解决人事合同按日期条件检索出错的问题(感谢Fantasy Ls ) 2008-04-29 人力资源管理软件...

    窗口大小调整软件

    0.7 - 2009-04-24: Added StickyScreen which makes windows automatically stick to the screen borders without needing shift (off by default). Added the ability to roll-up windows by double-clicking with ...

    天空网络电影系统SKYUC! v2.6.5.rar

    2009-04-24(发布2.6.5) [重大更改] 全新设计风格和模块,旧版风格全不能使用。 [重大更改] 为配合新风格,删除并新增一些模块。 [新增] 自动连播下一集功能,播放器代码变量{$skyuc_nextpage} [新增] 看过本片的...

    libevent-1.1b_1.4.13-stable_2.0.3-alpha 源码(资料中转)

    libevent-1.4.12-stable.tar.gz [GPG Sig] - ChangeLog - Release 2009-07-24 libevent-2.0.2-alpha.tar.gz [GPG Sig] - ChangeLog - Release 2009-07-24 libevent-1.4.11-stable.tar.gz [GPG Sig] - ChangeLog - ...

    RSPTW09-07-04-E01 R61581 a-Si HVGA Introduction[1].pdf

    首先,文件标题“RSPTW09-07-04-E01 R61581 a-Si HVGA Introduction[1].pdf”中透露了该文件是关于“RSPTW09-07-04-E01”项目的介绍,并且与特定组件“R61581”有关,其中“a-Si HVGA”很可能是该组件的一个型号或...

    我的C++Builder学习笔记

    2009-06-24 23:42 1,596 使用GDI+绘制旋转的图形及图片.txt 2009-07-02 09:22 5,000 创建快捷方式Builder.txt 2009-07-02 01:37 9,018 双击打开文件.txt 2009-07-31 10:51 352 图像中心扩散.txt 2008-12-06 12:25 ...

    群联U盘PS2251-50(UP19)量产工具版本对应关系

    - 发布日期:2009-04-01 21. **固件版本:01.08.10** - 量产工具版本:v1.08(ر)&v3.16 - 发布日期:2009-04-30 22. **固件版本:06.08.10** - 量产工具版本:v2.01&v3.08&v1.04 - 发布日期:2009-06-29 ...

    WinXP总管 XP管理工具体

    2009-04-15 12:06 143,872 ContextMenuManager.exe 2006-12-30 03:02 110,592 DesktopCleaner.exe 2005-11-15 10:56 1,486,848 DevComponents.DotNetBar.dll 2007-01-04 04:58 344,064 DevExpress.Data3.dll 2005-11...

    C#时间差函数

    DateTime dateTime2 = Convert.ToDateTime("2009-04-24 20:00:00"); // 创建 TimeSpan 对象 TimeSpan ts1 = new TimeSpan(dateTime1.Ticks); TimeSpan ts2 = new TimeSpan(dateTime2.Ticks); // 计算时间差 ...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -参考http://www.cnblogs.com/sanshi/archive/2009/09/04/1560146.html#1635830 +添加对extjs3.0中所有语言的支持。 -ExtAspNet扩展的多语言包在js\languages\extaspnet目录下,目前只有en,zh_CN,zh_TW三种实现...

    微软工具包 微软工具包

    2009-04-21 11:36 475,024 ADExplorer.exe 2007-11-07 10:13 401,616 ADInsight.chm 2007-11-20 13:25 1,049,640 ADInsight.exe 2006-11-01 14:05 150,328 adrestore.exe 2006-11-01 14:06 154,424 Autologon.exe ...

    Notepad++32位插件打包备份(30个)

    2010-03-24 19:36 237,568 Explorer.dll 2010-06-04 15:56 110,592 FileSwitcher.dll 2010-06-04 15:59 3,584 guidguard.dll 2009-09-09 21:32 270,336 HexEditor.dll 2017-02-19 16:03 433,152 HTMLTag_unicode.dll...

Global site tag (gtag.js) - Google Analytics