两都均为MVC框架,从技术上来看它们的区别,个人认为有以下区别:
1、SpringMVC是以Servlet为入口,而Struts则是以Filter为入口;
2、SpringMVC是基于方法的设计,而Struts则是基于类的设计,因此,从效率与速度上来说SpringMVC会微快些;
3、SpringMVC相对于Struts开发会快速简洁些,支持JSR303,处理ajax请求较为方便;
4、SpringMVC优雅的支持restful风格请求,而Struts则本身没有这方面的优势;
5、在页面开发方面由于Struts支持OGNL表达式,则Struts会稍优于SpringMVC;
从两者的开源社区来看,目前SpringMVC社区较为活跃些,不过从公司用人看,由于Struts曾经有过很辉煌的一段时间,因此,从目前市面上的人才掌握情况看,熟Struts的会相对多些,也正因为Struts曾经的辉煌,研究其漏洞的人也相对多,目前Struts存在不少的安全漏洞,对于原有的老系统来解决这些漏洞还是挺麻烦的,直接升级较高版本的Struts则需要考虑到相关版本的兼容性,据我了解,Struts高版本对低版本的兼容性方面做得不是太好,所以直接升级风险相对也比较高。
综合以上几方面来看,个人更倾向于采用SpringMVC。