共同点
- 它们都是表现层框架,都是基于MVC模型编写的。它们的底层都离不开原始servletAPI。
- 它们处理请求的机制都是一个核心控制器。
区别
- Spring MVC的入口是Servlet,而Struts2的入口是Filter
- Spring MVC 是基于方法设计的,而Struts2是基于类。因此,Struts2每次执行都会创建一个动作类。所以Spring MVC会稍微比Struts2快些。
- Spring MVC使用更加简洁,同时还支持JSR303,处理ajax的请求更方便( JSR303是一套JavaBean 参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在我们JavaBean的属性上面,就可以在需要校验的时候进行校验了。)
- Struts2的OGNL表达式使页面的开发效率相比 Spring MVC更高些,但执行效率并没有比JSTL提升,尤其是Struts2的表单标签,远没有html执行效率高。
- Spring MVC框架采用松耦合可插拔的组件结构,具有高度可配置性,比其他MVC框架更具有扩展性和灵活性。
- Spring MVC本身就是Spring框架的一部分,与Spring框架的整合可以说是无缝集成,如果使用Struts2还需要自己配置内容。