- 浏览: 1048127 次
文章分类
最新评论
-
cjh_android:
我想你是对的,至少对于现实是对的,不过对于技术岗位竞争越来越激 ...
程序员的思考--终于确定了自己的技术发展方向 -
dongbiying:
现在情况如何 。。
创业,不能兼职 -
jackyrong:
ie 9 下时,老显示关闭窗口提示,有办法去掉么,就是关闭掉那 ...
jquery右下角弹窗效果 -
lmaxjj:
加点班如果都称得上是累,只能说明还没体会到真正的生活。。
IT男的进化论 -
馨雨轩:
IT男要进化需要先穿越
IT男的进化论
在上一节中,笔者对 Struts2 的各个组成部分进行了大致的说明,也许有些读者对 Action , Filter 这些技术名词还只有些模糊概念。也不明白为什么 Struts2 需要这些作为它的一部分。因此有必要对 Struts2 在 Web 项目中进行操作的整体流程详细说明。为了加深概念,图 1.3 是 Struts2 官方网站上提供的 Struts2 的架构一览。对于该图,笔者将 Struts2 的 操作流程各个部分在细分和整理。
图 1.3 Struts2 整体结构图
从图 1.3 中可知,右上角的 HTTP 请求发出后,如果在 Context 中有对象,先通过过滤器 ActionContextCleanUp 将 Contex 对象清理,然后如果项目中使用像 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 项目开发框架有 WebWork 、 Tapestry 、 JSF 、 SpringMVC 。 Struts2 诞生后, WebWork 已经和 Struts 合并,剩下的还有其他三个开发框架。笔者对其一一做介绍,然后让它们和 Struts2 相比较,读者就能明白这些框架的技术优势和劣势分别在哪里。
( 1 ) Tapestry 优劣点
该框架是基于组件开发的框架。它有以下几点优势:
l 非常高的代码复用性。
l 将开发者从繁琐的JSP 代码中解脱出来,取而代之的是真正面像对象方法,而不是URL 解析。
l 对国际化的支持。
l 精确地错误定位,将错误定位到源程序中的行,取代了JSP 中莫名奇妙地错误提示。
不过缺点也很致命,读者试看以下各点:
l 学习文档都是很概念化的,没有什么实用性。
l 学习曲线很陡峭,即入门者开始学习时候很难理解掌握。
l 产品发布周期也很长,要很长时间才会把开发者提出的技术缺陷在下一版本中解决。
l 几乎没有什么成功的 Web 项目开发示例。
l IDE (集成开发环境)对其的支持很弱。在开发工具中使用它进行 Web 项目开发,几乎没有很好的便捷开发方法。
现在的 Web 项目开发中,对快速开发理念都很重视,而 Tapestry 由于以上的各个缺点往往拖慢了开发进度,因此几乎没有 IT 公司会使用它开发 Web 项目。
( 2 ) JSF 优劣点
该框架也是基于组件开发的框架。而且它诞生时间比 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 项目框架一较高下。
( 3 ) SpringMVC 优劣点
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
发表评论
-
Struts之拦截器
2012-05-16 17:16 1535今天看了看拦截器,不由得想对拦截器做个描述,在我们进 ... -
struts第一篇:struts诞生记
2012-04-23 22:29 1158Struts是一个开源框架,学Struts有一段时间 ... -
Struts2教程 - 5.4.4 debug标签使用介绍
2012-04-16 21:23 1052技术要点 本节代码具体介绍 debug 数据 标签的使 ... -
Struts2教程 - 5.4.3 date标签使用介绍
2012-04-16 21:23 1172技术要点 本节代码具体介绍 date 数据 标签的使用 ... -
Struts2教程 - 5.2 OGNL表达式语言介绍
2012-04-14 21:15 2170在进行 Struts2 的标签库介绍之前,有必要着重对 ... -
Struts2教程 - 4.1 拦截器在Struts2中的缺省应用
2012-04-09 10:11 1155通过前几章介绍,读者应该明白在 Web 项目中,客户先在视图界 ... -
Struts2教程 - 使用Action类控制导航业务数据
2012-04-09 10:10 1287Struts2 中 Action 充当着一个关键的角色。它解决 ... -
Struts2教程 - 3.4 使用ActionSupport进行校验
2012-04-08 09:04 1578如果 From 数据操作有误,比如输入不是我们需要的数据, ... -
Struts2教程 - 3.3使用Action类控制导航业务数据
2012-04-08 09:04 1208Struts2 中 Action 充当着一个关键的角色。 ... -
Struts2教程 - 5.4.8--10 url标签使用介绍
2012-04-16 21:24 10715.4.8 url 标签使用介绍 ... -
Struts2教程 - 5.4.6-7push、set标签使用介绍
2012-04-16 21:23 1233技术要点 本节代码具体介绍 push ... -
Struts2教程 - 5.4.5 include标签使用介绍
2012-04-16 21:23 1239技术要点 本节代码具体介绍 inclu ... -
Struts2教程 - 5.4.4 debug标签使用介绍
2012-04-17 23:46 1045技术要点 本节代码具体介绍 debug ... -
Struts2教程 - 5.4.3 date标签使用介绍
2012-04-17 23:46 1157技术要点 本节代码具体介绍 date ... -
Struts2教程 - 5.4.2 bean标签使用介绍
2012-04-15 22:57 872技术要点 本节代码具体介绍 bean ... -
Struts2教程 - 5.4.1 action标签使用介绍
2012-04-15 22:57 1161技术要点 本节代码具体介绍 actio ... -
Struts2教程 - 5.3.7 subset标签使用介绍
2012-04-15 22:57 12175.3.7 subset 标签使用介绍 ... -
Struts2教程 - 5.3.5-6 merge、sort标签使用介绍
2012-04-15 22:57 10815.3.5 merge 标签使用介绍 ... -
Struts2教程 - 5.3.4 iterator标签使用介绍
2012-04-14 21:14 1110技术要点 本节代码具体介绍 itera ... -
Struts2教程 - 5.3.3 if、else、elseif标签使用介绍
2012-04-14 21:14 1335技术要点 本节代码具体介绍 if 、 ...
相关推荐
maven-struts-plugin-1.3.jar
struts-1.3.part2 struts-1.3.part2
标题中的"commons-pool-1.3.jar"和"commons-collections-3.2.1.jar"是两个Java库,它们在开发基于SSH(Struts、Spring、Hibernate)架构的应用时常常被用到。SSH是一种流行的企业级Java应用框架,用于构建高性能、可...
struts-1.3.part1 struts-1.3.part1
这个jar包,无法通过maven的pom.xml自动挂载下载,因为现在公共库中不存在,所以你需要手动下载到自己的工程中
标题中的"commons-pool-1.3.jar"是Apache Commons Pool库的一个版本,它是Java中一个用于对象池化的开源库。对象池化是一种资源管理技术,通过预先创建并维护一个对象集合来避免频繁的创建和销毁对象,从而提高性能...
struts2-bean-validation-plugin-2.5.2.jar, struts2-cdi-plugin-2.5.2.jar, struts2-config-browser-plugin-2.5.2.jar, struts2-convention-plugin-2.5.2.jar, struts2-core-2.5.2.jar, struts2-dwr-plugin-2.5.2....
1. 数据库连接池的创建和管理:DBCP能够初始化一定数量的数据库连接,并将这些连接存储在一个池中,供应用程序按需使用。 2. 连接验证:在分配给应用程序之前,DBCP会验证数据库连接的有效性,确保不会将无效的连接...
总结来说,"webapp_nb.w1-jfw1.0.4-struts1.2.9-axis1.3.zip" 包含了一个基于Java的Web应用程序,使用了特定的框架JFW 1.0.4、Struts 1.2.9以及Web服务处理库Axis 1.3。这个压缩包的使用者可能是为了部署或研究一个...
2.5.10.jar,struts2-cdi-plugin-2.5.10.jar,struts2-config-browser-plugin-2.5.10.jar,struts2-convention-plugin-2.5.10.jar,struts2-core-2.5.10.jar,struts2-dwr-plugin-2.5.10.jar,struts2-embeddedjsp-plugin-...
struts2-struts1-plugin-2.3.30.jar, struts2-testng-plugin-2.3.30.jar, struts2-tiles-plugin-2.3.30.jar, struts2-tiles3-plugin-2.3.30.jar, tiles-api-2.2.2.jar, tiles-compat-3.0.1.jar, tiles-core-2.2.2....
这三者组合在一起,可能表示一个使用Struts 1.x作为Web框架,并且依赖Apache Commons DBCP进行数据库连接池管理,以及Apache Commons Pool进行通用对象池化的项目。然而,由于版本较旧,这些组件可能存在安全漏洞和...
Struts 1.3.8 是 Apache ...对于新的项目,推荐使用更新的框架如 Struts 2 或者 Spring Boot 等现代框架。尽管如此,对于维护旧项目或者学习历史框架的开发者来说,理解 Struts 1.3.8 的工作原理仍然是非常有价值的。
本人的此jar合集只能保证SSH2的基础环境,至于更复杂的功能,可能此集合已经包含,或者您可以从您下载的Spring或者hibernate或者struts中寻找您需要的jar包,按要求添加即可。 【因本人能力有限,不能保证此jar集合...
2. **Action类**:在Struts1.3中,Action类是处理用户请求的核心,它实现了Action接口,负责接收请求、处理业务逻辑,并通过ActionForward来决定下一步的跳转。 3. **配置文件**:Struts1.3的配置主要在struts-...
velocity-tools-1.3.jar
- Struts2框架中,`CommonsFileUploadInterceptor`拦截器会将解析后的`FileItem`转换为`MultipartFile`对象,这是Struts2特有的一种包装类型,方便与Action类的属性绑定。 5. **异常处理**: - 在处理文件上传...
Struts1.3的全部架包,非常全,包含:struts-core-1.3.10.jar,struts-tiles-1.3.10.jar,struts-taglib-1.3.10.jar,struts-faces-1.3.10.jar,struts-extras-1.3.10.jar........
对象池设计的核心理念是减少创建和销毁对象的开销,通过预先创建一定数量的对象并保持在池中,供应用程序重复使用,从而提高系统效率。在Java环境中,例如数据库连接池,它被用来管理数据库连接对象,避免频繁的创建...
这个"struts1.3.jar"文件是Struts 1.3版本的核心库,它集成了框架的各种组件,使得开发者能够构建基于Model-View-Controller (MVC)设计模式的Web应用。以下是关于Struts 1.3框架及其核心库的一些关键知识点: 1. **...