二十二、Spring MVC与Structs2的区别总结

时间:2021-08-19 08:49:02

一、框架的入口

1、Structs2采用Filter(StructsPrepartAndExecuteFilter)来进行实现。

2、SpringMVC采用Servlet(DispatcherServlet)来进行实现。

Filter在容器启动之后立即初始化,服务器停止后销毁,比Servlet晚。

Servlet是在调用的时候初始化,比Filter先调用,服务停止后销毁。

二、拦截原理

Structs2:类级别的拦截,每次请求都会创建一个Action,然后一个Action对应一个Request,Response。Action的一个方法可以对应一个URL,而Action的类属性都是被所有方法共享的,所以就无法用注解或者其他方式来标识所属方法。

SpringMVC:方法级别的拦截,Controller中一个方法对应一个Request,Response。方法直接是独立的,直接独享Request,Response的数据。每个方法同时对应一个URL,参数的传递直接注入到方法中,参数是方法所独有的。处理结果通过ModelAndView返回给框架。

三、性能问题

SpringMVC实现了零配置,SpringMVC基于方法的拦截,Structs2是基于类级别的拦截,每一次请求对应一个新的Action,需要加载所有的属性值的注入。SpringMVC开发效率高与Structs2。

四、集成Ajax

SpringMVC集成了Ajax,只需要注解@ResponseBody就可以实现Ajax,直接返回响应就行。而Structs2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用不太方便。