小妖女 发表于 2015-1-18 11:48:46

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的企业模块,专门针对企业数据库服务器的连接维护。

山那边是海 发表于 2015-1-21 15:22:16

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

仓酷云 发表于 2015-1-25 11:57:15

接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。

乐观 发表于 2015-2-2 21:56:35

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

深爱那片海 发表于 2015-2-5 02:30:26

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

飘灵儿 发表于 2015-2-5 22:01:55

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

小女巫 发表于 2015-2-6 13:20:11

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

海妖 发表于 2015-2-12 20:23:19

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

爱飞 发表于 2015-3-3 06:42:18

是一种语言,用以产生「小应用程序(Applet(s))

愤怒的大鸟 发表于 2015-3-6 21:19:09

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

分手快乐 发表于 2015-3-13 00:07:23

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

再见西城 发表于 2015-3-16 23:22:38

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

若天明 发表于 2015-3-17 03:11:17

设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧

小魔女 发表于 2015-3-23 17:23:15

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

冷月葬花魂 发表于 2015-3-24 15:42:00

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)

小妖女 发表于 2015-4-9 00:42:38

是一种使网页(Web Page)产生生动活泼画面的语言

柔情似水 发表于 2015-4-21 17:30:44

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

因胸联盟 发表于 2015-4-22 05:03:11

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

灵魂腐蚀 发表于 2015-5-1 13:12:10

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

活着的死人 发表于 2015-5-6 03:49:39

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
页: [1]
查看完整版本: JAVA网页设计WebWork2源码剖析续三