三大框架SSH的底层机制及原理(2)
图四
这里要特别说明一下的是:就是Action这个类,上面已经说到了它是Struts中真正干活的地方,也是值得我们高度关注的地方。可是,关于它到底是属于控制层还是属于模型层,存在两种不同的意见,一种认为它属于模型层,如:《JSP Web编程指南》;另一些则认为它属于控制层如:《Programming Jakarta Struts》、《Mastering Jakarta Struts》和《Struts Kick Start》等认为它是控制器的一部分,还有其他一些书如《Struts in Action》也建议要避免将业务逻辑放在Action类中,也就是说,图3中Action后的括号中的内容应该从中移出,但实际中确有一些系统将比较简单的且不打算重用的业务逻辑放在Action中,所以在图中还是这样表示。显然,将业务对象从Action分离出来后有利于它的重用,同时也增强了应用程序的健壮性和设计的灵活性。因此,它实际上可以看作是Controller与Model的适配器,如果硬要把它归于那一部分,笔者更倾向于后一种看法,即它是Controller的一部分,换句话说,它不应该包含过多的业务逻辑,而应该只是简单地收集业务方法所需要的数据并传递给业务对象。实际上,它的主要职责是:
? 校验前提条件或者声明 ? 调用需要的业务逻辑方法 ? 检测或处理其他错误
? 路由控制到相关视图
上面这样简单的描述,初学者可能会感到有些难以接受,下面举个比较具体的例子来进一步帮助我们理解。如:假设,我们做的是个电子商务程序,现在程序要完成的操作任务是提交定单并返回定单号给客户,这就是关于做什么的问题,应该由Action类完成,但具体怎么获得数据库连接,插入定单数据到数据库表中,又怎么从数据库表中取得这个定单号(一般是自增数据列的数据),这一系列复杂的问题,这都是解决怎么做的问题,则应该由一个(假设名为orderBo)业务对象即Model来完成。orderBo可能用一个返回整型值的名为submitOrder的方法来做这件事,Action则是先校验定单数据是否正确,以免常说的垃圾进垃圾出;如果正确则简单地调用orderBo的submitOrder方法来得到定单号;它还要处理在调用过程中可能出现任何错误;最后根据不同的情况返回不同的结果给客户。
二、为什么要使用Struts框架
既然本文的开始就说了,自己可以建这种框架,为什么要使用Struts呢?我想下面列举的这些理由是显而易见的:首先,它是建立在MVC这种公认的好的模式上的,Struts在M、V和C上都有涉及,但它主要是提供一个好的控制器和一套定制的标签库上,也就是说它的着力点在C和V上,因此,它天生就有MVC所带来的一系列优点,如:结构层次分明,高可重用性,增加了程序的健壮性和可伸缩性,便于开发与设计分工,提供集中统一的权限控制、校验、国际化、日志等等;其次,它是个开源项目得到了包括它的发明者Craig R.McClanahan在内的一些程序大师和高手持续而细心的呵护,并且经受了实战的检验,使其功能越来越强大,体系也日臻完善;最后,是它对其他技术和框架显示出很好的融合性。如,现在,它已经与tiles融为一体,可以展望,它很快就会与JSF等融会在一起。当然,和其他任何技术一样,它也不是十全十美的,如:它对类和一些属性、参数的命名显得有些随意,给使用带来一些不便;还有如Action类execute方法的只能接收一个ActionForm参数等。但瑕不掩瑜,这些没有影响它被广泛使用
为什么使用Struts2 ?
新版本的Struts2.0是struts 的action架构和webwork的融合体.依照Struts2.0.1的发布公告,一些关键特性如下 :
? 设计简单: 使用抽象类而不是接口是Struts1的一个设计上的问题,这
已经在Struts2中得到了解决.在Struts2中绝大多数类都是基于接口的,并且它的绝大多数核心接口都是独立于HTTP的.Struts2的Action类是独立于框架的,可视为单纯的POJO.框架的组件都设法保持松耦合
? 单纯的Action : Action都是单纯的POJO.任何含有execute()方法的
java类都可以当作Action类来使用.甚至我们始终都不需要实现接口.
反转控制会在开发Action类的时候得到介绍过,这能让Action中立于底层框架.
? 不再使用ActionForm : ActionForm特性不再在Structs2中出现.简单
的JavaBean即可对Action直接传递参数.不再需要全部使用String类型的参数.
? 简单的测试 : Struts2的Action是独立于HTTP并且中立于框架的.这
使得Struts2的程序可以很容易的在没有模拟对象的情况下测试.
? 巧妙的默认值 : 大多数配置元素都设有一个根据需要设定的默认值.
甚至根据需要基于XML的默认配置文件都可以进行重写.
? 改良的结果集 : 不像Struts1中的ActionForward,Struts2的结果集
灵活的提供了多种类型的输出,事实上这促进了响应的准备工作.
? 更好的标签特性 : Struts2可以添加样式表驱动标记,这使我们创建相
同的页面仅用更少的代码.Struts2的标签更有效而且是面向结果
的.Struts2的标签标记可以通过修改基础样式表来修改.个别的标签标记可以通过编辑FreeMarker的模板来修改.JSP和FreeMarker都完全得到了支持.
? 引入注释 : 在Struts2程序中,除了XML和Java properties 配置文件
外,Java 5的注释也可以作为一种选择.注释使得XML的使用降至最低.
? 有状态的Checkbox : Struts2中的checkbox不需要对false值进行特
殊处理.
? 快速开始 : 很多改变无需重启web容器即可实现.
? 自定义控制器 : Struts1可以自定义每一个模块的请求处理器,如果需
要,Struts2可以自定义每一个Action的请求处理.
? 易与Spring整合 : Struts2的Action与Spring是友好的,只需添加
Spring的bean
? 轻巧的插件 : Struts2可以通过添加一个Jar文件来进行扩展,不再需
要手动配置!
? 支持AJAX : AJAX主题对提升程序交互有着重要的意义.Struts2框架提
供了一套标签来AJAX化你的程序甚至DOJO.AJAX特性包括:
1. AJAX客户端验证.
2. 支持远程表单提交.(同样适用于submit标签) 3. 先进的div模板提供动态重载部份HTML
4. 先进的模板提供远程加载和计算Javascript的能力. 5. AJAX-only选项卡面板的实现 6. 丰富的发布/订阅事件模型 7. 自动交互完善标签
深入全面阐释Struts 2的方方面面
一、 Struts概述
Struts是一个用来开发 Model 2应用程序的框架。这个框架可以提高开发工作的速度,因为它提供的下面这些功能解决了 Web应用程序开发过程中的一些常见问题:
? ? ? ? ? ?
对页面导航活动进行管理;
对来自用户的输入数据进行合法性验证; 统一的布局; 可扩展性;
国际化和本地化; 支持 Ajax技术。
因为 Struts是一个 Model 2框架,所以在使用 Struts时还应该遵守以下几条不成文的规定。
不要在 JSP页面里嵌入 Java代码,应该把所有的业务逻辑包含在一些被称为“动作类”( action class)的 Java类里。
? 在 JSP页面里使用 Expression Language( OGNL)去访问有关的模型对象。
? 尽量避免编写自定义标签(因为自定义标签的代码比较难以编写)。
?
二、升级到 Struts 2
相关推荐:
- [法律文档]苏教版七年级语文下册第五单元教学设计
- [法律文档]向市委巡视组进点汇报材料
- [法律文档]绵阳市2018年高三物理上学期第二次月考
- [法律文档]浅析如何解决当代中国“新三座大山”的
- [法律文档]延安北过境线大桥工程防洪评价报告 -
- [法律文档]激活生成元素让数学课堂充满生机
- [法律文档]2014年春学期九年级5月教学质量检测语
- [法律文档]放射科标准及各项计1
- [法律文档]2012年广州化学中考试题和答案(原版)
- [法律文档]地球物理勘查规范
- [法律文档]《12系列建筑标准设计图集》目录
- [法律文档]2018年宁波市专技人员继续教育公需课-
- [法律文档]工会委员会工作职责
- [法律文档]2014新版外研社九年级英语上册课文(完
- [法律文档]《阅微草堂笔记》部分篇目赏析
- [法律文档]尔雅军事理论2018课后答案(南开版)
- [法律文档]储竣-13827 黑娃山沟大开挖穿越说明书
- [法律文档]《产品设计》教学大纲及课程简介
- [法律文档]电动吊篮专项施工方案 - 图文
- [法律文档]实木地板和复合地板的比较
- 探析如何提高电力系统中PLC的可靠性
- 用Excel函数快速实现体能测试成绩统计
- 教师招聘考试重点分析:班主任工作常识
- 高三历史选修一《历史上重大改革回眸》
- 2013年中山市部分职位(工种)人力资源视
- 2015年中国水溶性蛋白市场年度调研报告
- 原地踏步走与立定教学设计
- 何家弘法律英语课件_第十二课
- 海信冰箱经销商大会——齐俊强副总经理
- 犯罪心理学讲座
- 初中英语作文病句和错句修改范例
- 虚拟化群集部署计划及操作流程
- 焊接板式塔顶冷凝器设计
- 浅析语文教学中
- 结构力学——6位移法
- 天正建筑CAD制图技巧
- 中华人民共和国财政部令第57号——注册
- 赢在企业文化展厅设计的起跑线上
- 2013版物理一轮精品复习学案:实验6
- 直隶总督署简介




