JAVA网页设计WebWork2源码剖析续三
专门做了这个例子;而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的企业模块,专门针对企业数据库服务器的连接维护。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 是一种语言,用以产生「小应用程序(Applet(s)) 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 是一种使网页(Web Page)产生生动活泼画面的语言 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
页:
[1]