spring和springmvc的区别是什么?

spring和springmvc的区别

Spring是IOC和AOP的容器框架,SpringMVC是基于Spring功能之上添加的Web框架,想用SpringMVC必须先依赖Spring。

Spring可以说是一个管理bean的容器,也可以说是包括很多开源项目的总称;

spring mvc是其中一个开源项目,所以简单走个流程的话,http请求一到,由容器(如:tomact)解析http搞成一个request,通过映射关系(路径,方法,参数啊)被spring mvc一个分发器去找到可以处理这个请求的bean,那tomcat里面就由spring管理bean的一个池子(bean容器)里面找到,处理完了就把响应返回回去。

SpringMVC是一个MVC模式的WEB开发框架;

Spring是一个通用解决方案, 最大的用处就是通过Ioc/AOP解耦, 降低软件复杂性, 所以Spring可以结合SpringMVC等很多其他解决方案一起使用, 不仅仅只适用于WEB开发

SSH:

SSH 为 struts+spring+hibernate 的一个集成框架,是目前较流行的一种JAVA Web应用程序开源框架。

Struts

Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。

官方地址:http://struts.apache.org

Spring

Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。

Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IOC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。

Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/R mapping解决方案。

Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。

Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务–如果你需要–还能实现你自己的aspects。

这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVC Web框架。

官方地址:spring: http://www.springsource.org

Hibernate

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

官方地址:http://www.hibernate.org


推荐文章
C#方法的重载、重写和隐藏

方法的重载指的是同一个类型中,允许有同名的方法,但是,这些方法的输入参数必须不同,例如,参数类型或参数个数。 注意:由或不由ref/out修饰,在编译器眼中是一样的。 如果牵扯到可变数量的参数,

AJAX跨域请求(案例实战)

AJAX跨域通信的实现方法:在被请求域中提供一个用于响应请求的服务器端脚本文件,并在响应头部消息中添加Access-Control-Allow-Origin参数,将参数值指定为允许向该页面请求数据的域

C++类成员函数定义方法详解

《类对象的创建和使用》内联函数 voidsetRadius(double); doublegetArea(); voidCircle::setRadius(doubler) { radius=r

MySQL查看索引(SHOW INDEX)

索引创建完成后,可以利用SQL语句查看已经存在的索引。在MySQL中,可以使用SHOWINDEX语句查看表中创建的索引。 查看索引的语法格式如下: SHOWINDEXFROM[FROM] 语法说明

第一个Servlet程序

为了帮助读者快速学习Servlet开发,下面分步骤实现一个Servlet程序。 1.创建Web项目 选择MyEclipse上方工具栏中的File→New→Other选项,在Selectawizard

Go语言网络爬虫组件注册器

在讲解下载器接口设计时,我们介绍过组件注册方面的设计和组件注册器接口Registrar,它声明在module包中。根据前面的接口描述,我们会让组件注册器按照类型存储已注册的组件。该接口的声明如下:

C语言百钱买百鸡问题(详解版)

我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何? 翻译过来,意思是公鸡一个五块钱

韩顺平JavaEE Servlet实战开发视频教程

本视频教程以开发用户管理系统为主线,讲解JavaEEServlet。 讲师韩顺平,国内著名的软件培训讲师,授课语言风趣幽默,课程内容注重实践。 视频目录: JavaEEServlet开山:Ja

C语言输入字符和字符串(所有函数大汇总)

C语言有多个函数可以从键盘获得用户输入,它们分别是: scanf():和printf()类似,scanf()可以输入多种类型的数据。 getchar()、getche()、getch():这三个

配置struts.xml自动提示功能

本节讲解如何设置struts.xml自动提示功能。 在开发过程中如果可以上网,struts.xml会自动缓存dtd,提供提示功能,方便代码编写。如果不能够上网,则需要手动配置本地dtd,这样才能够使

C语言希尔排序算法

用希尔排序法对一组数据由小到大进行排序,数据分别为69、56、12、136、3、55、46、99、88、25。 实现过程: (1)自定义函数shsort(),实现希尔排序。 (2)main()函数

Go语言函数的底层实现

基于堆栈式的程序执行模型决定了函数是语言的一个核心元素,分析Go语言函数的底层实现,对理解整个程序的执行过程有很大的帮助,研究底层实现有两种办法,一种是看语言编译器源码,分析其对函数的各个特性的处理逻

Python字典推导式

Python中,使用字典推导式可以借助列表、元组、字典、集合以及range区间,快速生成符合需求的字典。 字典推导式的语法格式如下: {表达式for迭代变量in可迭代对象[if条件表达式]} 其中

Django模板加载与响应

在前文章节《Django模板系统》中,我们对Django的模板系统有了初步的认识,在本章我们将重点讲解Django的模板语言。 Djano的模板系统将Python代码与HTML代码解耦,动态地生成H

Spring queryForMap方法:查询结果以Map集合保存

该方法用于获取单个查询结果的情况。 语法1 queryForMap(Stringsql) 参数说明: sql:执行的SQL查询语句。 返回值:查询结果的Map集合。 示例 本示例获取ID

MySQL修改root密码

在MySQL中,root用户拥有很高的权限,因此必须保证root用户密码的安全。修改root用户密码的方式有很多种,本节将介绍几种常用的修改root用户密码的方法。 使用mysqladmin命令在命

Dev C++下载地址和安装教程(图解)

DevC++是一款免费开源的C/C++IDE,内嵌GCC编译器(GCC编译器的Windows移植版),是NOI、NOIP等比赛的指定工具。DevC++的优点是体积小(只有几十兆)、安装卸载方便、学习成

外键约束的作用是什么?

外键是该表是另一个表之间联接的字段外键必须为另一个表中的主键外键的用途是确保数据的完整性。它通常包括以下几种:1、实体完整性,确保每个实体是唯一的(通过主键来实施)2、域完整性,确保属性值只从一套特定

淘宝美工要学什么软件?

淘宝应该是人们日常生活中,使用较多的一个购物平台,特别是对于女生来说,特定节日的折扣更是让她们对于淘宝这件事爱不释手。在姑娘们热衷于淘宝的时候,平台上各式各样令人眼花缭乱的同类型商品总会让她们不知如何

对象序列化控制输入输出

前面学习了如何控制基本数据的输入输出,本节主要讲解如何输入输出对象数据。对象数据是很复杂的,我们可以利用对象序列化来实现。 对象序列化是什么 对象序列化(Serialize)指将一个Java对象写入