现在使用springMVC的企业是比较多的。明明都是控制层的框架,struts2在springMVC前边,为啥springMVC现在如此受欢迎呢。
下边我从两者的差异,讲一下为啥用springMVC而不用struts2了。
参考文章:springMVC 与 struts2 最大的区别
# # 第一点不得不提的是两者的实现机制,springMVC使用 servlet,而struts2使用 Filter。
至于servlet 和 filter 的区别又是什么,参考文章:
https://blog.csdn.net/weixin_42669555/article/details/81049423
在这个层面上不能说谁优谁劣,从设计者的角度出发,他们都觉得自己的实现是最棒的。
# # 第二点说一下拦截机制
springMVC是对方法的拦截,struts2是对类的拦截。显然springMVC是更加细颗粒的拦截。
springMVC拦截的每一个方法共享一个request和response。每个方法是独立的。
struts2 是对整个类的拦截,每个请求都要创建一个action,和spring整合以后,action交给 spring去管理。action是多例的,否则值栈,作用域就会很乱。
# # 性能方面
SpringMVC实现了零配置,由于SpringMVC基于方法的拦截,有加载一次单例模式bean注入。而Struts2是类级别的拦截,每次请求对应实例一个新的Action,需要加载所有的属性值注入,所以,SpringMVC开发效率和性能高于Struts2。
# # 使用方面
框架是软件的半成品,是别人封装好的底层,也就是说,实现功能不再使用底层去写了。别人给我们提供了框架。那么想要使用框架,就肯定要遵守使用的规则,就像想要在路上开车,就要遵守交通规则一样,否则就不能在路上跑。
配置就是我们使用框架的 “交通规则 ” 。
springMVC能和spring 无缝整合,特别是在使用注解开发了以后,配置文件非常的少。至少相比struts2的配置文件要少的多。
# # 集成方面
springMVC集成了ajax,使用一个标签 @ResponseBody 这个注解,开启注解扫描就可以使用了,相当方便,如果开发使用注解开发的话,并不需要专门的开启注解扫描。
而struts2 想要使用ajax 就需要装插件了。