1、机制
spring mvc 和 struts2的加载机制不同:spring mvc的入口是servlet,而struts2是filter;(servlet和filter的区别?)

2、性能
spring mvc 在性能上会稍微比struts2快。
sturts2是基于类的设计,是类级别的拦截,每次发一次请求都会实例一个action,然后调用setter getter方法把 request中的数据注入,struts2实际上是通过setter getter方法与request打交道的,struts2中,一个Action对象对应 一个request上下文;spring mvc是基于方法的设计,粒度更细,是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进 去,在spring mvc中,一个方法对应一个request上下文;

3、参数传递
struts2在接受参数的时候,可以用成员属性来接受参数,这就说明参数是让多个方法共享的,即其类属性却所有方法共享;
spring mvc的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量;

4、框架集成
spring MVC和Spring是无缝(无缝:无须数据格式转换,直接访问来自数据源数据格式)的。从这个项目的管理和安全上也比Struts2高;
5、数据验证
SpringMVC验证支持JSR303(一种数据验证的规范),处理起来相对更加灵活方便,而Struts2验证比较繁琐;
6、Ajax交互
spring mvc处理ajax的请求十分方便,只需一个注解@ResponseBody ,然后直接返回响应文本即可;
Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便;
7、拦截机制的实现
spring mvc用的是独立的AOP方式实现,而struts2有自己的interceptor机制,这样导致了struts2的配置文件量又比spring mvc大;
8、RESTful架构的实现
spring mvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上spring mvc就容易实现restful url;
struts2是类级别的拦截,一个类对应一个request上下文,struts2 action的一个方法可以对应一个url;而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了,所以实现restful url比较费劲

开源框架SpringMvc和Struts2的区别的更多相关文章

  1. SpringMVC 和Struts2的区别

    SpringMVC 和Struts2的区别 1. 机制: spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同. 2. 性能: spring会稍微比s ...

  2. JAVAEE——SpringMVC第一天:介绍、入门程序、架构讲解、SpringMVC整合MyBatis、参数绑定、SpringMVC和Struts2的区别

    1. 学习计划   第一天 1.SpringMVC介绍 2.入门程序 3.SpringMVC架构讲解 a) 框架结构 b) 组件说明 4.SpringMVC整合MyBatis 5.参数绑定 a) Sp ...

  3. SpringMVC和Struts2的区别及优势

    1.SpringMVC和Struts2的区别比较 1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方 ...

  4. SpringMVC 和 Struts2的区别

    SpringMVC 和 Struts2的区别   1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方 ...

  5. springmvc和struts2的区别

    springmvc和struts2的区别 1.springmvc基于方法开发的,struts2基于类开发的. 2.单例和多例的区别:springmvc在映射的时候,通过形参来接收参数的,是将url和c ...

  6. SpringMVC跟Struts2的区别

    SpringMVC跟Struts2的区别 1.SpringMVC的入口是servlet:Struts2的入口是Filter. 2.SpringMVC性能方面会比Struts2好一点,SpringMVC ...

  7. SpringMVC与Struts2配置区别

     Spring MVC模型与Struts2模型应用:  Html表单: 上述这两段代码无论是SpringMVC还是Struts2,都可以共用.而在请求响应处理类(也就是Controller)上的设计差 ...

  8. 传递集合参数以及SpringMVC和Struts2的区别

    一.传递集合参数 二.和Struts2的区别 Struts2是基于类封装请求参数,SpringMVC是基于方法封装参数:

  9. springmvc和struts2的区别(转)

    1.客户端浏览器发出HTTP请求.   2.根据web.xml配置,该请求被FilterDispatcher接收.   3.根据struts.xml配置,找到需要调用的Action类和方法, 并通过I ...

随机推荐

  1. Docker 日志都在哪里?怎么收集?

    https://www.cnblogs.com/YatHo/p/7866029.html 日志分两类,一类是 Docker 引擎日志:另一类是 容器日志. Docker 引擎日志 Docker 引擎日 ...

  2. 面试简单整理之IO

    1.字节流,字符流 整个Java IO体系都是基于字节流(InputStream/OutputStream) 和 字符流(Reader/Writer)作为基类,根据不同的数据载体或功能派生出来的. 2 ...

  3. NOIP2018游记(划掉) 滚粗记

    Day0 早上摸鱼~, 打几个板子就颓废 中午出发, 在火车上颓元气+睡觉. 到了宾馆发现yhx已经帮我们拿了袋子和狗牌,于是上楼欢乐地搓起了六家统, 一直搓到10点钟才回自己房间. 有六家统就有快乐 ...

  4. 【转】一个 Linux 上分析死锁的简单方法

    简介 死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这 ...

  5. laravel-更换语言包

    第一步:找语言包 找到比较靠谱的语言包(根据下载量与收藏量综合判断),而且要是laravel的 扩展的链接:https://packagist.org/packages/caouecs/laravel ...

  6. 奇异值分解(SVD)

    首先说明一下特征值:设A是n阶方阵,如果存在 λ 和n维非零向量X,使 AX = λX ,则 λ 称为方阵A的一个特征值,X为方阵A对应于或属于特征值 λ 的一个特征向量. AX = λX 的过程是一 ...

  7. win10在Pycharm中安装scrapy

    查看官网说明 发现推荐是安装Anaconda 或 Miniconda,这东西有点大而全,感觉目前用不上.所以没这样做. 直接安装scrapy 如果直接装会报错的,参考文章就可以解决. 这里记一下组件下 ...

  8. 爬取baidu的明星的名称及头像

    #!/1111111111usr/bin/env python# -*- encoding: utf-8 -*-# Created on 2018-11-15 15:24:12# Project: d ...

  9. Linux 第十五天

    2)环境变量:这种变量中主要保存的是和系统操作环境相关的数据. export 变量名=变量值    设置环境变量 env                     查询变量 unset变量名       ...

  10. 解决:Adobe Acrobat Pro中设置背景颜色后,出现白色条纹

    找到  编辑->首选项->页面显示->渲染->使用2D图形加速 取消即可