Struts2与SpringMVC的异同点
相同点:struts2与SpringMVC都是控制层(Controller)的框架,都是负责接收浏览器传递过来的数据、调用Service层业务、跳转页面(如果有数据,则将数据传递到前台页面展示)三个功能。
不同点:
1、框架机制
SpringMVC使用的是servlet,即org.springframework.web.servlet.DispatcherServlet;
Struts2使用的是filter,即org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
2、拦截机制
Struts2是类级别的拦截器,一个Action对应一个request上下文,每一次请求都会创建一个Action,在与Spring整合时的原型模式为prototype(多例);传递参数通过成员变量传递参数(必须提供相应的set、get方法);
SpringMVC是方法级别的拦截,一个方法对应一个request上下文,在与Spring整合时默认为singleton(单例),可以通过@Scope注解进行修改;传递参数通过Model或者MedelMap传递参数,底层封装了request作用域。
3、性能方面
由于SpringMVC与Spring是无缝衔接的(同属于Spring全家桶),所以在开发效率和运行效率上要高于Struts2。
4、与Ajax的集成
SpringMVC只需要在方法上加上@ResponseBody注解即可,SpringMVC会自动将返回值数据转换成json串,很是方便。
Struts2则需要自己手动将返回的数据转换成json串。
5、配置文件的大小
SpringMVC可以通过写注解的方式获取对象,可以减少配置文件的大小;Struts2可能会配置一写自定义拦截器,导致配置文件所占内存增加,从而使得SpringMVC的配置文件要小于Struts2的配置文件。