Apache Struts 2 和 SpringMVC,这两个是当今最流行和最受关注的 Java Web 框架。你们中的许多人可能都使用过这两种框架,但哪个更好用呢?这两个框架之间的基本区别是什么? Apache Struts 2 是一个优雅且可扩展的框架,用于创建企业级 Java Web 应用程序。它旨在简化从应用程序的构建到部署和维护的开发周期。在 Struts 中,处理请求并将其路由以进行进一步处理的对象称为“动作”。另一方面,Spring MVC 是包含其他 Spring 模块的庞大 Spring 框架堆栈的一部分。这意味着它不允许开发人员在没有 Spring 的情况下运行它,但是开发人员可以在没有 Spring MVC 的情况下运行 Spring Core。 Spring MVC(模型视图控制器)是围绕 DispatcherServlet 设计的,它通过可配置的处理程序映射、视图解析和主题解析将请求分派给处理程序。虽然在 Struts 中负责处理请求和路由处理的对象称为 Action,但在 Spring Web MVC 框架中,同一对象称为 Controller。这是 Spring MVC 和 Struts2 之间最初的区别之一。每次发出请求时都会启动 Struts 2 操作,而在 Spring MVC 中,控制器仅创建一次,存储在内存中并在所有请求之间共享。因此,Spring Web MVC 框架在处理请求方面远比 Struts 2 高效。
如果我们谈论功能,Struts 2 和 Spring MVC 框架迎合了不同级别的业务需求。让我们看一下这两个框架提供的功能。
支柱 2 的特点
- 可配置的 MVC 组件,存储在 struts.xml 文件中。如果您想更改任何内容,可以在 xml 文件中轻松完成。
- 基于 POJO 的操作。 Struts 2 action类是Plain Old Java Object,它阻止开发者实现任何接口或继承任何类。
- 支持Ajax,用于发出异步请求。它只发送需要的字段数据,而不是提供不必要的信息,最终提高了性能。
- 支持与 Hibernate、Spring、Tiles 等集成。
- 无论您想使用 JSP、freemarker、velocity 还是其他任何东西,您都可以在 Struts 2 中使用不同种类的结果类型。
- 您还可以利用各种标签,如 UI 标签、数据标签、控制标签等。
- 为主题和模板提供充足的支持。 Struts 2 支持三种不同类型的主题,包括 xhtml、simple 和 css_xhtml。
另一方面,Spring MVC 框架带来了完全不同的特性集。
Spring MVC 特性
- 角色划分清晰明了。无论是控制器、命令对象、表单对象还是其他任何东西,都可以借助专门的对象轻松实现。
- 在控制器方法签名的帮助下,利用适应性、非侵入性和灵活性。
- 现在使用现有的业务对象作为命令或表单对象,而不是复制它们来扩展特定的框架基类。
- 可定制的绑定和验证将支持手动解析和转换为业务对象,而不是使用传统的字符串。
- 灵活的模式转换可轻松与最新技术集成。
- 可自定义的语言环境和主题解析,支持带有或不带有 JSTL 的 Spring 标记库的 JSP 等等。
- 利用称为 Spring 标记库的简单但功能强大的 JSP 标记库。它提供对数据绑定和主题等各种功能的支持。
当然,Struts 是最强大的 Java 应用程序框架之一,可以用于各种 Java 应用程序。它为 POJO 带来了包括企业级服务在内的一系列服务。另一方面,Spring利用依赖注入来实现简化和增强可测试性。
这两个框架都有各自的优缺点。
Struts 框架带来了许多好处,包括:
- 简化设计
- 易于使用插件
- 简化的 ActionForm 和注释
- 更好的标签功能
- OGNL 集成
- AJAX 支持
- 多个视图选项等
然而,Struts 2 框架的唯一缺点是它存在兼容性问题和糟糕的文档。
另一方面,Spring MVC 提供了以下好处:
- 控制器、JavaBeans 模型和视图之间的清晰分离,这在 Struts 中是不可能的。
- 与 Struts 相比,Spring MVC 更加灵活。
- Spring 可以与不同的平台一起使用,例如 Velocity、XLST 或各种其他视图技术。
- Spring 中没有像 ActionForm 那样的东西,而是直接绑定到域对象。
- 与 Struts 相比,代码也更易于测试。
- 它是一个完整的 J2EE 框架,由七个独立的层组成,简化了与其他框架的集成。
- 它不提供用于实现业务域和逻辑的框架,这有助于开发人员为应用程序创建控制器和视图。
然而,与任何其他技术或平台一样,Spring MVC 也受到一些与 Spring 框架的复杂性相关的批评。
最终判决
这两种框架都是不错的选择。但是,如果您正在寻找稳定的框架,Struts 2 是您的正确选择。另一方面,如果您正在寻找健壮的东西,那么 SpringMVC 是完美的。确保在选择框架之前查看您的确切要求!