1、 译文 Apache Struts 2 “Apache Struts 2 is an elegant, extensible framework for creating enterprise-ready Java web applications. The framework is designed to streamline the full development cycle, from building, to deploying, to maintaining applications over time” -The Apache Software Foundation. 4.1 简
2、介 Struts是 Apache的一个应用于 Java Web的网络编程的开源框架。 Struts框架的创造者和发起者是 McClanahan。后来在 2002年, Struts框架由 Apache软件基金会收购和接管。 Struts提供给程序员一个易于组织基于 JSP和 Servlet的 HTML格式和 Java代码的框架。 Struts1几乎能与所有标准的 Java技术和 Jakarta配置包协同工作。然而 ,随着需求的不断增长, Struts1在网络应用程序暴露出来许多问题 ,所以为了满足需求,导致 Strut2推出 ,Strut2能更好地为开发者提供服务 ,如 Ajax、高效开发和可扩
3、展性。 4.1.1 Struts 2 的起源 自从 2000年 Apache Struts的发起 ,Struts框架取得了非常大的成功 ,被大多数标准所接纳 ,得到了很大的发展 ,如果不是这样 ,哪里会有今天 java web程序的成绩。它的历史 ,告诉我们 Struts是怎样组织 JSP和 / Servlets,而提供了固定的框架。 Struts融入 server-generated HTML与 Javascript,客户端验证 ,也使得开发比较容易和维护。随着时间推进的和客户对 web需求扩大 ,网站应用程序取得硕果累累 ,Struts1太老了 , 开始在越来越多的网站前端开发者视野中淡去
4、。 在 2005年的 java技术大会上 ,许多的 truts开发者探讨 Struts未来的出路和建议。他们想要设想一个框架 ,要求它能聚集了许多网络编程的优点。问题是 Struts1代码对 ServletAPI依赖 ,不宜于扩展,特别是缺乏丰富的视图表现特征如 Ajax、高效开发和扩展性。与此同时 ,他们也和其他开发商如 the Spring WebFlow,探讨几个框架统一到一个框架中。然而 ,有一些关项目所有权、品牌、和身份的问题阻碍了进程。幸运的是 ,开发者在 Struts and WebWor两个框架中看到了 “ 合并 ” 的可能性。 在当时, Struts的开发者也正在研发 Sha
5、le框架,由于 Shale是 Struts的子项目,沿着Struts Action 1(现在叫 Struts 1)方向, Struts Action 2(源于 WebWork2)。不幸是 ,在当时这些框架类别非常混乱的。 人们习惯了 “Struts” 这个名字。在融入 Struts Action 2和Shale 成 Struts 2时, Shale的开发者觉得如果在原有的基础上发展那样会更好。于 Struts Action 2 很快就被重新命名为 Struts2。 今天 ,Apache Struts有两个版本的框架 ,但它们都是基于 Action相应的框架。 Struts 2的设计思想和核心来
6、自于 WebWork。 Struts 2从最初版本 ,它具有插件框架 ,新的 API,更好地支持 Ajax标签。 Struts 2在不断发展中。 4.2 Struts 2 特点 4.2.1 MVC 架构 Struts 2继承 Struts1优良特点 ,也是用于开发 web应用程序的一个开放源码的 J2EE框架,使用模型、视图、控制器的设计模式。 MVC的主要是分离与应用数据的业务逻辑与表现的数据。这也是是使用 MVC设计模式的原因。 可重用性 :当遇到一类问题的出现 ,不需要再创建一个新的解决方案 ,只是要遵循的模式。 易于理解 :采用 MVC设计模式 ,让应用程序变得更加可读和理解的。 4.
7、2.1.1 模型 总所周知,模型层负责表现所有的业务数据。模型关心的是应用的请求处理, 模型是专门负责维护数据的 ,它 负责业务数据按照业务规则进行执行对数据的访问和更新操作,模型并不关心持久化数据 操作和数据是如何在用户端展现的。 4.2.1.2视图 视图表达用户所提交的请求。视图依赖于模型。 视图调用模型提供的取值方法查询业务状态 , 但 是它本身并 不依赖于应用的程序的逻辑。 视图层时刻保持与业务逻辑相对应的一致性。换句话说 ,我们可以说它的任务是一旦模式层变化视图也跟着变化调整,而达到与模式层保持一致性。 4.2.1.3 控制器 用户每 发送一个请求总是要经过控制器。控制器是负责监听和
8、接收用户请求 ,并且通过它传递给模型,模型做适当的处理。数据处理完成后 ,控制器负责选择合适的视图展现给用户。在 GUIs应用程序里,视图层和控制器通常是紧密协调工作的。 4.2.2 Struts 2是如何完美运用 MVC模式呢 The Struts 2的控制器 每当用户发来请求时 ,请求都要被 FilterDispatcher处理。当 FilterDispatcher接收该请求 ,它会根据配置文件截获 URL,然后将请求处理给 Action类。 Action类是另外一个控制器 , Action负责与模式层会话。 The Struts 2 的视图 视图负责展现信息给用户与接受用户的输入。我们大
9、多使用 JSP作为视图展现。 ,Struts提供给我们丰富的视图,如自定义用户标签、 java脚本等。 The Struts 2 的模型层 模型层表示 Struts 2应用程序业务逻辑。模型层提供访问数据库的接口或者一些对外接口。模型层通常是一些 java类,里面没有定义针对具体的模型,而是抽象的,这样提搞了代码的重用性。 4.2.3 Struts 2 带来什么 Struts 2集 Struts 和 Web Work2两大框架于一体,通过使用 Web Work2及集成一些插件框架,一些新的 API, AJAX标记等,因此 Struts 2是动态、易扩展框架,对于复杂大型工程,Struts 2能
10、出色的完成从开发、部署到维护。 Struts 2是面向接口编程的,易于扩展。配置基本要求 Servlet API 2.4, JSP API 2.0 , Java 5 以上。 Struts 2框架特点: Architecture:首先, FilterDispatcher拦截 Web浏览器发来的请求和决定调用 Action类;其次,在 Action类 execute()方法执行前后如存储数据和查询数据,大量的拦截器将被调用。最后,处理结果将以 HTML、 PDF、图片等形式返回输出到浏览器。 Tags: Struts 2引用标记,减少了 web程序代码量。 Struts 2中的标记既包括输出数据,
11、也有样式表。这些标签也具有验证和序列化功能。使用标签的 web程序代码,提高程序的可读性和维护性。 MVC: Struts 2中 MVC起到协调者作用。 Struts 2有自己的库和标记标签。 Configuration:Struts 2提供了一种 以 XML格式的 部署描述符来初始化资源 。 初始化工作仅仅通过扫描所有Java包或者使用一个应用程序配置文件来控制整个配置。配置文件的重新加载可以不用重启web容器。 Struts 2框架其他特点: 1. 所有类都是基于接口及核心接口编程,是相对独立于 HTTP。 2. 任何类可作为一个 Action类,可以 JavaBean输入属性,直接关联到 Action类方法。 3. Struts 2易于与 Spring框架集成。 4. AJAX使得应用程序更加灵活。 4.2.4 深入 Struts 2 框架