【SSM 1】SpringMVC、Spring和Struts的区别
导读:近期做到的项目中,用到的框架师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的区别相关推荐
- [Shiro教程] Shiro 教程基于SSM(SpringMVC + Spring + Mybatis)EHCache版本
一.Shiro简介 Apache Shiro 是 Java 的一个安全框架.我们经常看到它被拿来和 Spring 的 Security 来对比.大部分人认为 Shiro 比 Security ...
- [Shiro教程] Shiro 教程基于SSM(SpringMVC + Spring + Mybatis)
一.Shiro简介 Apache Shiro 是 Java 的一个安全框架.我们经常看到它被拿来和 Spring 的 Security 来对比.大部分人认为 Shiro 比 Security ...
- SpringMVC、Spring和Struts的区别
一.Spring 首先,结合到自己对于Spring的使用,我明确的一点是,Spring严格上来说,并不是一种框架.它相当于一个粘合剂,黏合了别的框架或者组件.所以,spring是一个容器!为什么用Sp ...
- 史上最细IDEA搭建基于SSM(springmvc+spring+mybatis)
需要准备的环境: idea 2019.3.2 jdk1.8 Maven 3.3.9 请提前将idea与Maven.jdk配置好,本次项目用的都是比较新的 注:配置完ide红线报错没关系!可以run! ...
- maven工程建立和SSM(springMVC+spring+mybatis)整合
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1.环境: maven 版本:3.5.1 ecelipse mars.2 JDK : jdk1. ...
- spring+websocket综合(springMVC+spring+MyBatis这是SSM框架和websocket集成技术)
java-websocket该建筑是easy.儿童无用的框架可以在这里下载主线和个人教学好java-websocket计划: Apach Tomcat 8.0.3+MyEclipse+maven+JD ...
- SSM框架:Spring
SSM框架:Spring 文章目录 前言 一.Spring 1. 简介 2. 优点 3. 组成 4. 拓展 二.IOC理论推导 1. IOC原型引入 2. IOC本质(基本思想) 三.HelloSpr ...
- SSH(Struts,Spring,Hibernate )和SSM(SpringMVC,Spring,MyBatis )的区别,抽丝剥茧的给你讲清楚
SSH 通常指的是 Struts2 做前端控制器,Spring 管理各层的组件,Hibernate 负责持久化层. SSM 则指的是 SpringMVC 做前端控制器,Spring 管理各层的组件,M ...
- Spring Web框架与Struts的区别
Spring Web框架与Struts的区别 Posted on 2007-12-25 02:23 Asktalk 阅读(1848) 评论(0) 编辑 收藏 所属分类: Jdbc/Hibernate3 ...
最新文章
- Linux 练习题-3文件与磁盘 问答
- 笔记本如何选择修复计算机,如何处理旧的笔记本电脑?这些操作必不可少!
- python 3.6.5 pip_在Windows 10 + Python 3.6.5 中用 pip 安装最新版 TensorFlow v1.8 for GPU
- android画板需求分析,Android编程实现画板功能的方法总结【附源码下载】
- 不用鼠标,程序员编程竟能如此高效?
- APP版本更新通知流程图
- 易基因 | 转录组测序在原核生物研究中的应用(4)| 文献科普
- 电影《暮光之城》不得不爱
- wx.canIUse
- cocos:MotionStreak拖尾渐隐效果
- P1425 小鱼的游泳时间 题解
- Google爬虫如何抓取JavaScript的?
- 超详细Vue Devtools的下载和安装——Vue的调试工具
- MSSQL 数据库邮件配置
- docker安装nextcloud+onlyoffice+https
- 在学校游说开源和Linux
- 电脑某个磁盘空间不够,想进行磁盘扩展
- 反垃圾邮件网关工作原理-Coremail带你了解杰创智能如何使用邮件网关安全升级
- 提取Seurat格式单细胞metadata和counts 新建seurat object
- Google Chrome漫画书中文版
热门文章
- 使用print写文件
- 转搞网络的也可以很有柴的!
- Flash 杂志《summer tree》 第七期发布
- Your potential, our passion
- 1092 最好吃的月饼 (20分)
- bootstrap学习笔记(1)基础段落,表格的实现
- 问题 K: A+B Problem (III) : Input/Output Practice 山东科技大学OJ c语言
- 基于S函数的BP神经网络PID控制器及simulink仿真
- 模型预测控制的缺点_【电子技术】【2018.01】模型预测控制FPGA实现的协同设计...
- while循环(包含死循环、while嵌套)