Struts2 刚开始是 Jakarta 项目的子项目,后来转到了 Apache 软件基金会下的一个开源子项目。
Apache Struts 2 是一个基于 MVC 设计模式的、简洁的、可扩展的、成熟的 web 应用程序框架
在 mvc 模式之前,代码和业务都写在 jsp 文件中,非常臃肿,没有分离。早期,Sun 公司推出了两种模式:
MVC 是模型视图控制器(Model、View、Controller),一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
MVC 业务流程:
MVC 的核心思想是业务数据抽取同业务数据呈现相分离。程序分层,分工合作,既互相独立,又协同工作
Struts2 不是一个全新的框架,是在 WebWork 框架的基础上升级的。因此稳定性、性能等各方面都有很好的保证,同时吸收了 Struts1 和 WebWork 两者的优势。
使用 Struts2 的目的是为了从构建、部署、到应用程序维护方面来简化整个开发周期。
Apache Struts 官方网站
Struts 历史版本
优点
缺点:
框架机制
SpringMVC 和 struts2 的加载机制不同:SpringMVC 的入口是 servlet,而 struts2 是 filter。
拦截机制
性能方面
SpringMVC 实现了零配置,由于 SpringMVC 基于方法的拦截,有加载一次单例模式 bean 注入。而 Struts2 是类级别的拦截,每次请求对应实例一个新的 Action,需要加载所有的属性值注入,所以,SpringMVC 开发效率和性能高于 Struts2。
拦截机制
Struts2 有自己的拦截 Interceptor 机制,SpringMVC这是用的是独立的 AOP 方式,这样导致 Struts2 的配置文件量还是比 SpringMVC 大。
配置方面
SpringMVC 和 Spring 是无缝的。从这个项目的管理和安全上也比 Struts2 高(当然 Struts2 也可以通过不同的目录结构和相关配置做到 SpringMVC 一样的效果,但是需要 xml 配置的地方不少)。
SpringMVC 可以认为已经 100% 零配置。
设计思想
Struts2 更加符合 OOP 的编程思想, SpringMVC 就比较谨慎,在 servlet 上扩展。
集成方面
SpringMVC 集成了 Ajax,使用非常方便,只需一个注解 @ResponseBody 就可以实现,然后直接返回响应文本即可,而 Struts2 拦截器集成了 Ajax,在 Action 中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便。
Amboo 技术价值在于普惠 - Springmvc与Struts区别?
原文:https://www.cnblogs.com/dins/p/struts.html