【职坐标】SpringMVC和struts2的区别对比

xiaoxiao2021-02-28  71

第一点:机制不同

springMVC的入口是servlet,而struts2是filter(这里要指出,filter和servlet是不同的。以前认为filter是servlet的一种特殊),这样就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了。

springMVC入口代码 <!-- 配置springmvc前端控制器 --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </init-param> <!-- 容器启动时就初始化 --> <load-on-startup>1</load-on-startup> </servlet> <!-- springMVC入口路径 --> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> Struts2入口代码 <!-- struts2入口过滤器 --> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

第二点:性能不同

spring会稍微比struts快。

spring mvc:是基于方法的设计,,粒度更细,但要小心把握像在servlet控制数据一样。sturts是基于类。Struts中每次发一次请求都会实例一个action,每个action都会被注入属性

第三点:参数传递

此点请通过实例去领会。不做过多讲解


第四点:设计思想

struts更加符合oop的编程思想spring在servlet上扩展。

第四点:intercepter的实现机制

struts有以自己的interceptor机制,spring mvc用的是独立的AOP方式 struts的配置文件量比springMVC大虽然struts的配置能继承,但是论使用上来讲,springMVC使用更加简洁,开发效率SpringMVC确实比struts2高。springMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上spring3mvc就容易实现restful urlstruts2是类级别的拦截,一个类对应一个request上下文;实现restfulurl要费劲,因为struts2 action的一个方法可以对应一个url;而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。spring3 mvc的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架方法之间不共享变量,而struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码,读程序时带来麻烦。

第五点: Spring3 mvc的验证

支持JSR303,处理ajax的请求更是方便,只需一个注解@ResponseBody

转载请注明原文地址: https://www.6miu.com/read-1000015.html

最新回复(0)