您的位置:首页 > 编程语言 > Java开发

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

2017-09-21 12:05 405 查看

第一点:机制不同

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 url

struts2是类级别的拦截,一个类对应一个request上下文;实现restfulurl要费劲,因为struts2 action的一个方法可以对应一个url;而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。

spring3 mvc的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架方法之间不共享变量,而struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码,读程序时带来麻烦。

第五点: Spring3 mvc的验证

支持JSR303,处理ajax的请求更是方便,只需一个注解@ResponseBody
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息