Struts 2总结

Struts2总结

一、概述

Struts2整合了两个优秀的MVC框架:传统的Struts和WebWork。不管是Struts还是WebWork,都是MVC框架领域大名鼎鼎的成熟框架,这保证了Struts2作为实际开发框架的成熟性,Struts2保留了Struts1的简单易用性,并且充分利用了WebWork的拦截器机制(其实就是AOP思想),将Struts2发展成一个具有高度可扩展性的框架。

1、模式1与模式2

对于非常小型的Web站点,如果后期的更新、维护工作不是特别大,可以使用Model1的模式来开发应用,而不是使用Model2的模式。虽然Model2提供了更好的可扩展性及可维护性,但增加了前期开发成本。

2、MVC思想

MVC并不是Java语言所特有的设计思想,也并不是Web应用所特有的思想,它是所有面向对象程序设计语言都应该遵守的规范。MVC思想将一个应用分成三个基本部分:Model(模型)、View(视图)和Controller(控制器),这三个部分以最少的耦合协同工作,从而提高应用的可扩展性及可维护性。

3、其它常用的MVC框架

(1).JSF

准确地说,JSF是一个标准,而不是一个产品。

(2).Tapestry

Tapestry并不是一种单纯的MVC框架,它更像MVC框架和模板技术的结合,它不仅包含了前端的MVC框架,还包含了一种视图层的模板技术,使用Tapestry完全可以与Servlet/JSPAPI分离,是一种非常优秀的设计。

Tapestry实现了视图逻辑和业务逻辑的彻底分离。

Tapestry使用组件库替代了标签库,Tapsetry是完全组件化的框架。

Tapestry具有很高的代码复用性,对于对页面要求灵活度相当高的系统,Tapestry是第一选择。

(3).SpringMVC

Spring提供了一个细致完整的MVC框架。该框架为模型、视图、控制器之间提供了一个非常清晰的划分,各部分耦合极低。Spring的MVC是非常灵活的,它完全基于接口编程,真正实现了视图无关。视图不再强制要求使用JSP,可以使用Velocity、XSLT或其他视图技术。甚至可以使用自定义的视图机制——只需要简单地实现View接口,并且把对应视图技术集成进来。Spring的Controllers由IoC容器管理。因此,单元测试更加方便。

二、Struts2框架的大致处理流程如下:

浏览器发送请求,例如请求/mypage.action、/reports/myreport.pdf等。

核心控制器FilterDispatcher根据请求决定调用合适的Action。

WebWork的拦截器链自动对请求应用通用功能,例如workflow、validation或文件上传等功能。

回调Action的execute方法,该execute方法先获取用户请求参数,然后执行某种数据库操作,既可以是将数据保存到数据库,也可以从数据库中检索信息。实际上,因为Action只是一个控制器,它会调用业务逻辑组件来处理用户的请求。

Action的execute方法处理结果信息将被输出到浏览器中,可以是HTML页面、图像,也可以是PDF文档或者其他文档。此时支持的视图技术非常多,既支持JSP,也支持Velocity、FreeMarker等模板技术。

Struts2的基本流程

Struts2框架由3个部分组成:核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件。在这3个部分里,Struts2框架提供了核心控制器FilterDispatcher,而用户需要实现业务控制器和业务逻辑组件。

核心控制器:FilterDispatcher。(用户实现的Action类仅仅是Struts2的Action代理的代理目标。)

业务控制器:业务控制器组件就是用户实现Action类的实例,Action类里通常包含了一个execute方法,该方法返回一个字符串——该字符串就是一个逻辑视图名,当业务控制器处理完用户请求后,根据处理结果不同,execute方法返回不同字符串——每个字符串对应一个视图名。Struts2的模型组件:实际上,模型组件已经超出了MVC框架的覆盖范围。对于Struts2框架而言,通常没有为模型组件的实现提供太多的帮助。

Struts2的视图组件

Struts2已经改变了Struts1只能使用JSP作为视图技术的现状,Struts2允许使用其他的模板技术,如FreeMarker、Velocity作为视图技术。

三、Struts2精髓部分

1、Struts2的配置文件有两份:

—配置Action的struts.xml文件。—配置Struts2全局属性的struts.properties文件。

2、Struts2的标签库也是Struts2的重要组成部分。通过使用Struts2的标签,开发者可以最大限度地减少页面代码的书写。

3、Struts2的控制器组件是Struts2框架的核心,事实上,所有MVC框架都是以控制器组件为核心的。正如前面提到的,Struts2的控制器由两个部分组成:FilterDispatcher和业务控制器Action。

4、完成程序国际化

定义国际化资源文件

加载资源文件:struts.custom.i18n.resources=messageResource

输出国际化信息

5、增加数据校验

继承ActionSupport

使用Struts2的校验框架

6、Struts2的类型转换

7、Struts2的拦截器

8、文件的上传和下载

相关推荐