Struts2教程 - 1.3 我们为什么要用Struts2

在上一节中,笔者对 Struts2 的各个组成部分进行了大致的说明,也许有些读者对 ActionFilter 这些技术名词还只有些模糊概念。也不明白为什么 Struts2 需要这些作为它的一部分。因此有必要对 Struts2Web 项目中进行操作的整体流程详细说明。为了加深概念,图 1.3Struts2 官方网站上提供的 Struts2 的架构一览。对于该图,笔者将 Struts2 的 操作流程各个部分在细分和整理。


1.3  Struts2 整体结构图

从图 1.3 中可知,右上角的 HTTP 请求发出后,如果在 Context 中有对象,先通过过滤器 ActionContextCleanUpContex 对象清理,然后如果项目中使用像 SiteMesh 这样的框架,那先通过它们这样的过滤器。然后再使用 ActionMapper 进行调度,在配置文件 Struts.xml 中寻找相应的 URL 控制,通过 ActionInvocation 找到 Action ,如果被找到的 Action 有拦截器配置,则在 Action 的前后执行拦截器。 Action 主要功能则是调用业务逻辑类,对业务逻辑进行处理。处理完之后,则返回一个 Result ,在 Struts.xml 中根据相应定义的 Result 导航目标视图,产生 Response 返回到相应的目标视图页面。如果还有过滤器设置,则还需要进行过滤器的执行和控制。

通过以上的说明,其实可知 Struts2 其实还是和基本的 MVC 模式概念有些区别,在 VC 也就是视图和控制部分,它调用的时候都是通过相应的过滤器或拦截器组件进行处理,也就是比起传统的 MVC 模式,它提供了很多附加的操作处理,但是这些操作处理原先在 MVC 中都是一起执行的,现在只不过把他们和核心的流程分离开,因此不仅仅是 MVC 的分离,甚至某些核心和非核心的控制处理也分开了。更加体现了松耦合的开发理念。

使用 Struts2 的目标其实也已经很清楚了,面对以前非结构化或比较混乱的项目开发框架。 Struts2 可以让项目结构化,而且对于很多新技术尤其是视图技术提供了很好的支持,对于开发人员,在 Struts2 中开发自己新的符合业务逻辑的组件自由度更加高,而且也不会使原有结构发生改变或混乱。

Struts2 诞生之前,同类型比较知名的基于 MVC 模式的 Web 项目开发框架有 WebWorkTapestryJSFSpringMVCStruts2 诞生后, WebWork 已经和 Struts 合并,剩下的还有其他三个开发框架。笔者对其一一做介绍,然后让它们和 Struts2 相比较,读者就能明白这些框架的技术优势和劣势分别在哪里。

1Tapestry 优劣点

该框架是基于组件开发的框架。它有以下几点优势:

l   非常高的代码复用性。

l   将开发者从繁琐的JSP 代码中解脱出来,取而代之的是真正面像对象方法,而不是URL 解析。

l   对国际化的支持。

l   精确地错误定位,将错误定位到源程序中的行,取代了JSP 中莫名奇妙地错误提示。

不过缺点也很致命,读者试看以下各点:

l   学习文档都是很概念化的,没有什么实用性。

l   学习曲线很陡峭,即入门者开始学习时候很难理解掌握。

l   产品发布周期也很长,要很长时间才会把开发者提出的技术缺陷在下一版本中解决。

l   几乎没有什么成功的 Web 项目开发示例。

l   IDE (集成开发环境)对其的支持很弱。在开发工具中使用它进行 Web 项目开发,几乎没有很好的便捷开发方法。

现在的 Web 项目开发中,对快速开发理念都很重视,而 Tapestry 由于以上的各个缺点往往拖慢了开发进度,因此几乎没有 IT 公司会使用它开发 Web 项目。

2JSF 优劣点

该框架也是基于组件开发的框架。而且它诞生时间比 Tapestry 还要早,尤其是它的设计者出身于 Sun 公司,因此也是 Sun 力推的框架,“血统”是最纯正的。它有以下几点优势:

l   J2EE 标准, Sun 是制定行业标准和技术标准的公司,因此 JSF 是标准是完全正常的。

l   易于开发,吸引了大批原 C/S 结构开发者,其原因也是它基于组件开发的理念。

l   丰富的导航框架,也让开发者从 JSP 代码中解放出来。

JSF 因为其“血统纯正”,因此作为标准给人感觉完全不是因为自身优点决定。况且笔者认为作为标准,它的表现实在是有点差。试看以下各点:

l   虽然导航框架丰富,但是标签不是很丰富,特别是对原有 JSP 标签的支持。

l   JSF 也没有什么好的成功项目典范,虽然有开发者使用它作为开发,但是更多的 IT 公司对其还是采取小心翼翼的观望态度。既然是标准,那为什么大家都不采用这个标准呢?

l   作为标准,对 J2EE 的支持不是很好,特别是安全机制方面。

l   IDE (集成开发环境)对其的支持很弱。在开发工具中使用它进行 Web 项目开发,几乎没有很好的便捷开发方法。

l   学习曲线同样陡峭。

值得说的是目前有个 richface 框架,它比较好的支持了组件,现在有很多开发者将其作为 JSF 的补充,但是由于它不是标准,因此推广也不是很好。笔者认为如果它能和 JSF 合为一体,则 JSF 还是一个比较有希望的 Web 项目开发框架,而不只是靠自己的“血统”来和其他 Web 项目框架一较高下。

3SpringMVC 优劣点

SpringMVC 其实是 Spring 框架中对 MVC 模式的一个支持 Web 开发的应用。它有以下几个优点:

l   Struts2 一样具有一个转发过滤器,控制很灵活。

l   对于值绑定和校验机制可以让开发者自行开发自己的组件。

l   也是用 IOC 来实现的。

l   和其他视图技术的整合非常好,支持力度也很强。

笔者个人认为该框架和 Struts2 一样是基于松耦合和 AOP 理念实行开发,因此很多优点其实就是 Struts2 的优点。但是相比较而言缺点也很明显,比如:

l   jsp 中要写很多代码。没有把开发者从繁重的工作中解放出来。

l   控制器过于灵活,缺少一个公用控制器。不像 Struts2 有一个专门的 FilterDispatcher 来进行控制导航转发处理。

l   后缀名为 xml 的配置文件太多。让开发者很茫然。这也正是 Struts2 中为什么要引入 properties 属性文件配合 xml 文件进行项目系统参数配置的原因。

由于 Struts2 的丰富标签库以及对整体控制器的开发和配置,再加上同样也是采取流行的松耦合和 AOP 开发理念进行开发。因此个人认为 Struts2 在同类型的 Web 项目开发框架中应该是最有优势的。

下一节中笔者将使用自己最常用的开发工具 MyEclipse 进一步说明 Struts2 的各个技术优势以及新建 Web 项目中 Struts2 的基本配置。

更多信息请查看 java进阶网 http://www.javady.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值