昨天下午去面试的时候,面试官跟我说:“给我谈谈struts mvc和spring mvc吧”,我谈着谈着就谈到SSH集成去了,回来后想了想,Struts和Spring mvc确实有必要单独分析比较一下。这里本人只做简单的个人的认识,网上相关的资源很多。
Struts MVC:
①一个类对应一个请求上下文,也就是一个Action请求做出一次响应。
②由于第一点,Struts的类是共享的,其属性也是共享的,每次请求都会创建该类的实例,性能方面有多余的消耗
③Struts的入口是拦截器,通过拦截器再通过控制器转发到不同的bean去处理请求(具体可以看看servlet与拦截器与interceptor的区别,我将会在后几篇博客中讲)
④Struts的Ajax需要手动配置url,相对比较麻烦
⑤Struts MVC更加面向对象编程(OOP)
⑥对于JSR303自定义注解,Struts处理验证很繁琐
Spring MVC:
①一个方法对应一个请求上下文,也就是基于一个方法做出一次响应,(网上说的restful url,一般不会用spring与url结合使用,所以不必太关心)
②由于第一点,方法之间是完全独立的,(体现了spring的轻量级框架)
③Spring的入口是servlet,针对一个方法就可以直接去做相应的处理,(这里也体现了spring的‘0配置’)
④Spring MVC集成了Ajax,只需一个注解@ResponseBody就可以实现,(体现了Spring更高级吧。)
⑤Spring MVC相对比较谨慎,是在servlet上面做的扩展
⑥支持JSR303,处理验证更加灵活方便
以上是本人对Struts MVC和Spring MVC的一个简单的区别整理,编程领域没有绝对的好与坏,只有相对的存在。如果有幸再被面试到这个问题,应该不会有问题了。