iLeichun

当前位置: 首页 > Struts

Struts中的MVC

分类:Struts   来源:网络   时间:2010-08-22 12:37:18

大家都知道,Struts是基于MVC模式的Web应用框架。Struts的优点之一就是将Web应用分成控制,模型和视图。模型中仅包含业务逻辑,视图中仅包含了显示逻辑。当我经过3次基于Struts开发web应用之后,对这一点有了一点感性的认识。

一、模型与视图的独立
  所谓模型与视图的独立。实际上,就是要求我们在开发过程中,应该将模型组件和与视图有关的组件(一般是一些javabean)放在两个不同的包里。并且这两个包应该相互之间没有任何依赖关系。具体地讲就是这两个包相互都不能有导入。在视图组件这个包中除了包含javabean(通常用作DTO使用,将数据传向jsp),还应该包含一些键值的常量。因为DTO都是要存放在request范围里的,需要定义一些键值。由于这些键值是与视图密切相关的,所以不能够到处乱放,而是一定要放在视图组件包内。而模型组件包在开发过程中,你要完全抛开Struts和jsp,就当这些完全不存在,这样开发出来的模型组件即使将来换一个界面(例如:Swing)时,就可以很容易的重用。

二、控制的独立
  首先,控制部分是由Struts软件提供的。Struts软件当然无法与你开发的视图和模型有依赖关系,因为Struts在开发的时候,你的模型和视图还没有开发出来呢。Strutst提供了Action这个父类,相当于提供了一个接口,所有具体的执行细节都由Action扩展类来实现。这样Struts框架将控制和控制的内容进行类分离,保证了控制与控制的内容(模型和视图)的独立性。 当然,你在开发模型和视图部分时也不要依赖控制部分,即,不要在你的软件包中导入org.apache.struts包及其子包中的类。只有这样才能真正保持MVC之间的独立性。

三、扩展Action类
  前两点主要都在谈独立性。但是,一旦讲到扩展Action类,可以说所有的依赖关系都发生在这里。大家都知道,Action扩展类,负责调用模型和选择视图,那么当你在开发这些Action扩展类的时候,就需要导入模型组件包和视图组件包。也有是说Action依赖模型和视图。由于Action扩展类还有继承Action自类。Action类是控制的一部分,因为它位于org.apache.struts.action包中。所以Action扩展类还依赖控制组件。这样看来,Action扩展类仿佛是Struts这个框架中胶水,它依赖模型、视图和控制部分的组件,MVC这三个部分都是通过它来紧密联系在一起的。

四、总结
  Struts框架强调MVC的独立,所以在开发时,视图组件、模型组件最好放在一个单独的包中,Action扩展类也放在一个单独的包里。Struts软件包、模型组件包和视图组件包应该相互隔离,彼此没有导入关系。而Action扩展类却依赖所有这三者。Action扩展类仿佛是胶水将MVC联系到了一起。

 

更多