Struts总结

来源:互联网 发布:天猫淘宝网商城首页 编辑:程序博客网 时间:2024/06/11 08:51

Struts是一个经典的MVC框架。本文简单总结一下Struts的产生、核心内容、以及它的优缺点。

 

Struts的产生

Java应用开发的世界里,随着JSP 与Servlet 技术大量应用于以Web为基础的应用程序,java开发人员群体认为应以较佳的模式以提升Web应用程序的可维护性与重复使用性。于是乎产生了两种JSP 应用架构,分别为Model1 与Model 2。

 

在Model 1 架构中,JSP 直接处理Web浏览器送来的请求,并以JavaBean 处理应用相关逻辑。Model 1架构单纯编写比较容易,但在Model 1 中JSP同时肩负着View 与Controller两种角色,这就导致两类程序代码混杂而不易维护。而Model 2 中使用Servlet扮演前端Controller角色,将Web浏览器送出的请求集中送至Servlet ,Servlet集中处理各种前端请求,然后再根据具体情况转向给对应的JSP 处理。

 

Model 2中采用了较佳的MVC 模式,使得代码层次更加清晰,但是,它增加了代码编写的复杂度。比如:它需要配置大量的servlet,重复编写好多代码不说,还使得配置文件比较杂乱,给调试、维护等工作添加了额外的任务量。而人性本是懒惰(懒惰也是创新的原动力),凡是可以用计算机解决的问题,人们都不想手动解决。于是乎,在这种需求之下,经典的Structs框架产生了。

 

Struts的优点

1、Struts是开源软件,使开发者能更深入的了解其内部实现机制。

2、Taglib是Struts的标记库,灵活运用,能大大提高开发效率。

3Struts最为突出的页面导航功能,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。

 

Struts的几个核心对象

ActionServlet

ActionServlet被称为中央控制器,Struts的核心流程都位于此类中,它是由Struts本身实现的,我们无需管理,直接使用即可。

 

它的大概流程是对URL进行截取,读取struts-config中的配置信息,根据截取的URL找到对应的ActionFormAction,将表单的数据存放在actionForm中,并将此actionForm传到action中进行处理,最后根据action的处理结果,转到相应的界面。

 

ActionForm

ActionForm对象是对页面数据的封装。它取得表单的数据,然后根据actionForm中的数据类型,将数据转化成对应的数据类型,方便action的使用。

 

Action

Action是业务层控制器了,主要任务是数据的获取、Model的调用、转向。数据获取方面,它可以从ActionForm中直接取得数据,也可以可以通过request进行获取。Model调用方面与其它类没有任何区别。转向方面,可以通过ActionMapping获取合适的ActionForward类,也可以自己手动创建一个ActionForward类。

特别注意的是:Action存在线程安全问题。

 

ActionForward

ActionForward继承ForwardConfig,封装了转向信息。

 

ActionMapping

封装了Action的配置信息,每一个Action对应一个ActionMapping,struts-config配置文件中的action标签下的信息都可以通过ActionMapping获得。

 

DispatchAction

DispatchAction本质也是一个Action,它的出现,解决了Action类比较多的缺陷。它将原先分布在不同类中的行为以方法的形式封装到了一个类中,而用配置action时的parameter属性,来决定传来的请求具体执行哪个方法。

 

Struts的缺点: 

1、它太过于依赖web容器,当配置文件改动一次就要重新启动

2、Struts的Action必需是thread-safe方式,它仅仅允许一个实例去处理所有的请求。所以action用到的所有的资源都必需统一同步,这个就引起了线程安全的问题。 

3、测试不方便.

4、代码严重依赖于Struts 1,属于侵入式设计

………………

 

 

当然,任何一种技术都不可能是完美的,我们要做的是,深入了解它们的不足之处,在可以容忍的前提下,充分发挥它们的优势。

原创粉丝点击