首页 常见问题 ssm框架原理及流程是什么

ssm框架原理及流程是什么

Jul 18, 2020 pm 05:49 PM
流程

ssm框架原理是:将Spring、SpringMVC、MyBatis整合在一起,作为数据源较简单的web项目的框架。流程是:Handler Mapping根据请求找到相应的Handler,调用业务逻辑进行处理,然后进行视图解析即可。

ssm框架原理及流程是什么

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

SpringMVC
SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。
SpringMVC框架运行流程

用户将请求发送至DispatcherServlet;
DispatcherServlet收到请求查询一个或多个HandlerMapping,找到处理该请求的Handler;
HandlerMapping根据请求找到相应的Handler,生成Handler对象返回给DispatcherServlet;
DispatcherServlet通过HandlerAdapter调用Handler;
Handler(Controller)调用业务逻辑(service)进行处理,处理完成返回ModelAndView;
HandlerAdapter将Handler处理结果ModelAndView返回给DispatcherServlet;
DispatcherServlet查询一个或多个ViewReslover(视图解析器),将ModelAndView传给指定的ViewReslover;
ViewReslover解析后返回具体View给DispatcherServlet;
DispatcherServlet对View进行渲染(将模型数据填充至视图中);
DispatcherServlet响应用户,View将结果显示在客户端。
流程大致如下图:

3.jpg

DispatcherServlet是整个Spring MVC的核心,它负责接收HTTP请求,组织协调Spring MVC的各个组成部分,其主要的工作有以下3项:
a. 截获符合特定格式的URL请求;
b. 初始化DispatcherServlet上下文对应的WebApplicationContext,并将其与业务层、持久层的WebApplicationContext建立关联;
c. 初始化Spring MVC的各个组件,并配装到DispatcherServlet中。
Spring
Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
Spring的核心思想是IOC(控制反转),即不再需要程序员去显式地new一个对象,而是让Spring框架帮你来完成这一切。IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。Spring的目的就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的(Spring根据这些配置,内部通过反射去动态的组装对象)。
IOC容器代表的就是org.springframework.beans包中的BeanFactory接口,其提供了IOC容器的基本功能;而org.springframework.context包下的ApplicationContext接口扩展了BeanFactory,还提供了与Spring AOP集成、国际化处理、事件传播及提供不同层次的context实现。
简单说,BeanFactory提供了IOC容器最基本功能,而ApplicationContext则增加了更多支持企业级功能支持。ApplicationContext完全继承BeanFactory,因而BeanFactory所具有的语义也适用于ApplicationContext。
Spring运行流程

加载配置文件,ApplicationContext接口。配置文件中的bean的信息被加载在HashMap中,一个bean通常包括,id,class,property等,bean的id对应HashMap中的key,HashMap中的value就是bean。
调用getBean方法,getBean是用来获取applicationContext.xml文件里bean的,参数是bean的id。一般情况都会强制转换成对应的业务层(接口)。
调用业务层(接口实现)的方法。
bean中的内容是怎么注入进去的?简单来讲,就是在实例化一个bean时,实际上就实例化了类,它通过反射调用类中set方法将事先保存在HashMap中的类属性注入到类中。这样就回到了我们Java最原始的地方,对象.属性,对象.方法。
Mybatis
Mybatis是对jdbc的封装,它让数据库底层操作变的透明。Mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
Mybatis通过MapperProxy动态代理dao,也就是说,当执行自己写的dao里面的方法的时候,其实是对应的MapperProxy在代理。
Mybatis运行原理

加载配置文件
将SQL的配置信息加载成为一个个MappedStatement对象,包括了参数映射配置,执行的SQL语句,结果映射配置,存储在内存中。
SQL解析
当API接口层接收到调用请求时,会接收到传入SQL的ID和传入对象(可以是Map/JavaBean或者基本数据类型),Mybatis会根据SQL的ID找到对应的MappedStatement,然后根据传入的参数对象MappedStatement进行解析,解析后可以得到最终要执行的SQL语句和参数。
SQL执行
将最终得到的SQL和参数拿到数据库执行,得到操作数据库的结果。
结果映射
将操作数据库的结果按照映射的配置进行转换,可以转换成HashMap/JavaBean或者基本数据类型,并将最终的结果返回。

 

以上是ssm框架原理及流程是什么的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

怎么开多个头条账号?申请头条号小号的流程是什么? 怎么开多个头条账号?申请头条号小号的流程是什么? Mar 22, 2024 am 11:00 AM

随着移动互联网的普及,今日头条已经成为我国最受欢迎的新闻资讯平台之一。许多用户希望在头条平台上拥有多个账号,以满足不同的需求。那么,如何开多个头条账号呢?本文将详细介绍开设多个头条账号的方法和申请流程。一、怎么开多个头条账号?开设多个头条账号的方法如下:在头条平台上,用户可以通过不同的手机号码注册账号。每个手机号只能注册一个头条账号,这意味着用户可以利用多个手机号注册多个账号。2.邮箱注册:使用不同的邮箱地址注册头条账号。与手机号码注册类似,每个邮箱地址也可以注册一个头条账号。3.第三方账号登录

抖音睡眠主播有收益嘛?睡眠直播的具体流程有哪些? 抖音睡眠主播有收益嘛?睡眠直播的具体流程有哪些? Mar 21, 2024 pm 04:41 PM

在当今这个快节奏的社会,睡眠质量问题困扰着越来越多的人。为了改善用户的睡眠质量,抖音平台上出现了一群特殊的睡眠主播。他们通过直播与用户互动,分享睡眠技巧,提供放松的音乐和声音,帮助观众安然入睡。那么,这些睡眠主播是否有收益呢?本文将围绕这一问题展开探讨。一、抖音睡眠主播有收益嘛?抖音睡眠主播确实能够获得一定的收益。首先,他们可以通过直播间的打赏功能获得礼物和转账,这些收益取决于他们的粉丝数量和观众满意度。其次,抖音平台会根据直播的观看量、点赞量、分享量等数据,给予主播一定的分成。一些睡眠主播还会

崩坏星穹铁道行过死荫之地任务攻略流程 崩坏星穹铁道行过死荫之地任务攻略流程 Mar 28, 2024 pm 01:10 PM

崩坏星穹铁道行过死荫之地怎么做?行过死荫之地是主线任务【鸽群中的猫】其中一环,也是主线的最后阶段,下面小编带来崩坏星穹铁道行过死荫之地任务详解,感兴趣的小伙伴们快来看看吧。1.过完上一阶段剧情后,会自动传送到下图位置,和三月七对话后进入副本,记得组好队2.备用方案是要打【石心十人】诡异砂金,队伍四个角色战术和终结技最好都是群攻,最好带上盾和奶,这个【石心十人】诡异砂金不好打,摇骰子的时候,如果你的点数大于砂金就不会被打,并且结束后回满终结技能量,小于就会被打,所以尽量带群攻角色打点数。在boss

php-fpm请求处理流程详解与优化策略 php-fpm请求处理流程详解与优化策略 Jul 07, 2023 pm 01:52 PM

php-fpm请求处理流程详解与优化策略一、引言在Web应用开发中,PHP是一种非常流行的服务器端脚本语言。而php-fpm(FastCGIProcessManager)则是PHP的一种管理器,用于处理PHP请求。本文将详细介绍php-fpm的请求处理流程,并探讨如何优化php-fpm,提升Web应用的性能。二、php-fpm请求处理流程客户端发起请求当

崩坏星穹铁道所有悲伤的故事任务攻略流程 崩坏星穹铁道所有悲伤的故事任务攻略流程 Mar 28, 2024 pm 01:26 PM

崩坏星穹铁道所有悲伤的故事怎么做?所有悲伤的故事是主线任务【鸽群中的猫】其中一环,此阶段流程比较长,下面小编带来崩坏星穹铁道所有悲伤的故事任务详解,各位朋友们来看看吧。1.完成前一阶段之后,会自动传送到第2个新地图【克劳克影视乐园】,一路追踪任务从1【弹珠机】去2位置跟着第3位角色发挥,完成剧情后,前往第4位位置和小孩对话,完成小游戏【速度与坚果】,类似天天酷跑的小游戏很简单。3.接着追踪任务从下图1位置【弹珠机】飞到2位置4.到下图位置后,需要走迷宫,从左边进去后,一直靠右走即可到达1任务点5

Vue开发经验分享:优化开发流程和工作效率的经验 Vue开发经验分享:优化开发流程和工作效率的经验 Nov 22, 2023 am 10:53 AM

Vue.js是一种流行的JavaScript框架,用于构建用户界面和单页面应用程序。其简洁的语法、灵活性和强大的功能使得它成为了许多开发者的首选。在最近的项目开发中,我和我的团队积累了一些优化开发流程和工作效率的经验,特此分享给大家。首先,作为Vue.js开发的基础,我们要充分了解Vue.js的生态系统和核心概念。Vue.js的核心概念包括数据驱动、组件系统

Java语言中的软件开发流程介绍 Java语言中的软件开发流程介绍 Jun 10, 2023 am 11:07 AM

Java语言是一种使用广泛的面向对象编程语言,被广泛应用于企业级软件开发中。在Java语言中,软件开发流程是一个非常重要的部分,它能够帮助开发团队更加高效地完成软件开发任务。本文将会介绍Java语言中的软件开发流程,并探讨其各个阶段所要完成的任务。需求分析阶段软件开发的第一步是进行需求分析,该阶段旨在确定软件需求。在Java语言中的需求分析阶段,开发团队需要

使用PHP构建大数据应用的基本流程 使用PHP构建大数据应用的基本流程 May 11, 2023 pm 04:58 PM

近年来,随着数据量的爆炸式增长,大数据应用的需求越来越大。PHP作为一门广受欢迎的编程语言,被广泛应用于Web开发中,同时也可以用于构建大数据应用。本文将介绍使用PHP构建大数据应用的基本流程,包括数据处理、存储与分析三个方面。一、数据处理数据处理是大数据应用的第一步,其目的是将数据从各个来源采集过来,并进行初步处理和清洗,以便存储和分析使用。PHP可以使用