最终有SpringMvc与Struts2的对照啦
眼下企业中使用SpringMvc的比例已经远远超过Struts2,那么两者究竟有什么差别,是非常多刚開始学习的人比較关注的问题,以下我们就来对SpringMvc和Struts2进行各方面的比較:
1.核心控制器(前端控制器、预处理控制器):对于使用过mvc框架的人来说这个词应该不会陌生。核心控制器的主要用途是处理全部的请求,然后对那些特殊的请求(控制器)统一的进行处理(字符编码、文件上传、參数接受、异常处理等等),spring
mvc核心控制器是Servlet,而Struts2是Filter。
2.控制器实例:Spring Mvc会比Struts快一些(理论上)。
Spring Mvc是基于方法设计,而Sturts是基于对象,每次发一次请求都会实例一个action。每一个action都会被注入
属性,而Spring更像Servlet一样,仅仅有一个实例。每次请求运行相应的方法就可以(注意:因为是单例实例,所以应当避免全局变量的改动,这样会产生线程安全问题)。
3.管理方式:大部分的公司的核心架构中,就会使用到spring,而spring mvc又是spring中的一个模块。所以spring对于spring mvc的控制器管理更加简单方便,并且提供了全 注解方式进行管理。各种功能的注解都比較全面。使用简单。而struts2须要採用XML非常多的配置參数来管理(尽管也能够採用注解,可是差点儿没有公司那样使用)。
4.參数传递:Struts2中自身提供多种參数接受,事实上都是通过(ValueStack)进行传递和赋值。而SpringMvc是通过方法的參数进行接收。
5.学习难度:Struts更加非常多新的技术点,比方拦截器、值栈及OGNL表达式。学习成本较高,springmvc 比較简单。非常较少的时间都能上手。
6.intercepter的实现机制:struts有以自己的interceptor机制,spring mvc用的是独立的AOP方式。
这样导致struts的配置文件量还是比spring mvc大,尽管struts的配置能继承,所以我认为论使用上来讲,spring mvc使用更加简洁。开发效率Spring MVC确实比struts2高。spring
mvc是方法级别的拦截。一个方法相应一个request上下文,而方法同一时候又跟一个url相应。所以说从架构本身上spring3 mvc就easy实现restful url。struts2是类级别的拦截。一个类相应一个request上下文;实现restful url要费劲,由于struts2 action的一个方法能够相应一个url。而其类属性却被全部方法共享,这也就无法用注解或其它方式标识其所属方法了。
spring3 mvc的方法之间基本上独立的。独享request response数据。请求数据通过參数获取,处理结果通过ModelMap交回给框架方法之间不共享变量。而struts2搞的就比較乱。尽管方法之间
也是独立的。但其全部Action变量是共享的,这不会影响程序执行,却给我们编码,读程序时带来麻烦。
7.spring mvc处理ajax请求,直接通过返回数据,方法中使用注解@ResponseBody,spring mvc自己主动帮我们对象转换为JSON数据。

最终有SpringMvc与Struts2的对照啦的更多相关文章
- JAVAEE——SpringMVC第一天:介绍、入门程序、架构讲解、SpringMVC整合MyBatis、参数绑定、SpringMVC和Struts2的区别
1. 学习计划 第一天 1.SpringMVC介绍 2.入门程序 3.SpringMVC架构讲解 a) 框架结构 b) 组件说明 4.SpringMVC整合MyBatis 5.参数绑定 a) Sp ...
- springmvc与struts2执行流程比较
之前写过一篇struts2的执行流程的文章了,这里对struts2的流程就不做过多的分析,这篇文章主要分析spring-mvc的执行流程以 及struts2与spring-mvc的差别. 1.stru ...
- springmvc和struts2的区别
springmvc和struts2的区别 1.springmvc基于方法开发的,struts2基于类开发的. 2.单例和多例的区别:springmvc在映射的时候,通过形参来接收参数的,是将url和c ...
- springmvc和struts2的差别
springmvc和struts2的区别相关内容 1.spring mvc的入口是servlet,而struts2是filter filter功能:用户可以改变一个request和修改一个resp ...
- 终于有SpringMvc与Struts2的对比啦
目前企业中使用SpringMvc的比例已经远远超过Struts2,那么两者到底有什么区别,是很多初学者比较关注的问题,下面我们就来对SpringMvc和Struts2进行各方面的比较: 1. 核 心控 ...
- SpringMVC 和Struts2的区别
SpringMVC 和Struts2的区别 1. 机制: spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同. 2. 性能: spring会稍微比s ...
- 终于有SpringMvc与Struts2的对比啦(转)
本文转自:http://www.itsource.cn/web/news/5/20150318/370.html 目前企业中使用SpringMvc的比例已经远远超过Struts2,那么两者到底有什么区 ...
- <转>SpringMVC与Struts2 比较总结
原链接:http://blog.csdn.net/chenleixing/article/details/44570681 个人整理: 1.级别不同:SpringMVC :方法 Struts是 类级 ...
- SpringMVC与Struts2配置区别
Spring MVC模型与Struts2模型应用: Html表单: 上述这两段代码无论是SpringMVC还是Struts2,都可以共用.而在请求响应处理类(也就是Controller)上的设计差 ...
随机推荐
- Http Analyzer 数据抓包
一.工具简介 这是一款实时分析 HTTP/HTTPS 数据流的工具.它可以实时捕捉HTTP/HTTPS 协议数据,可以显示许多信息(包括:文件头.内容.Cookie.查询字符窜.提交的数据.重定向的U ...
- MySQL RR隔离 读一致性
MySQL RR 模式下 事务隔离问题: Session 1: mysql> select * from test; +------+------+ | id | name | +------+ ...
- getline(cin,s) bug workaround
#include<iostream>using namespace std;#include<string> int main(){int n;stirng s;cin> ...
- jQuery特效 隔行变色
1.通过使用onmouseover onmouseout方法 2.变色使用background-color(css)属性 3.变色的标签是td(tr仅仅能使用事件,颜色样式不起作用) 第一种方法 使用 ...
- gcc 编译器
gcc -E test.c 预处理 gcc -v test.c 查看编译的整个过程 objdump -d a.out 查看elf文件
- 字节数转换为b,kb,mb,gb的方法 通用的手机流量计算方法
//通用的手机流量计算方法 private String byteToMB(long size){ long kb = 1024; long mb = kb*1024; long gb = mb*10 ...
- hadoop笔记之Hive入门(Hive的体系结构)
Hive入门(二) Hive入门(二) Hive的体系结构 ○ Hive的元数据 Hive将元数据存储在数据库中(metastore),支持mysql.derby.oracle等数据库,Hive默认是 ...
- python 连接数据库-设置oracle ,mysql 中文字符问题
import cx_Oracle import MySQLdb def conn_oracle(): cnn = cx_Oracle.connect('用户名','密码','ip:端口号/数据库') ...
- Scala单例对象、伴生对象实战详解
1.Scala单例对象 Scala单例对象是十分重要的,没有像在Java一样,有静态类.静态成员.静态方法,但是Scala提供了object对象,这个object对象类似于Java的静态类,它的成员. ...
- linux下挂载NTFS分区错误修复
今天在linux下打开win的NTFS硬盘总是提示出错了,而且是全部的NTFS盘都出错,其中sda1错误显示如下: Error mounting /dev/sda1 at /media/wangbo/ ...