spring MVC
面试官问道:有了stuts的mvc为什么还要spring的mvc,你觉得spring有什么不爽的地方?
个人觉得两者之间的区别还是比较明显的,先说一下他们的共同点:
1.都是mvc框架;
2.感觉struts的action类似于spring的ioc,都是使用java反射机制来实现的依赖注入;
3.struts2的拦截器使用也类似于spring的aop,都是通过动态代理实现的;
他们的区别,在我看来有如下:
1.配置不一样(这点就不多说了)
2.spring的控制器对象的处理请求方法需要带有HttpServletRequest和HttpServletResponse参数,这样不便于调试;
3.参数的接收,在struts2中通过set方法就实现了,而spring
则取药显式的去从request中获取,另外参数的传递也比较方便;
4.struts2处理请求的返回页比较方便,通过acction的返回的结果名称,定位返回的页面或者重定向到另一个action
5.struts2
同时提供了对于请求变量的校验和类型的转换;
6.
我觉得spring在mvc框架中相对于struts2的优势在于它的IOC,struts2只是注入action,而spring可以将更多的bean注入到这个action中;
综上所述,
springmvc较struts2更轻量,但是没有struts2在mvc方面功能强大
两者不可同日而语
前者是
web界经典的mvc框架系Apache软件基金下Jakarta项目的一部分,主要架构设计
和开发者是CraigR.McClanahan,到现在已经将近8年时间了
后者是RodJohnson是对《ExpertOne-on-OneJ2EEDesignandDevelopment》一书中所阐述的设计思想的具体实现,基于interface21开发包引入了IOC、AOP等重要思想的轻量级框架。