SpringMVC、Spring和Struts的区别
http://www.cnblogs.com/hhx626/p/6010293.html
导读:近期做到的项目中,用到的框架师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了!但是,还是那句话,框架本身就是为了找到一个平衡,用哪个合适,就用哪个吧。都有各自的好!
SpringMVC、Spring和Struts的区别的更多相关文章
- 【SSM 1】SpringMVC、Spring和Struts的区别
导读:近期做到的项目中,用到的框架师SSM(SpringMVC+Spring+Mybatis),那么在这之前用过SSH,这里主要是区分一下SpringMVC和Struts,但是由于SpringMVC和 ...
- SSH(Struts,Spring,Hibernate)和SSM(SpringMVC,Spring,MyBatis)的区别
SSH 通常指的是 Struts2 做前端控制器,Spring 管理各层的组件,Hibernate 负责持久化层. SSM 则指的是 SpringMVC 做前端控制器,Spring 管理各层的组件,M ...
- Spring 、SpringMVC 、Struts2之间的区别
一.Spring与SpringMVC的区别: spring是一个开源框架,是为了解决企业应用程序开发,功能如下: 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Ja ...
- 面试中问到SpringMVC与struts的区别
1.先简单的介绍一下SpringMVC 废话不多说,其实SpringMVC就是一个MVC的框架,SpringMVC它的annotation式的开发比struts 开发的方便很多,可以直接代替strut ...
- Maven搭建springMVC+spring+hibernate环境
这次不再使用struts2做控制器,采用spring自己的springMVC框架实现. 首先,改写pom.xml文件,不需要struts2的相关jar了. pom.xml <project xm ...
- Spring整合Struts的两种方式介绍
1 使用Spring托管Struts Action 该种方式就是将Struts Action也视为一种Bean交给Spring来进行托管,使用时Struts的配置文件中配置的Action的classs ...
- 集成JPA+springmvc+spring+EJB中的Java EE应用
EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序.凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台.EJB (Enterprise Jav ...
- SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法
转自:https://blog.csdn.net/bieleyang/article/details/77862042 SSM框架是spring MVC ,spring和mybatis框架的整合,是标 ...
- 框架基础学习之--详解web+maven+spring+mybatis+struts框架文件夹作用
详解web+maven+spring+mybatis+struts框架文件夹作用 1.程序名 2.Mybatis,mybatis是数据持久层,就是和对象类有关系的东西 3.存放java文件,xml,p ...
随机推荐
- 【Data Structure & Algorithm】在排序数组中查找和为定值的两个数
在排序数组中查找和为定值的两个数 题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字,要求时间复杂度是O(n).如果有多对数字的和等于输入的数字,输出 ...
- python 内置函数的补充 isinstance,issubclass, hasattr ,getattr, setattr, delattr,str,del 用法,以及元类
isinstance 是 python中的内置函数 , isinstance()用来判断一个函数是不是一个类型 issubclass 是python 中的内置函数, 用来一个类A是不是另外一个 ...
- art-template在项目中的应用
art-template 是一个简约.超快的模板引擎.它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能,并且同时支持 NodeJS 和浏览器. 下面介绍在 ...
- SQL 语句(原生)
//查 //查询表里的所有数据 select * from 表名 //根据id等字段查询数据 select * from 表名 where 字段 = 值 or 字段 = 值 (例):select * ...
- Unity Mecanim在大型mmo中的应用
http://blog.csdn.net/langresser_king/article/details/37760091?utm_source=tuicool&utm_medium=refe ...
- U3D开发性能优化笔记(待增加版本.x)
http://blog.csdn.net/kaitiren/article/details/45071997 此总结由自己经验及网上收集整理优化内容 包括: .代码方面: .函数使用方面: .ui注意 ...
- Proteomes of paired human cerebrospinal fluid and plasma: Relation to blood-brain barrier permeability in older adults (文献分享一组-潘火珍)
题目:Proteomes of paired human cerebrospinal fluid and plasma: Relation to blood-brain barrier permeab ...
- IT兄弟连 JavaWeb教程 JSP内置对象经典案例
案例需求:使用MVC模式编写一个程序当发起一个deptList.do请求时在servlet中准备一个部门列表对象,把这个列表对象放入request作用域中,然后转发到deptlist.jsp,使用js ...
- C#字符串判断
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- 【Luogu P1502】 窗口的星星
→传送窗口 (复制一下题面好了~) 题目背景 小卡买到了一套新房子,他十分的高兴,在房间里转来转去. 题目描述 晚上,小卡从阳台望出去,“哇~~~~好多星星啊”,但他还没给其他房间设一个窗户,天真的小 ...