SpringMVC和Struts2的区别

在网上看到了这个问题, 突然想起之前没有总结过, 于是回忆了下写了这篇博客.
现在使用Struts2的公司估计是很少了, 除非是一些很久以前的历史遗留项目(很有可能是已经在重构的路上或者准备重构的路上了)
我的第一份工作使用的还是Struts2的框架, 在大概一年以后公司也使用SSM框架代替原有框架了. 现在估计很多公司是直接使用SpringCloud了, 个人感觉SpringCloud虽然好, 但是极个别情景下使用个人感觉有点杀鸡用牛刀, 不同微服务间的通信浪费了很多不必要的资源(采用http协议, 一般会使用JSON报文), 好像偏题了.
Struts2的没落如果没记错的话, 当年的漏洞事件影响较大. 此外SpringMVC的开发要比Struts2顺畅, 和其它框架整合更加便捷等优势也是主要原因

====================================
个人总结区别如下:

  1. SpringMVC的控制是到方法级别的. 而Struts2的控制是在类上的. Struts2的一个类中不同方法是共享一个request上下的, 这也导致难以实现restful api.
  2. SpringMVC的路由配置是在每个类和方法上的, 每个开发各写各的, 很少会有冲突. 而Struts2是在xml文件中统一配置的, 虽然不同模块可以分成不同xml文件, 但是还是经常有不同人修改同一个xml文件的. 而且配置在各自的类和方法上查看会更加直观.
  3. 很经典的一个区别是: SpringMVC的入口是servlet,而Struts2是filter. Struts2的filter在处理异常处理,文件上传,验证之类的时候还是可以的, 而且filter可以多级传递也是不错的体验. 当然SpringMVC也可以使用很多工具和插件实现, 之前项目有在service之前单独做了一层做校验和过滤的.
  4. 此外, SprignMVC的一些强大注解也是很有优势的, 特别是近些年来前后端分离使用的json格式的接口, 使用SpringMVC更加方便快捷. 开发人员接到新项目时, 入手SpringMVC比Struts2更加容易些, 这也是得益于SpringMVC更少的配置.

能想到的暂时就是以上几点了. 感觉也不会再遇到Struts2了, 当做纪念一下. 其实Struts2更符合OOP的编程思想, 有机会的话也可以学习下.

你可能感兴趣的:(java,struts2,java)