ssm框架原理是:將Spring、SpringMVC、MyBatis整合在一起,作為資料來源較簡單的web專案的框架。流程是:Handler Mapping根據請求找到對應的Handler,呼叫業務邏輯進行處理,然後進行視圖解析即可。
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;
ViewResloverovercherSerViewvlet;
DispatcherServlet對View進行渲染(將模型資料填入視圖中);
DispatcherServlet響應用戶,View將結果顯示在客戶端。
流程大致如下圖:
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中文網其他相關文章!

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

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

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

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

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

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

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

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

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver Mac版
視覺化網頁開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),