前端时间学习了这两个框架,发现这两个框架都是对MVC模式下表现层的处理,为了便于理解这两个框架,将这两个框架放在一起进行比较。
经过对比发现有以下几点不同
(1)核心控制器区别
- SpringMVC采用的是前端控制器DispatcherServlet,其本质是一个Servlet。
- Strurs2框架采用的是预处理控制器StrutsPreparedAndExcuteFilter,其本质是一个Fileter。
(2) 性能
- Struts2是类级别的拦截,每次请求就会创建一个Action实例,这里注意和Spring整合的问题,Spring默认的是单例模式。
- SpringMVC是基于方法级别的拦截,性能相比于Struts2较高。这里需要注意,由于是单例模式,一定要慎用全局变量。防止造成线程安全问题。
(3) 参数传递
- Struts2框架可以用成员属性来接收参数,说明多个方法是可以共享参数的,除此之外还有值栈可以传递数据。
- SpringMVC的方法之间是独立的,参数通过请求数据获取,各方法之间参数独立。
(4) 拦截机制
- Struts2框架中有相应的拦截器,配置之后即可使用
- SpringMVC框架即可以采用AOP方式实现,也可以实现自己的拦截器类。
(5)Ajax交互
- Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用起来相对不方便。
- SpringMVC处理Ajax非常方便,使用@ResponseBody就可以收到请求,返回响应数据。
(6)与Spring框架的集成方面
- Struts2框架与Spring集成比较繁琐
- SpringMVC与Spring可以无缝对接。