ssm框架基本原理
一、前言
SM框架是标准的MVC模式,将整个系统划分为四层:View层,Controller层,Service层,Dao层
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。
Spring运用IOC和AOP思想实现业务对象管理
Spring MVC主要负责请求的转发和视图管理
Mybatis封装JDBC作为数据对象的持久化引擎
二、来自百度百科介绍:
Spring
Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。
SpringMVC
SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
Mybatis
mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
整合
三、大白话
1、Spring
在java里面,要用类里面的方法,就需要先有类的对象,而类的对象就是new出来
Spring就是用来简化这一步操作的框架
Spring是一个容器,里面装了很多Bean即实体对象。之后要用到这些对象对应的类的方法,可以直接从容器里面拿,就不用再去new一个了
2、SpringMVC
首先理解好servlet是什么?
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。参考下:https://www.runoob.com/servlet/servlet-intro.html
反正就是用来处理业务逻辑层的一个东西,能够处理在前端页面发起的请求
而SpringMVC也是这样一个作用
SpringMVC是一个控制器+视图分发器,处理业务逻辑层,最接近用户的东西。
当用户在页面做了某个操作,理解为发起一个请求,这个请求会被送到SpringMVC这个控制器,根据对于业务逻辑的理解来决定后端要做出什么操作(比如要从数据库增删改查还是展示什么到前端页面),相当于servlet的功能
举一个简单的例子,我在浏览器输入了一窜网址,然后回车。这个过程浏览器将我的网址从客户端(C)输入通过TCP/UDP等传输到了服务器(S),然后Tomcat根据我输入的网址判断它是属于哪个Servlet,并且从这个网址上截取某些参数给选中的Servlet。
Servlet 是S与C之间的中间层,会根据拿到的参数判断要采取什么操作,这里它通过判断知道我是要打开一个网站(这里好像就是mappper到对应的controller)。这里就是业务逻辑层,这是我们自己写的代码。接下来就由视图分发器给我们返回我们想要的网址到C上
到此为止,Servlet是作为一个控制器,起到了拦截用户请求并执行具体对应请求所执行的操作(专业点说就是将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作)。在SpringMVC中,它的核心Servlet即DispatcherServlet。这个框架其实就是整合了Servlet该起的作用。
3、MyBatis
正常来说,我们写java程序的时候,与数据库交互式这么写。先写代码connection链接数据库,然后写sql语句被调用到数据库中执行。具体与数据库的交互其实就是增删改查
而现在MyBatis就是对这些增删改查进行封装,即对jdbc的封装,这是一个数据库框架。我们配置好MyBatics后,就可以调用了,不用再去写代码考虑怎么连接数据库,怎么执行sql语句
上面专业的解释说,mybatis的操作都是围绕一个sqlSessionFactory实例展开的。sqlSessionFactory相当于用户和数据库的桥梁,它就是一个sql工厂,了解工厂模式的我们知道,工厂里面会有很多个sqlSession,当我们拿到一个sqlSession,然后才执行sql命令。
我们用sql语句写的表,每一个表对应一个Mapper.xml文件,具体的增删改查写在Mapper.xml文件里面,它被调用的时候帮我们执行sql语句和返回数据,注意sql语句是要我们自己写的。
与它相似又常用的框架还有Hibernate,这里就不说了。
4、整合
上面说:页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。
扩充下我的理解:页面发送请求给控制器(控制器,进入SpringMVC范围了),控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互(就是MyBatis起作用了),后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据(视图分发器,是SpringMVC起作用)。这个过程中,Spring作为一个容器,将整个过程囊括进去了。
ssm框架基本原理的更多相关文章
- 【SSM框架】Spring + Springmvc + Mybatis 基本框架搭建集成教程
本文将讲解SSM框架的基本搭建集成,并有一个简单demo案例 说明:1.本文暂未使用maven集成,jar包需要手动导入. 2.本文为基础教程,大神切勿见笑. 3.如果对您学习有帮助,欢迎各种转载,注 ...
- java web后台开发SSM框架(Spring+SpringMVC+MyBaitis)搭建与优化
一.ssm框架搭建 1.1创建项目 新建项目后规划好各层的包. 1.2导入包 搭建SSM框架所需包百度云链接:http://pan.baidu.com/s/1cvKjL0 1.3整合spring与my ...
- JavaEE学习文章汇总-ssm框架
Spring-SpringMVC-Mybatis 1:Maven创建webapp项目 Maven 下的spring框架(一创建项目) 2:mybatis3 入门教程 mybatis实战教程(mybat ...
- SSM框架总结(1)
----------------------20170106-------------------------------------- 1.mabatis.genertor中自动生成文件,需要在ge ...
- 【SSM】Eclipse使用Maven创建Web项目+整合SSM框架
自己接触ssm框架有一段时间了,从最早的接触新版ITOO项目的(SSM/H+Dobbu zk),再到自己近期来学习到的<淘淘商城>一个ssm框架的电商项目.用过,但是还真的没有自己搭建过, ...
- SSM框架整合首只拦路虎——Eclipse新建Maven Project界面select an archetype 空白
首先给大家说,本篇博客没有技术价值,纯属个人学习总结,权当给大家添加一乐.事件如有雷同,纯属巧合,莫怪! 前一段时间一直在看<淘淘商城>这个教程,里面讲的是SSM框架的一个电商项目.这不是 ...
- SSM框架-----------SpringMVC+Spring+Mybatis框架整合详细教程
1.基本概念 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One ...
- SSM框架的整合思路&功能实现
这是我第一篇博客,关于SSM框架的整合思路以及简单功能实现. 首先,最近刚刚学习Spring+SpringMVC+Mybatis,在开发时遇到形形色色的问题,周遭人也为我提供了一些思路,我会一点点整理 ...
- [JSP]Maven+SSM框架(Spring+SpringMVC+MyBatis) - Hello World
来源:http://blog.csdn.net/zhshulin/article/details/37956105?utm_source=tuicool&utm_medium=referral ...
- Maven+SSM框架实现简单的增删改查
Spring介绍: spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情.然而, Spring的用途不仅限于服务器端的开发.从简单性.可测试性和松耦合的角度而言,任何Ja ...
随机推荐
- Mybatis动态SQL语句大全
读完这篇文章里你能收获到 Mybatis动态SQL语句大全 Mybatis中如何定义变量 Mybatis中如何提取公共的SQL片段 1. If 语句 需求:根据作者名字和博客名字来查询博客!如果作者名 ...
- java中post发送json格式数据
/** * 发送post请求 * @param URL 数据发送地址 * @param json json格式数据内容 * @param headParams 请求头内容 * @return 请求结果 ...
- Jenkins自动化部署(linux环境)---构建任务
用jenkins创建一个构建任务 1.这里我代码仓库用的是码云(github也是一样的)输入仓库地址.因为仓库是私有的所以会有报错提示 这里要添加Credentials.就是你码云或者github账号 ...
- Python 数据结构及语法
Python 数据结构及语法 Python 数据结构及其接口方法 列表 lst = [] lst.sort() # 排序列表 lst.reverse() # 反转列表 lst.append() # 表 ...
- H5在(支付宝和微信环境)使用支付
首先是在支付宝浏览器环境 使用支付宝支付 参考链接 https://myjsapi.alipay.com/jsapi/native/trade-pay.html 支付宝订单字符串唤起支付 调用支 ...
- zabbix 使用小技巧
001.监控项指定时间执行 wd1-7h01m00 周一到周日,每天 01:00:00 执行一次 002.监控项某一段时间点每分钟执行一次 1-5,00:00-09:00 6-7,00:00-23:5 ...
- unity创建一个数组,让他随机生成一个东西之C#语言(有图教程)
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; ...
- FMC128-基于FMC 1路HD-SDI输入输出,1路复合视频输入输出子卡 工业图像输出 图像模拟源
FMC128-基于FMC 1路HD-SDI输入输出,1路复合视频输入输出子卡 一.板卡概述 FMC板卡包含1路HD-SDI 输入输出,1路复合视频输入输出,用于高清.标清相机的产品测试及智 ...
- VisualStudio2015使用C#.NET开发IOS程序时进行真机测试的设置参考
VS2015+Xamarin使用C#.NET开发跨平台APP已经完全可行了,对了WP和UWP程序,都是MS的,一定没有问题. 而对于ANDROID则是直接可以在VS中进行开发.部署到模拟器和真机,非常 ...
- MongoDB的启动与停止
1:启动和停止Mongodb 1)从命令行启动 执行mongod,启动MongoDB服务器,mongod有很多可配置的启动选项,可以使用mongod --help查看所有选项 -- ...