struts2详细起源

自从1997年第一个Servlet规范发布以来,我们在用Java开发Web应用这条路上已经走了很远很远。在过去的时间里,我们学会了很多,也曾经不止一次地对开发Web应用的方式做出过改进。Apache Struts的产生就是一个伟大的跨越,它的价值远远超过了我们目光所能及的极限。
Apache Struts在2000年5月由Craig McClanahan发起,并于2001年7月发布了1.0版本。从技术的角度上来讲,它是在开发Web程序上的一次跨越性的进步,但更重要的是,它在最恰当的时候出现在了人们的眼前。
到那时为止,Web开发已经度过了漫长的岁月,很多大型项目都已经完工进入了维护期,在这个过程中,代码的可重用性与可维护性也给开发人员好好的上了几课。.com的兴起也引发了对Web应用开发更好的解决方案的诉求——当Apache Struts在2000年出现的时候,Web项目的数量仍然显著地增长着,而且毫无终止之势。Struts一出现便大受欢迎,更成为了以后几年内web开发的实际标准。
Struts2是Struts的下一代产品。而最初提案Struts Ti所设想的发展方向,在Struts的现有代码的基础上是很难完成的。在发起提案的时候,Patrick Lightbody把多个不同的Web框架的领导者邀请到了一起,希望大家能够达成共识,协力完成一个通用框架。虽然最终由于各种原因,Patrick Lightbody的愿望未能实现,但是WebWork和Struts Ti却发现了二者在技术与开发人员这两个层面上的共同之处,不久之后,两个项目就在WebWork的技术基础上进行了合并2。
当我们说起WebWork的时候,我们实际上说的是两个项目——XWork和WebWork。XWork是一个通用的命令框架,它提供了很多核心的功能,例如actions,验证和拦截器,它可以完全独立于执行上下文运行,并提供了一个内部的依赖注入机制,用来做配置和工厂实现的管理。
而WebWork则是一个完全独立的上下文。它用Web应用中运行所需的上下文把XWork包装起来,并提供了可以简化Web开发的特定实现。
Struts2的目标很简单——使Web开发变得更加容易。为了达成这一目标,Struts2中提供了很多新特性,比如智能的默认设置、annotation的使用以及“惯例重于配置”原则的应用,而这一切都大大减少了XML配置。Struts2中的Action都是POJO,这一方面增强了Action本身的可测试性,另一方面也减小了框架内部的耦合度,而HTML表单中的输入项都被转换成了恰当的类型以供action使用。开发人员还可以通过拦截器(可以自定义拦截器或者使用Struts2提供的拦截器)来对请求进行预处理和后处理,这样一来,处理请求就变得更加模块化,从而进一步减小耦合度。模块化是一个通用的主题——可以通过插件机制来对框架进行扩展;开发人员可以使用自定义的实现来替换掉框架的关键类,从而获得框架本身所不具备的功能;可以用标签来渲染多种主题(包括自定义的主题);Action执行完毕以后,可以有多种结果类型——包括渲染JSP页面,Velocity和Freemarker模板,但并不仅限于这些。最后,依赖注入也成了Struts2王国中的一等公民,这项功能是通过Spring框架的插件和Plexus共同提供的,与PicoContainer的结合工作还正在进行中。
本书的目的,是为了帮助读者掌握Struts2框架,并能够对组成框架的功能部件和可用的配置项有深刻的理解。我在书中还将介绍一些可以提高生产力的方法——包括默认配置项和应当注意的实现特性,可用的多种配置选项和一些开发技术。

 

你可能感兴趣的:(struts2)