由于Struts框架在全球的广泛使用学习它的人也非常之多但是大部分人花费了太多不必要的时间和精力在一些不太重要的地方导致学习代价高昂成效也不是很好我这里根据多年培训经验的总结精心设计了一套学习Struts框架的曲线让大伙学习Struts框架既快且准节省大伙宝贵的时间一定会对各位学习者大有帮助
大家知道Struts是Apache 基金会Jakarta 项目组的一个开源项目它采用MVC设计模式是一个基于Sun JEE平台的WEB表现层框架这里有几个概念值得大家关注开源MVCJEEWEB表现层框架我来逐一解释
开源不用多说源代码可以让你一行一行仔细分析深入了解其内部实现机制
MVC它强制性的使应用程序的输入处理和输出分开使用MVC应用程序被分成三个核心部件模型视图控制器它们各自处理自己的任务MVC享有全球第一设计模式的美誉是当前很流行的一种设计理念和思想你要学好Struts必要要让这种思想深入骨髓(我在另一篇文章中对MVC进行过阐述关于MVC的流程及例子请参阅拙作)
JEEJEE是使用Java技术开发企业级应用的一种事实上的工业标准JEE将组成一个完整企业级应用的不同部分纳入不同的容器(Container)每个容器中都包含若干组件(这些组件是需要部署在相应容器中的)同时各种组件都能使用各种JEE Service/API其中最常用的容器就是WEB容器(就是我们常说的WEB服务器)里面最核心的两个组件就是JSP和SERVLET而Struts就是基于这两种技术依赖于WEB容器
WEB表现层我们常说的JEE四层体系架构WEB表现层业务逻辑层持久层数据库层这是一种逻辑划分WEB表现层的特点就是依靠WEB服务器直接跟客户端(一般是WEB浏览器)打交道Struts处于WEB表现层主要就是接受并处理用户请求并将处理结果响应给用户
框架通俗地讲框架就是一个半成品它做了一些通用的东西让你去配置和扩展框架的强大之处不是说它能让你做什么而是它不能让你做什么!它使混乱的东西变得结构化我们来打个比方框架就像是一间有很多屋梁的房子当你需要扩建房子的时候譬如增加新的房间窗户和过道或者在卧室增加一个壁炉由于屋梁的限制你并没有什么其他的选择虽然较少的屋梁会让你有更多的选择但是当台风来袭或者发生地震的时候你让家人住在这样一间只有屋顶的房子里恐怕不会觉得安全吧总之框架是在结构和创造力之间的一个精确的天平
好了这里假设大家已经理解了上述概念并会用JSP/SERVLET做一些普通的WEB应用程序现在就让我们来看看如何学习Struts框架吧这里我以Struts 版本为例(Struts 的实现跟以前的版本有很大不同我以后会讲到)让我们出发吧!
首先你要照书本或者网上的例子跑一个最简单的Struts应用就是在客户端显示一个HELLOWORLD的那种这叫先睹为快在这里你开始接触到做Struts应用需要的东西Struts的JAR包核心控制器ActionServlet在webxml上的配置针对具体用户请求URL的Action的编写以及Struts应用的核心配置文件Strutsconfigxml做完后停下来思考一下
然后你开始跑一个稍微大点的用户登陆的应用成功就跳转到我们的主页面失败就继续回到登陆页面我们引入ActionForm组件和对后台数据库的操作这个时候MVC发挥作用了ActionServlet和自己编写的Action分别充当前后端控制器组件DAO/DTO充当了模型组件JSP充当视图组件Strutsconfigxml也变的饱满起来上面开始多了些配置datasourcesformbeansactionmappings做完后到网上找一些好的参考资料或者利用自己经典的Struts的案头书(最好是有图解)开始认真琢磨Struts的运行原理和执行流程特别要好生体会ActionForm组件的作用和Strutsconfigxml这个核心配置文件每一处用到的配置这个时候你应该开始有些领悟我们自己写的Action还有ActionForm类一定要继承框架已有的Action和ActionForm写完了之后还必须得将它们配置到Strutsconfigxml中去
接着你已经对Struts框架有了大致的了解可能开始对Struts的其他主题感兴趣了OK现在扩充你的登陆应用吧先加上验证不然你的系统会不堪一击验证分为客户端验证和服务器端验证服务器端的验证我们可以在ActionForm里面的validate()方法里做也可以在随后的Action类的execute()方法里做甚至可以使用验证框架这里大家要把重点方在验证框架的学习上做好后再加上资源国际化IN针对不同区域不同语言的客户提供不同语言版本的页面显示我们开始写资源属性文件开始在Strutsconfigxml里面配置开始使用Struts自带的标签等这个里面涉及的知识点都很多需要大家耐心细致地学习大家在跑这个应用的时候会发现各种各样的异常和问题不要害怕这些错误都是我们的好朋友我们要把它们通通都记录下来并坚韧地排除掉它们这里要记住尽量避免重复犯错不要在同一个地方跌倒两次
做完后认真总结和思考
再接着你把上面的都基本消化了但是总隐隐觉得不够系统和完整你就开始做几个CRUD的应用完成普通的增删查改的工作在做这些应用的过程中你要认真总结核心配置文件Strutsconfigxml里面的个重要节点元素的配置以及它们的顺序每个节点的重要属性特别是里的子节点的属性是重中之重一定要好好理解并灵活运用
你也要开始系统地学习Struts里面的标签但这个时候千万不要追求大而全只学习几种常用的标签就可以了重点放在htmlbean还有logic标签上这时候还有些小知识点你也许要用到譬如文件上传控件防止信息重复提交 自定义标签cookie的使用等等这就是个相对比较耗时间和精力的阶段了你要做的就是不断地参考不断地思考不断地总结最好还能和志同道合的人不断地争论
慢慢地你对Struts框架有了一个全局性的宏观把握用它来完成一些小模块的开发已经没有太大问题你已经开始志得意满了Struts不过如此嘛!如果你到了这一步我首先要恭喜你你接近成功了但我也要小心地提醒你Struts里面还有很多东西值得挖掘!你不妨多问一下自己软件有一个人开发的吗?页面我使用了良好的布局吗?页面导航都是那么简单吗?我的所有做法就不能有更简单的实现了吗?我对学习Struts框架的好处了如指掌了吗?好的如果你想通了带着这些问题你就会重新披挂上阵开始学习Struts的多模块开发开始学习tiles框架开始认真研读Struts的源代码开始学习一些更简单有效的Action组件类和ActionForm组件类……真应了一句古语吾生也有涯知也无涯!最后呢大家可能会悟出一些道理譬如Struts框架基本的好处就是用配置代替编码它是一个半成品是让我们扩展和配置的等等
上面我粗略地勾勒了一下学习Struts的曲线归纳一下学习框架需要循序渐进实例驱动思考总结实际上我在做培训的过程中发现如果我们在学习Struts之前自己动手写过一个简易的MVC框架学习Struts将会非常轻松大概只需要五天的时间而且可以学的非常好大家不要认为框架就是很庞大很复杂的怪兽自己绝对无法写出来其实无非就是将我们所理解的朴素思想用代码实现出来罢了好了时间关系今天就写到这里祝愿大家学的开心!