一、前言

SM框架是标准的MVC模式,将整个系统划分为四层:View层,Controller层,Service层,Dao层

SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。

Spring运用IOC和AOP思想实现业务对象管理

Spring MVC主要负责请求的转发和视图管理

Mybatis封装JDBC作为数据对象的持久化引擎

二、来自百度百科介绍:

Spring

  Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
  Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。
PS:IoC理解:https://baike.baidu.com/item/%E6%8E%A7%E5%88%B6%E5%8F%8D%E8%BD%AC/1158025?fr=aladdin

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框架基本原理的更多相关文章

  1. 【SSM框架】Spring + Springmvc + Mybatis 基本框架搭建集成教程

    本文将讲解SSM框架的基本搭建集成,并有一个简单demo案例 说明:1.本文暂未使用maven集成,jar包需要手动导入. 2.本文为基础教程,大神切勿见笑. 3.如果对您学习有帮助,欢迎各种转载,注 ...

  2. java web后台开发SSM框架(Spring+SpringMVC+MyBaitis)搭建与优化

    一.ssm框架搭建 1.1创建项目 新建项目后规划好各层的包. 1.2导入包 搭建SSM框架所需包百度云链接:http://pan.baidu.com/s/1cvKjL0 1.3整合spring与my ...

  3. JavaEE学习文章汇总-ssm框架

    Spring-SpringMVC-Mybatis 1:Maven创建webapp项目 Maven 下的spring框架(一创建项目) 2:mybatis3 入门教程 mybatis实战教程(mybat ...

  4. SSM框架总结(1)

    ----------------------20170106-------------------------------------- 1.mabatis.genertor中自动生成文件,需要在ge ...

  5. 【SSM】Eclipse使用Maven创建Web项目+整合SSM框架

    自己接触ssm框架有一段时间了,从最早的接触新版ITOO项目的(SSM/H+Dobbu zk),再到自己近期来学习到的<淘淘商城>一个ssm框架的电商项目.用过,但是还真的没有自己搭建过, ...

  6. SSM框架整合首只拦路虎——Eclipse新建Maven Project界面select an archetype 空白

    首先给大家说,本篇博客没有技术价值,纯属个人学习总结,权当给大家添加一乐.事件如有雷同,纯属巧合,莫怪! 前一段时间一直在看<淘淘商城>这个教程,里面讲的是SSM框架的一个电商项目.这不是 ...

  7. SSM框架-----------SpringMVC+Spring+Mybatis框架整合详细教程

    1.基本概念 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One  ...

  8. SSM框架的整合思路&功能实现

    这是我第一篇博客,关于SSM框架的整合思路以及简单功能实现. 首先,最近刚刚学习Spring+SpringMVC+Mybatis,在开发时遇到形形色色的问题,周遭人也为我提供了一些思路,我会一点点整理 ...

  9. [JSP]Maven+SSM框架(Spring+SpringMVC+MyBatis) - Hello World

    来源:http://blog.csdn.net/zhshulin/article/details/37956105?utm_source=tuicool&utm_medium=referral ...

  10. Maven+SSM框架实现简单的增删改查

    Spring介绍: spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情.然而, Spring的用途不仅限于服务器端的开发.从简单性.可测试性和松耦合的角度而言,任何Ja ...

随机推荐

  1. jdbc封装工具类(无连接池)

    package com.huang; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepar ...

  2. The Semantics of Constructors——2.3 程序转化语意学

    2.3 程序转化语意学 #include "X.h" X foo() { X xx; return xx; } 一个人可能会对代码做出以下假设: 每次 foo()被调用,就传回 x ...

  3. oracle之如何获取执行计划方法

    1.什么是执行计划 为了执行sql语句,Oracle在内部必须实现许多步骤,这些步骤可能是从数据库中物理检索数据行,或者用某种方法来准备数据行等,接着Oracle会按照一定的顺序一次执行这些步骤,最后 ...

  4. Ubuntu 18.04 安装基本应用

    Ubuntu 谷歌浏览器下载:第一步打开终端,在终端输入下载命令wget https://dl.google.com/linux/direct/google-chrome-stable_current ...

  5. 初始化centos环境脚本

    #! /bin/bashecho "java环境初始化开始"#功能描述: Centos8.5系统自动初始化脚本#自动配置:IP地址\Yum源\docer\docker-compos ...

  6. 《TensorFlow+Keras自然语言处理实战》图书介绍

    #好书推荐##好书奇遇季#<TensorFlow+Keras自然语言处理实战>.当当京东天猫均有发售. https://item.jd.com/12788707.html 文后有本书配套源 ...

  7. Spring Boot Actuator未授权漏洞

    Actuator 是 Spring Boot 提供的服务监控和管理中间件.当 Spring Boot 应用程序运行时,它会自动将多个端点注册到路由进程中.由于对这些端点的错误配置,就有可能导致一些系统 ...

  8. 关于Java的惰性求值

    最近在学scala的时候,函数传参可以是传名参数,或者传值参数 1.Scala中的传名参数是什么意思?lazy关键字有什么作用? Scala官方文档的定义是:传名参数 仅在被使用时触发实际参数的求值运 ...

  9. spring-cloud-alibaba-dubbo踩坑记

    在https://start.aliyun.com/bootstrap.html下载了示例程序,用的版本如下: spring-boot:2.3.7.RELEASE spring-cloud-aliba ...

  10. vue中常用的插件

    1. wangeditor 富文本编辑器,https://www.wangeditor.com/