Struts2教程 - 1.1 Struts历史发展过程

Struts 这个名字来源于在建筑和滑翔机中用来支持的金属架 。以笔者的理解, Struts 的开发者大概是希望用该框架来支持 JSPServletJava 这些技术在 Web 项目中的使用。

2001 年春天, Struts 的第一个版本在 apache 网站上发布的时候。它只提供了一种分离视图和业务应用逻辑的 Web 应用方案。因为在 Struts 之前,开发人员都是在 JSP 里写入处理业务逻辑的 Java 代码,尤其是涉及到数据库和页面 Form 表单数据之间交互的时候,开发人员在每个页面都要写入像连接数据库这样的 Java 代码,导致了大量的代码冗余,而且每个页面显示速度和性能都不是很好,这是因为页面中的存储数据的 Java 对象都需要从内存中读取,势必影响性能。所以当像 Struts 这种 Web 应用方案一出现,每个开发人员都把它视为把自己从繁重的开发工作中解放出来的利器。所以在 2001-2003 这几年,大量的为企业做 Web 应用系统的 IT 公司在项目架构中都采取 Struts 作为开发中必须使用的框架。

从市场推广的角度来看, Struts 也是一个创建知名品牌的案例。由于它的闻名遐迩,很多开发人员熟悉 Struts 的应用,一批批成功应用 StrutsWeb 项目如雨后春笋般的显现,这样就算是入门者也可以依据前人的优秀经验应用 Struts 去实现更多的 Web 项目。随着使用它作为项目开发框架的公司和人员越来越多。作为公司的领导层可以让实际开发人员把注意力更加着重放在行业知识,业务领域的研究实现工作上。技术作为实现项目的障碍这种认识已经荡然无存。

Struts 刚出现的时候,其实在它之前使用 j2ee 开发的 Web 项目都是使用 Model1 的设计模式, Model1 模式有大致三种常用的开发方式,比如之前所述的将 Java 代码写在 JSP 中,就是第一种常见的方式。还有一种就是将部分业务逻辑实现代码封装成为 JavaBean ,在 JSP 中调用这些 JavaBean 。此种方式解决之前所述冗余代码的问题,而且从内存中只读取一次封装了数据的 Java 对象,没必要频繁的读取 Java 对象。它是 Model1 模式的典型结构,如图 1.1 所示。第三种就是将 Java 中已经是标准的内置对象在 JSP 中调用。比如 J2EEJDBCJSP 中直接使用 JDBC 的标准类和方法。实际上和第二种方式是类似的,只不过第二种方式中调用的是开发者自己开发的,而第三种方式调用的是 Java 的标准类和方法。 Model1 模式对于中小项目的开发的确还是很有优势的,据笔者所知有些企业为了避免开发带来的风险,而且这些企业的相关环境决定使用其它模式没有这么迫切,因此还在使用这种模式在开发自己的企业应用。但是它的缺点太明显了,首先如果企业级应用需要改动原有需求或者新增需求,那势必需要改动很多代码,开发工作量会很大。其次就是业务逻辑代码和使用视图来表示页面的代码是在 JSP 中混合的,如果某个 JSP 页面需要重用的话,那是根本无法实现的。因为业务逻辑在每个页面肯定不同的,怎么能用一个 JSP 中的业务逻辑套用到另外一个 JSP 页面中呢?


1.1  Model1 模式结构


基于这些原因,在开发者中有人提出了 Model2 模式,这种模式保留了 Model1 的优点,又针对它的缺点进行了修正和改良。 Model2 模式基础概念是组件化,它的设计者在最初的设想是开发 Web 项目时候,如果需要实现某个业务逻辑将封装好的组件进行调用,而开发者不需要关心该组件内部是如何实现的。这就好比购买了一台电脑,直接开机使用就可以,没必要关心电脑内部是如何组成的,内部又是怎样实现让用户使用电脑功能这些细节化的东西。该模式采用业务逻辑、视图分离的方法,让 JSP 之负责展现表示功能,相应的业务逻辑由 Java 来实现,这样当开发新的需求或者修改原有需求时候没必要在 JSP 中更改。而且 JSP 也可以被复用。具体结构如图 1.2 所示。

1.2  Model2 模式结构

在有些时候,开发者也把 Model2 模式称为“ MVC ”模式。“ MVC ”是 ModelViewController 这三个英文单词的缩写。“ Model ”代表的业务逻辑这块由 Java 实现的组件。“ View ”则代表了表示界面,当时主要是使用 JSP 技术来实现,而现在还有笔者之前提到的 FreeMarkerVelocity 这些实现表示界面的视图技术。“ Controller ”代表的是处理流程控制,主要功能是实现业务逻辑如何和表示界面相关联的技术。为了方便笔者的写作,也为了让读者不引起歧义,以后章节中都将 Model2 模式称为 MVC 模式。

由于 MVC 模式的提出,彻底解决了 Model1 模式的缺点,很多开发人员开始使用这种模式来解决他们实际工作中碰到的各种各样 Web 项目开发问题。也正是在这样一个大背景下,诞生了 Struts 这个第一个运用了 MVC 模式,也是使用其的开发人员全世界最多的 Web 项目开发框架。

当然从 2003 年开始,同类型的 Web 项目开发框架也开始出现在广大开发者的视野中,由于 Struts 对新技术的支持不够,还有一些如 FormBean 一些 Struts 技术细节是否有必要实现的争论也让开发者开始质疑 Struts 的优越性。

Struts 的设计者也意识到 Struts 的一些局限性和缺点,必须进行重新设计和改良。因此在 2006 年和 WebWork 的设计者一起将这两个框架合并在一起,形成了今天的 Struts2 框架,这个框架是综合了原有两个旧框架的特点。而又去除了很多它们的缺点,特别是 Struts 的一些缺点,比如支持的视图技术太单一只支持 JSP ,还有和 Servlet 关系太紧密,不适合现在的松耦合开发理念等等。

Struts2 框架实际上也可以称为 WebWork 的一个最新版本,它的 MVC 模式实现的方法更多是来自于 WebWork 而不是 StrutsStruts 框架其实还发展了另外一个分支框架 Shale ,这个框架的设计思想更多是来自于 JSF ,只不过通过 Struts 的基础配置和代码来实现,由于 JSFStrutsWebWork 的开发理念有很大的区别, JSF 可以称为 Web 化的 Swing 。让桌面应用程序开发结构在 Web 浏览器中实现出来。固然这点对现在的开发人员也很有吸引力,但是笔者认为还是有些不能和 StrutsWebWork 相比的弱点(在后面的小节中将详细叙述)。所以对于 Struts 的演变笔者更认为 Struts2 才是最正统的继承。而 Shale 则只能算作一个比较好的补充而已。

在下一节,笔者将详细概述 Struts2 的特点及其笔者认为需要改进的部分。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值