Struts2框架:动作与模型分离的实践

需积分: 0 0 下载量 95 浏览量 更新于2024-08-17 收藏 1.73MB PPT 举报
"把动作和模型隔开-struts 2应用2" 在企业级应用程序开发中,将动作(Action)和模型(Model)隔离开来是最佳实践之一,尤其是在使用Struts 2这样的MVC框架时。Struts 2是第二代Struts框架,它为开发Web应用程序提供了一种高效且灵活的解决方案,旨在解决传统Web开发中常见的问题,例如页面导航、数据验证、统一布局以及Ajax支持等。 Struts 2的核心特性包括: 1. **页面导航管理**:Struts 2允许开发者定义清晰的导航规则,使得用户请求能够被正确地路由到相应的处理逻辑。 2. **数据验证**:框架内置了数据验证机制,可以方便地对来自用户的输入进行有效性检查,确保数据安全。 3. **统一布局**:通过模板和主题,Struts 2支持创建一致的用户界面,提升用户体验。 4. **可扩展性**:Struts 2采用插件架构,易于扩展,开发者可以根据需要添加自定义功能。 5. **国际化和本地化**:支持多语言,方便创建适应不同地区需求的应用程序。 6. **Ajax支持**:Struts 2可以直接与Ajax技术结合,实现页面部分更新,提升交互性。 7. **防止表单重复提交**:提供了防止用户意外多次提交表单的功能,避免数据重复或错误。 Struts 2相对于Struts 1的主要改进在于其无侵入式设计。传统的Struts 1动作类(Action)与Servlet API和Struts API有紧密耦合,而Struts 2则降低了这种耦合,使得应用可以在不依赖Servlet API的情况下运行。例如,Struts 1中的Action类通常会直接继承`Action`基类,并包含`execute`方法,而在Struts 2中,动作类可以独立于框架,只需要实现`com.opensymphony.xwork2.ActionSupport`接口即可。 Struts 2引入了**拦截器(Interceptor)**,这是其一大亮点。拦截器基于AOP(面向切面编程)理念,可以用于执行诸如日志记录、权限检查、事务管理等通用任务。这使得业务逻辑更加清晰,代码复用性提高。 此外,Struts 2提供了**类型转换器(Type Converter)**,能够自动将请求参数转换为所需的数据类型,减少了手动转换的工作。在Struts 1中,实现类似功能需要深入到框架底层,如注册自定义的`BeanUtils`转换器。 Struts 2还支持多种**视图技术**,如JSP、FreeMarker和Velocity,开发者可以选择最适合项目的模板引擎。 在**输入验证**方面,Struts 2允许针对特定的方法进行验证,不再局限于整个表单,而且提供了全局、包范围和局部范围的国际化资源文件管理,使得验证消息的国际化变得更加便捷。 从Struts 1迁移到Struts 2时,需要注意的是,尽管两者名称相似,但Struts 2实际上是基于WebWork框架构建的,因此升级过程并非简单的扩展,而是需要重新评估和调整架构。Struts 1中的ActionConfig(动作配置)在Struts 2中被ActionMapping替代,而ActionForm在Struts 2中则由ActionSupport和POJO(Plain Old Java Object)模型取代。 总结来说,Struts 2通过其无侵入式设计、拦截器、类型转换器、灵活的视图支持和强化的验证机制,提供了比Struts 1更为强大和现代化的开发体验,使得开发者能够更专注于业务逻辑,而不是框架细节。