??xml version="1.0" encoding="utf-8" standalone="yes"?>
开源:不用多说Q源代码可以让你一行一行仔l分析,深入了解其内部实现机制?br />
MVCQ它强制性的使应用程序的输入、处理和输出分开。用MVC应用E序被分成三个核心部Ӟ模型、视图、控制器。它们各自处理自qd。MVC享有“全球W一设计模式”的美誉,是当前很行的一U设计理念和思想Q你要学好STRUTSQ必要要让这U思想深入骨髓?我在另一文章中对MVCq行q阐qͼ关于MVC的流E及例子请参阅拙作:http://blog.csdn.net/lenotang/archive/2008/06/18/2562348.aspx)
J2EEQJ2EE是用Java技术开发企业应用的一U事实上的工业标准。J2EE组成一个完整企业应用的不同部分纳入不同的容器(Container)Q每个容器中都包含若q组?q些lg是需要部|在相应容器中的)Q同时各U组仉能用各UJ2EE Service/API。其中最常用的容器就是WEB容器Q就是我们常说的WEB服务器)Q里面最核心的两个组件就是JSP和SERVLET。而STRUTS是Zq两U技术,依赖于WEB容器?br />
WEB表现层:我们常说的J2EE四层体系架构QWEB表现层,业务逻辑层,持久层,数据库层。这是一U逻辑划分。WEB表现层的特点是依靠WEB服务器,直接跟客LQ一般是WEB览器)打交道。STRUTS处于WEB表现层,主要是接受q处理用戯求,q将处理l果响应l用戗?|管有家bitscn.net
框架Q通俗地讲Q框架就是一?#8220;半成?#8221;Q它做了一些通用的东西让你去配置和扩展。框架的强大之处不是说它能让你做什么,而是它不能让你做什么!它混ؕ的东西变得结构化。我们来打个比方。框架就像是一间有很多屋梁的房子,当你需要扩建房子的时候,譬如增加新的戉K、窗户和q道或者在卧室增加一个壁炉,׃屋梁的限Ӟ你ƈ没有什么其他的选择。虽然较?yu)的屋梁会让你有更多的选择Q但是当台风来袭或者发生地震的时候,你让家h住在q样一间只有屋的房子里,恐怕不会觉得安全吧。MQ框架是在结构和创造力之间的一个精的天^?
好了。这里假讑֤家已l理解了上述概念Qƈ会用JSP/SERVLET做一些普通的WEB应用E序。现在就让我们来看看如何学习STRUTS框架吧。这里我以STRUTS 1.2版本Z。(STRUTS 2.0的实现跟以前的版本有很大不同Q我以后会讲到。)让我们出发吧Q?|管u家u.bitsCN.com
首先Q你要照书本或者网上的例子跑一个最单的STRUTS应用Q就是在客户端显CZ个HELLOWORLD的那U,q叫先睹为快。在q里你开始接触到做STRUTS应用需要的东西QSTRUTS的JAR包,核心控制器ActionServlet在web.xml上的配置Q针对具体用戯求URL的Action的编写以及STRUTS应用的核心配|文件struts-config.xml。做完后停下来思考一下?
然后Q你开始跑一个稍微大点的用户登陆的应用,成功p转到我们的主面Q失败就l箋回到登陆面。我们引入ActionFormlg和对后台数据库的操作。这个时候MVC发挥作用了。ActionServlet和自q写的Action分别充当前,后端控制器组ӞDAO/DTO充当了模型组ӞJSP充当视图lg。struts-config.xml也变的饱满v来,上面开始多了些配置datasourcesQform-beans,action-mappings。做完后到网上找一些好的参考资料或者利用自q典的STRUTS的案头书Q最好是有图解)Q开始认真琢STRUTS的运行原理和执行程Q特别要好生体会ActionFormlg的作用和struts-config.xmlq个核心配置文g每一处用到的配置。这个时候,你应该开始有些领(zhn):我们自己写的Actionq有ActionFormcM定要l承框架已有的Action和ActionFormQ写完了之后q必d它们配|到struts-config.xml中去?|管有家bitscn.net
接着Q你已经对STRUTS框架有了大致的了解,可能开始对STRUTS的其他主题感兴趣了,OK,现在扩充你的登陆应用吧。先加上验证Q不然你的系l会不堪一凅R验证分为客L验证和服务器端验证。服务器端的验证我们可以在ActionForm里面的validate()Ҏ(gu)里做Q也可以在随后的Actioncȝexecute()Ҏ(gu)里做Q甚臛_以用验证框架。这里大家要把重Ҏ(gu)在验证框架的学习上。做好后再加上资源国际化I18NQ针对不同区域不同语a的客h供不同语a版本的页面显C。我们开始写资源属性文Ӟ开始在struts-config.xml里面配置<messages-resource>,开始用STRUTS自带的标{?lt;html:errors/>,<bean:message/>{。这个里面涉及的知识炚w很多Q需要大家耐心l致地学习。大家在跑这个应用的时候会发现各种各样的异常和问题。不要害怕,q些错误都是我们的好朋友Q我们要把它们通通都记录下来Qƈ坚韧地排除掉它们。这里要CQ尽量避免重复犯错,不要在同一个地方跌倒两ơ?
做完后,认真ȝ和思考?
再接着Q你把上面的都基本消化了Q但是总隐隐觉得不够系l和完整Q你开始做几个CRUD的应用,完成普通的增删查改的工作。在做这些应用的q程中,你要认真ȝ核心配置文gstruts-config.xml里面?个重要节点元素的配置以及它们的顺序,每个节点的重要属性,特别?lt;action-mappings>里的<action>子节点的属性是重中之重Q一定要好好理解q灵z运用。你也要开始系l地学习STRUTS里面的标{。但q个时候千万不要追求大而全Q只学习几种常用的标{ְ可以了,重点攑֜html,bean,q有logic标签上。这时候还有些知识点你也许要用到Q譬如:文g上传控gQ防止信息重复提?Q自定义标签Qcookie的用等{。这是个相Ҏ(gu)较耗时间和_֊的阶D了Q你要做的就是不断地参考,不断地思考,不断地ȝQ最好还能和志同道合的h不断C论?
慢慢圎ͼ你对STURTS框架有了一个全局性的宏观把握Q用它来完成一些小模块的开发已l没有太大问题,你已l开始志得意满了QSTRUTS不过如此嘛!如果你到了这一步,我首先要恭喜你,你接q成功了。但我也要小心地提醒你:STRUTS里面q有很多东西值得挖掘Q你不妨多问一下自己,软g有一个h开发的吗?面我用了良好的布局吗?面D都是那么单吗Q我的所有做法就不能有更单的实现了吗Q我对STRUTS框架的好处了如指掌了吗?好的Q如果你想通了Q带着q些问题Q你׃重新披挂上阵Q开始学习STRUTS的多模块开发,开始学习tiles框架Q开始认真研读STRUTS的源代码Q开始学习一些更单有效的ActionlgcdActionFormlgc?#8230;…Q真应了一句古语:各也有涯,知也无Q最后呢Q大家可能会(zhn)出一些道理:譬如STRUTS框架基本的好处就是用配置代替~码Q它是一个半成品Q是让我们扩展和配置的等{?|管u家u.bitsCN.com
上面我粗略地勑了一下学习STRUTS的曲Uѝ归U一下:学习框架需要@序渐q,实例驱动Q思考ȝ。实际上Q我在做培训的过E中发现Q如果我们在学习STRUTS之前Q自己动手写q一个简易的MVC框架Q学习STRUTS会非常LQ大概只需要五天的旉Q而且可以学的非常好。大家不要认为框架就是很庞大很复杂的怪兽Q自qҎ(gu)法写出来。其实,无非是我们所理解的朴素思想用代码实现出来Ş了?br />
【{自www.bitsCN.com?/p>