xwb 2010-09-05
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、文件的上传和下载