JAVA网页设计WebWork2源码剖析续二
JAVA学习必须明确这是一项投资,对于大多数的人来说,学习JAVA是为了就业,还有就是刚走向工作位置的朋友想尽快赶上工作的节奏。web上面我们再来剖析另外一个拦阻器的完成ModelDrivenInterceptor,起首说说他的计划目标,我们晓得在Struts中一般有一个ActionFormBean他是用来封装哀求数据的,在WebWork2.x中这一功效失掉了进一步的发扬,他能够完成两中Action驱动形式,他们都是信息照顾者.
Property-Driven
Model-Driven
最普通的注释就是,Property-Driven经由过程属性来贯串全部MVC,而Model-Driven就是经由过程Model对象来贯串全部MVC.
他们的存在体例:Model-Drive就是自力的一个类,而Property-Driven则必需依靠于你自界说的Action类
假如我们用Model-Drive体例,那末就必需在设置文件中增加ModelDrivenInterceptor拦阻器,由这个拦阻器向我们的ModelBean中传送值,且你的Action中也必需完成ModelDriven接口,用于猎取该ModelBean,上面来看看这个拦阻器的详细完成,来做进一步的剖析,代码以下:
publicclassModelDrivenInterceptorextendsAroundInterceptor{
//~Methods////////////////////////////////////////////////////////////////
protectedvoidafter(ActionInvocationdispatcher,Stringresult)throwsException{}
protectedvoidbefore(ActionInvocationinvocation)throwsException{
Actionaction=invocation.getAction();
if(actioninstanceofModelDriven){
//判别该Action是不是完成了ModelDriven接口,假如完成了这个ModelDriven接口,他将向这个Action所对应的Model传送信息
ModelDrivenmodelDriven=(ModelDriven)action;
OgnlValueStackstack=invocation.getStack();
//用于猎取Action中的ModelBean,并压进OgnlValueStack
stack.push(modelDriven.getModel());
}
}
}
关于OgnlValueStack的详细信息请参考http://www.ognl.org
从下面的这个publicStringintercept(ActionInvocationinvocation)办法中我们能够看出一切的拦阻器都是经由过程ActionInvocation来实行调剂的,我们能够称DefaultActionInvocation为XWork1.x的调剂器,说的这里我想列位对WebWork2.x的拦阻器也有了一个也许的懂得.
既然DefaultActionInvocation是xWork1.x的调剂器,不剖析他是说不外往的,接上去我们剖析ActionInvocation的完成者DefaultActionInvocation的源码,已窥其事实
因为之前也剖析过DefaultActionInvocation的一些代码,上面则节选部分还没有剖析的代码来完成扼要的剖析
publicclassDefaultActionInvocationimplementsActionInvocation{
//在这里Result是一个接口,而ActionChainResult是他的一个完成,他的目标是用于处置ActionChain的,在这里对ActionChain做以下申明:
一般一个Action实行终了,要末是前往表单,要末前往别的一个Action,来持续实行,假如前往了Action则就构成了ActionChain举措链,然后持续实行这个新的Action,直到前往一个non-chain了局
publicResultgetResult()throwsException{
ResultreturnResult=result;
//IfwevechainedtootherActions,weneedtofindthelastresult
while(returnResultinstanceofActionChainResult){
ActionProxyaProxy=((ActionChainResult)returnResult).getProxy();
if(aProxy!=null){
ResultproxyResult=aProxy.getInvocation().getResult();
if((proxyResult!=null)&&(aProxy.getExecuteResult())){
returnResult=proxyResult;
}else{break;}
}else{break;}
}
returnreturnResult;
}
//前往Stack
publicOgnlValueStackgetStack(){
returnstack;
}
…
//上面的办法我就不在赘述了,我想人人就是看称号也应当能够懂得一二,假如有甚么疑问,请参考后面的剖析
protectedvoidcreateAction(){
//loadaction
try{
action=ObjectFactory.getObjectFactory().buildAction(proxy.getConfig());
…
}
protectedStringinvokeAction(Actionaction,ActionConfigactionConfig)throwsException{
if(proxy.getConfig().getMethodName()==null){
returngetAction().execute();
…
}
}
你通过从书的数量和开发周期及运行速度来证明:net和ruby要比java简单。 是一种使网页(Web Page)产生生动活泼画面的语言 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 是一种突破用户端机器环境和CPU 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 是一种将安全性(Security)列为第一优先考虑的语言 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 Java是一种计算机编程语言,拥有跨平台、面向对java 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 是一种突破用户端机器环境和CPU Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
页:
[1]
2