|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。web
最初我盘算剖析一下WebWork2.x中的输出校检部分,校检数据一般包含客户端反省和服务端反省两种,在WebWork2.x中都有很好的撑持,起首来剖析服务端,服务真个校检类全体来自于com.opensymphony.xwork.validator包,服务真个一切校检事情都是经由过程一个ValidationInterceptor拦阻器来举行拦阻的,以是说Interceptor在WebWork2.x中的位置就相称于我们心中的“神”,他是用来挽救统统的,有点夸大了,哈哈!
上面请浏览ValidationInterceptor拦阻器的代码
publicclassValidationInterceptorextendsAroundInterceptor{
protectedvoidafter(ActionInvocationdispatcher,Stringresult)throwsException{
}
//猎取Action,然后挪用ActionValidatorManager来举行反省事情
protectedvoidbefore(ActionInvocationinvocation)throwsException{
Actionaction=invocation.getAction();
Stringcontext=invocation.getProxy().getActionName();
…
ActionValidatorManager.validate(action,context);
}
}
别走开,接着看ActionValidatorManager,因为这个类有点庞大,只做次要的剖析,其他则疏忽
publicclassActionValidatorManager{
protectedstaticfinalStringVALIDATION_CONFIG_SUFFIX="-validation.xml";
//用于将校检信息缓存起来
privatestaticfinalMapvalidatorCache=Collections.synchronizedMap(newHashMap());
privatestaticfinalMapvalidatorFileCache=Collections.synchronizedMap(newHashMap());
privatestaticfinalLogLOG=LogFactory.getLog(ActionValidatorManager.class);
…
//创建一个DelegatingValidatorContext,用于猎取设置资本,如:毛病提醒信息等
publicstaticvoidvalidate(Objectobject,Stringcontext)throwsValidationException{
ValidatorContextvalidatorContext=newDelegatingValidatorContext(object);
validate(object,context,validatorContext);
}
//
publicstaticvoidvalidate(Objectobject,Stringcontext,ValidatorContextvalidatorContext)throwsValidationException{
//创建一个校检列表
Listvalidators=getValidators(object.getClass(),context);
SetshortcircuitedFields=null;
//遍历这个列表
for(Iteratoriterator=validators.iterator();iterator.hasNext();){
Validatorvalidator=(Validator)iterator.next();
validator.setValidatorContext(validatorContext);
…
//挪用校检类,注重一切的自界说校检类必需从validator接口中完成
validator.validate(object);
}
…
}
至于客户端校检,因为操纵全体来自于com.opensymphony.webwork.validators包,其他的一切校检类都从ScriptValidationAware接口下承继,因为工夫的干系我在这里不做剖析了,列位若有乐趣,本人往研讨吧!
实在WebWork2.x内里另有良多相干的细节挪用,在此我不克不及逐一形貌,列位假如有乐趣的话,也无妨来看看源码。
明天就到这里了啊,至于WebWork2.x的标签我就不想看了,不晓得是甚么缘故原由我就是不太喜好标签啊,下个JavaWeb使用我必定用WebWork2.x来举行开辟,这么好的一个Framework不必太惋惜了啊!
Email:zhuam@StudyJava.com
zhuaming@Gmail.com
Blog:http://blog.csdn.net/zhuam
java主要分三块,j2se:java的基础核心语言。j2me:java的微型模块,专门针对内存小,没有持续电源等小型设备。j2ee:java的企业模块,专门针对企业数据库服务器的连接维护。 |
|