导读:近期做到的项目中,用到的框架师SSM(SpringMVC+Spring+Mybatis),那么在这之前用过SSH,这里主要是区分一下SpringMVC和Struts,但是由于SpringMVC和Spring真的也挺容易迷糊的,所以,本篇博客,就是区分一下这三者之间的关系,明确其具体所指,为接下来的框架搭建和应用做准备!

说明:纯属个人观点

一、Spring

首先,结合到自己对于Spring的使用,我明确的一点是,Spring严格上来说,并不是一种框架。它相当于一个粘合剂,黏合了别的框架或者组件。所以,spring是一个容器!为什么用Spring,个人感觉,spring就是一个容器的本质,程序开发的模块组件,都可以通过spring这个容器进行组装拼合,spring为我们提供了很多 管理的功能。而且,它是一个轻量级的容器。我们常说EJB是重量级,Spring是轻量级的,那么,究竟什么叫轻量级或重量级呢?

附:轻量级和重量级(往简单了说)

首先;轻量级和重量级,它只是一个相对的概念。如果没有对比,就没有所谓的轻重之分

轻量级:当轻量级的框架启动时,创建和销毁的资源都非常少。简而言之,一个轻量级的框架,它的入侵性非常小,也可以说是耦合性很低。可以很轻易的替换掉它,而不需要做太大的改动,它对别的组件的依赖非常小!

重量级:和轻量级相对,引入一个重量级的框架,意味着需要引入相当多的依赖和其他组件,当需要修改这个框架时,基本上面临着重组的危机!

二、SpringMVC

从Spring的结构图可以看出,springMVC位于spring web端的一个框架,是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦。附:基于请求驱动指的就是使用请求-响应模型。从原理上看,它基本上和.NET的MVC的原理相同!

三、Spring和SpringMVC的联系

从名字上就可以窥探出,Spring>SpringMVC,那么事实上,spring和SpringMVC是一种父子关系。SpringMVC是spring扩展出的一个应用于web端的框架。在这里需要注意的一点,就是到底什么是父子容器关系:

spring主要的作用是黏合其他模块组件,进行统一管理,springmvc则主要是负责web端。那么,我们都知道,我们在应用spring的时候,可以使用注入。这个时候,如果我们的web端是用的SpringMVC,这个时候,controller理论上是通过SpringMVC去注入,但是,使用spring注入,同样是可行的。同理,service等层,使用SpringMVC配置的统一扫描装配也是可以的。所以,如果说只是为了使用spring的依赖注入,是大可不必将springMVC和spring同时使用的。他们完全可以分开!

但是,尽管SpringMVC和spring都可以进行自动装配扫描,值得注意的是:

spring(父容器)并不能直接访问SpringMVC(子容器)所注入的对象,但是SpringMVC却可以访问到spring装载的对象。所以,在配置自动装配的时候,应该注意到这一点。

四、Struts

Struts是对于MVC的一种非常完美的实现,从根本上来说,它其实和SpringMVC一样,都是基于MVC思想的扩展实现。但是,在SpringMVC3之后 ,SpringMVC完超Struts。(注:但是,框架并没有优劣之分,框架本身就是一种权衡,相对而言而已)

Struts和SpringMVC的区别:

首先,如果说项目中使用了spring,那么还是使用SpringMVC吧,因为相对于融合Struts来说,spring和SpringMVC是非常完美的无缝链接。

其次,SpringMVC的拦截粒度是方法,而Struts的粒度是类

然后,入口不同,SpringMVC的入口是servlet,而Struts是filter

最后,如果使用注解的话,SpringMVC基本上是零配置,而Struts需要配置很多。

备注:想说一点的是:在Struts中可以配置开发者模式,就是说当修改了一个URL访问,可以不用重启工程。但是SpringMVC需要重启。

五、总结

我也不知道怎么从专业的角度去区分这几个的区别,但是,就从我自己的使用上来说,我当时接触SpringMVC的时候,入门真心是没有花太多的时间,而Struts真的让我弄了好些个日子,包括那些标签配置,还有配置文件等等。所以说实在的,我现在从心理上,对于这个SpringMVC和Struts,我已经倒向了SpringMVC了!但是,还是那句话,框架本身就是为了找到一个平衡,用哪个合适,就用哪个吧。都有各自的好!

转载于:https://www.cnblogs.com/hhx626/p/6010293.html

【SSM 1】SpringMVC、Spring和Struts的区别相关推荐

  1. [Shiro教程] Shiro 教程基于SSM(SpringMVC + Spring + Mybatis)EHCache版本

    一.Shiro简介 Apache Shiro 是 Java  的一个安全框架.我们经常看到它被拿来和 Spring  的 Security  来对比.大部分人认为 Shiro  比 Security  ...

  2. [Shiro教程] Shiro 教程基于SSM(SpringMVC + Spring + Mybatis)

    一.Shiro简介 Apache Shiro 是 Java  的一个安全框架.我们经常看到它被拿来和 Spring  的 Security  来对比.大部分人认为 Shiro  比 Security  ...

  3. SpringMVC、Spring和Struts的区别

    一.Spring 首先,结合到自己对于Spring的使用,我明确的一点是,Spring严格上来说,并不是一种框架.它相当于一个粘合剂,黏合了别的框架或者组件.所以,spring是一个容器!为什么用Sp ...

  4. 史上最细IDEA搭建基于SSM(springmvc+spring+mybatis)

    需要准备的环境: idea 2019.3.2 jdk1.8 Maven 3.3.9 请提前将idea与Maven.jdk配置好,本次项目用的都是比较新的 注:配置完ide红线报错没关系!可以run! ...

  5. maven工程建立和SSM(springMVC+spring+mybatis)整合

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1.环境: maven 版本:3.5.1 ecelipse mars.2 JDK  :  jdk1. ...

  6. spring+websocket综合(springMVC+spring+MyBatis这是SSM框架和websocket集成技术)

    java-websocket该建筑是easy.儿童无用的框架可以在这里下载主线和个人教学好java-websocket计划: Apach Tomcat 8.0.3+MyEclipse+maven+JD ...

  7. SSM框架:Spring

    SSM框架:Spring 文章目录 前言 一.Spring 1. 简介 2. 优点 3. 组成 4. 拓展 二.IOC理论推导 1. IOC原型引入 2. IOC本质(基本思想) 三.HelloSpr ...

  8. SSH(Struts,Spring,Hibernate )和SSM(SpringMVC,Spring,MyBatis )的区别,抽丝剥茧的给你讲清楚

    SSH 通常指的是 Struts2 做前端控制器,Spring 管理各层的组件,Hibernate 负责持久化层. SSM 则指的是 SpringMVC 做前端控制器,Spring 管理各层的组件,M ...

  9. Spring Web框架与Struts的区别

    Spring Web框架与Struts的区别 Posted on 2007-12-25 02:23 Asktalk 阅读(1848) 评论(0) 编辑 收藏 所属分类: Jdbc/Hibernate3 ...

最新文章

  1. Linux 练习题-3文件与磁盘 问答
  2. 笔记本如何选择修复计算机,如何处理旧的笔记本电脑?这些操作必不可少!
  3. python 3.6.5 pip_在Windows 10 + Python 3.6.5 中用 pip 安装最新版 TensorFlow v1.8 for GPU
  4. android画板需求分析,Android编程实现画板功能的方法总结【附源码下载】
  5. 不用鼠标,程序员编程竟能如此高效?
  6. APP版本更新通知流程图
  7. 易基因 | 转录组测序在原核生物研究中的应用(4)| 文献科普
  8. 电影《暮光之城》不得不爱
  9. wx.canIUse
  10. cocos:MotionStreak拖尾渐隐效果
  11. P1425 小鱼的游泳时间 题解
  12. Google爬虫如何抓取JavaScript的?
  13. 超详细Vue Devtools的下载和安装——Vue的调试工具
  14. MSSQL 数据库邮件配置
  15. docker安装nextcloud+onlyoffice+https
  16. 在学校游说开源和Linux
  17. 电脑某个磁盘空间不够,想进行磁盘扩展
  18. 反垃圾邮件网关工作原理-Coremail带你了解杰创智能如何使用邮件网关安全升级
  19. 提取Seurat格式单细胞metadata和counts 新建seurat object
  20. Google Chrome漫画书中文版

热门文章

  1. 使用print写文件
  2. 转搞网络的也可以很有柴的!
  3. Flash 杂志《summer tree》 第七期发布
  4. Your potential, our passion
  5. 1092 最好吃的月饼 (20分)
  6. bootstrap学习笔记(1)基础段落,表格的实现
  7. 问题 K: A+B Problem (III) : Input/Output Practice 山东科技大学OJ c语言
  8. 基于S函数的BP神经网络PID控制器及simulink仿真
  9. 模型预测控制的缺点_【电子技术】【2018.01】模型预测控制FPGA实现的协同设计...
  10. while循环(包含死循环、while嵌套)