控制层SpringMVC和Struts2的区别
来源:互联网 发布:数据库编辑软件 编辑:程序博客网 时间:2024/06/06 12:22
我们现在流行的常用的MVC层,控制层Controller层的框架主要有Struts2和SpringMVC两个框架,分别对应着Action和Controller。那么SpringMVC和Struts的主要区别有那些呢?
一、框架机制
我们知道Struts2采用Filter实现,而SpringMVC则采用Servlet实现。
Struts2使用StrutsPrepareAndExecuteFilter,而SpringMVC使用DispatcherServlet。Filter是一种特殊的Servlet。Filter在容器启动之后即初始化;服务停止以后坠毁,晚于Servlet。Servlet在是在调用时初始化,先于Filter调用;服务停止后坠毁。
二、拦截机制
1、Struts2
Struts2框架是类级别的拦截,每次请求就会创建一个Action,和Spring整合时Struts2的Action Bean注入作用域是原型模式prototype(否则会出现线程并发问题),然后通过setter,getter吧request数据注入到属性。
Struts2中,一个Action对应一个request,response上下文,在接收参数时,可以通过属性接收,这说明属性参数是让多个方法共享的。
2、SpringMVC
SpringMVC是方法级别的拦截,一个方法对应一个Request上下文,所以方法直接基本上是独立的,独享request,response数据。而每个方法同时又何一个url对应,参数的传递是直接注入到方法中的,是方法所独有的。处理结果通过ModeMap返回给框架。
在Spring整合时,SpringMVC的Controller Bean默认单例模式Singleton,所以默认对所有的请求,只会创建一个Controller,有应为没有共享的属性,所以是线程安全的,如果要改变默认的作用域,需要添加@Scope注解修改。
三、性能方面
SpringMVC实现了零配置,由于SpringMVC基于方法的拦截,有加载一次单例模式bean注入。而Struts2是类级别的拦截,每次请求对应实例一个新的Action,需要加载所有的属性值注入,所以决定了SpringMVC更加快于Struts2。
四、拦截机制
Struts2有自己的拦截Interceptor机制,SpringMVC这是用的是独立的Aop方式。
。
- 控制层SpringMVC和Struts2的区别
- 控制层SpringMVC和Struts2的区别
- spring整合SpringMVC Controller 和 Struts2 Action控制层Bean的默认作用域
- spring整合SpringMVC Controller 和 Struts2 Action控制层Bean的默认作用域
- SpringMVC 和Struts2的区别
- struts2和springmvc的区别
- Struts2和springMVC的区别
- springmvc和struts2的区别
- springMVC和Struts2的区别
- SpringMVC和Struts2的区别
- springmvc 和struts2的区别
- springmvc 和struts2的区别
- springmvc 和struts2的区别
- springmvc 和 struts2的区别
- SpringMvc和Struts2的区别
- struts2和springMVC的区别
- springmvc和struts2的区别:
- springmvc和struts2的区别
- Spring Data Mongodb DBRef联级存储
- 嵌入式系统之常用接口技术
- iOS推送技术
- Elasticsearch:检索篇
- 常用meta整理
- 控制层SpringMVC和Struts2的区别
- android 学习之json数据的解析与创建
- stmp 邮件发送
- Java多线程的好文章
- learncpp笔记
- elasticsearch 索引优化
- 蓝桥杯 带分数
- another issue: I encoutered such a strace stack
- tomcat发布项目以后修改项目名称