springmvc和struts2的区别是什么?有什么不同?

KLQ 2020-07-09 15:34:54 java常见问答 6416

你知道springmvc和struts2之间有什么不一样吗?很多刚接触springmvc的人对于这一点都不太了解,下文就对两者的区别进行了详细的介绍,一起来了解一下吧。

1、拦截机制

Struts2

Struts2框架是类级别的拦截,每一次请求就会创建一个Action,和spring整合的时候,Struts2的ActionBean注入作用域是原型模式prototype,之后,通过setter,getter把request数据注入到属性。

Struts2当中Action的一个方法能够对应一个url,但是,类属性却被所有方法共享,这也就不能够使用注解或者是其他的方法标识他所属方法了。

SpringMVC

SpringMVC是方法级别的拦截,一个方法对应一个Request上下文,方法直接基本上是独立的,独享request,response数据。

每一个方法同时又与一个url对应,参数的传递是直接注入到方法当中的,是方法所独有的。

处理的结果通过ModeMap返回给框架。

在Spring整合的时候,SpringMVC的Controller Bean默认单例模式Singleton,所以默认对所有的请求,只会创建一个Controller。

又加上没有共享的属性,所以是线程安全的。

假如,要改变默认的作用域,需要添加@Scope注解修改。

2、集成

SpringMVC集成了Ajax,易用,只要注解@ResponseBody就能够实现,之后,直接返回响应文本就可以了。

Struts2拦截器集成了Ajax,在Action当中处理的时候,通常都要安装插件或者是自己写代码集成进去,使用起来不怎么方便。

3、配置

spring MVC和Spring是无缝的,项目的管理和安全上也比Struts2高,SpringMVC可以认为已经100%零配置。

4、性能

SpringMVC实现了零配置,因为SpringMVC基于方法的拦截,有加载一次单例模式bean注入。

Struts2是类级别的拦截,每次请求对应实例一个新的Action,需要加载所有的属性值注入。

SpringMVC开发效率和性能高于Struts2。

5、框架机制

Struts2-Filter实现,SpringMVC-Servlet实现。

6、设计思想

Struts2更加符合OOP的编程思想, SpringMVC比较谨慎,在servlet上扩展。

7、拦截机制

Struts2有着自己的拦截Interceptor机制,SpringMVC用的是独立的Aop方式。

关于两者的区别你都了解了吧,更多java基础入门内容,请继续关注奇Q工具网来进行了解吧。

推荐阅读:

Spring和SpringMVC的区别是什么?各自的优缺点是什么?

springboot和springmvc区别有哪些?区别详细介绍

springmvc常用注解有哪些?常用注解介绍