3.1 Spring MVC概述

1. MVC概念

MVC是一種編程思想,它將應用分為模型(Model)、視圖(View)、控制器(Controller)三個層次,這三部分以最低的耦合進行協同工作,從而提高應用的可擴展性及可維護性。

  • 模型(Model)

模型層主要包括實體類Bean(存儲業務數據的類,如Student)和處理業務邏輯的Bean(如Service、Dao)。

  • 視圖(View)

用戶與應用程序交互的、展示數據的界面,例如工程中的html頁面。

  • 控制器(Controller)

工程中的servlet,接收視圖層發出的請求,將請求轉給模型,響應用戶請求渲染視圖。

2. Spring MVC概念

Spring MVC全稱Spring Web MVC,通常稱為Spring MVC,是基于MVC思想的應用框架,它是Spring提供的一個實現了Web MVC設計模式的輕量級Web框架。

3. Spring MVC核心組件

Spring MVC框架主要有前端控制器、處理器映射器、處理器適配器、處理器、視圖解析器等組成。

  • 前端控制器DispatcherServlet

用于接收用戶請求、轉發用戶請求、響應結果, DispatcherServlet是整個流程控制的中心,由它調用其他組件處理用戶請求,分發到具體的對應Controller,從而獲取到需要的業務數據Model,Model再通過DispatcherServlet傳遞給View完成頁面呈現。

  • 處理器映射器HandlerMapping

映射URL到處理器,根據請求的URL找到對應的Handler。

  • 處理器適配器HandlerAdapter

將各種Controller適配成DispatcherServlet可以執行的Handler。

  • 處理器Handler

開發者編寫的業務邏輯,Controller-Service業務。

  • 視圖解析器ViewResolver

進行視圖的解析,負責將處理結果生成View視圖。

4. Spring MVC工作原理

  • 客戶端發送請求到前端控制器DispatcherServlet;

  • 由DispatcherServlet控制器尋找一個或多個HandlerMapping,找到處理請求的Controller;

  • DispatcherServlet將請求提交到Controller;

  • Controller調用業務邏輯處理后,返回ModelAndView;

  • DispatcherServlet請求視圖解析器ViewResoler,找到ModelAndView指定的視圖;

  • 視圖負責將結果顯示到客戶端。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/34818.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/34818.shtml
英文地址,請注明出處:http://en.pswp.cn/news/34818.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ opencv:視頻讀取、變換顏色風格、保存

1. 相關知識點 VideoCapture&#xff1b; applyColorMap&#xff1b; VideoWriter&#xff1b; 2. 代碼 編寫代碼main.cpp: #include<iostream> #include "opencv2/opencv.hpp" #include "opencv2/imgproc.hpp" #include "opencv2/highgu…

解開謎團:為什么紅黑樹勝過AVL樹?

為什么紅黑樹勝過AVL樹 博主簡介一、引言1.1、紅黑樹和AVL樹簡介1.2、紅黑樹在某些方面優于AVL樹 二、紅黑樹和AVL樹的基本原理2.1、紅黑樹的定義和性質2.2、AVL樹的定義和性質2.3、對比兩種樹結構的特點 三、插入和刪除操作的復雜性比較3.1、紅黑樹的插入操作和平衡性維護3.2、…

冪次方(c++題解)

題目描述 任何一個正整數都可以用 22 的冪次方表示。例如 1372^72^32^0。 同時約定方次用括號來表示&#xff0c;即 a^b 可表示為 a(b)。 由此可知&#xff0c;137137 可表示為 2(7)2(3)2(0) 進一步&#xff1a; 7 2^222^0 ( 2^121 用 2 表示)&#xff0c;并且 322^0。 所…

Spring Boot 重啟命令

Spring Boot 重啟命令 本文描述了一個重啟Spring Boot命令執行過程和示例 本文利用kill -9 關閉進程&#xff0c;不優雅&#xff0c;會突然中斷程序&#xff0c;可能導致數據和邏輯異常 搜索微信小程序【亞特技術】在資源中搜索【優雅】可得到Spring Boot如何優化重啟 1. 過…

【Bert101】變壓器模型背后的復雜數學【02/4】

一、說明 眾所周知&#xff0c;變壓器架構是自然語言處理&#xff08;NLP&#xff09;領域的突破。它克服了 seq-to-seq 模型&#xff08;如 RNN 等&#xff09;無法捕獲文本中的長期依賴性的局限性。變壓器架構被證明是革命性架構&#xff08;如 BERT、GPT 和 T5 及其變體&…

【陣列信號處理】空間匹配濾波器、錐形/非錐形最佳波束成形器、樣本矩陣反演 (SMI) 研究(Matlab代碼實現)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;歡迎來到本博客????&#x1f4a5;&#x1f4a5; &#x1f3c6;博主優勢&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客內容盡量做到思維縝密&#xff0c;邏輯清晰&#xff0c;為了方便讀者。 ??座右銘&a…

九耶丨閣瑞鈦倫特-產品經理面試題

在產品上線后&#xff0c;會著重觀察6類指標&#xff1a; 1、活躍用戶指標 衡量APP用戶規模的指標&#xff0c;一個產品是否成功&#xff0c;如果只看一個指標&#xff0c;那么這個指標一定是活躍用戶數。 日活(DAU)&#xff1a;一天內日均活躍設備數(去重&#xff0c;每個公…

關于使用pycharm遇到只能使用unittest方式運行,無法直接選擇Run

相信大家可能都遇到過這個問題&#xff0c;使用pycharm直接運行腳本的時候&#xff0c;只能選擇unittest的方式&#xff0c;能愁死個人 經過幾次各種嘗試無果之后&#xff0c;博主就放棄死磕了&#xff0c;原諒博主是個菜鳥 后來遇到這樣的問題&#xff0c;往往也就直接使用cm…

Python爬蟲-抓取的目標數據為#x開頭,怎么解決?

前言 本文是該專欄的第4篇,后面會持續分享python爬蟲案例干貨,記得關注。 在做爬蟲項目的時候,有時候抓取的平臺目標數據為&#x開頭,如下圖所示: 瀏覽器顯示的正常數據,但通過爬蟲協議獲取到的網頁源碼數據卻是以&#x開頭的隱藏數據,遇到這種情況,爬蟲需要怎么處…

【Linux從入門到精通】文件I/O操作(C語言vs系統調用)

文章目錄 一、C語言的文件IO相關函數操作 1、1 fopen與fclose 1、2 fwrite 1、3 fprintf與fscanf 1、4 fgets與fputs 二、系統調用相關接口 2、1 open與close 2、2 write和read 三、簡易模擬實現cat指令 四、總結 &#x1f64b;?♂? 作者&#xff1a;Ggggggtm &#x1f64b;?…

Golang bitset 基本使用

安裝&#xff1a; go get github.com/bits-and-blooms/bitset下面代碼把fmtx換成fmt就行 //------------基本操作------------//構建一個64bit長度的bitsetb : bitset.New(64)//放入一個數b.Set(10)fmtx.Println("add-10&#xff1a;", b.DumpAsBits()) // 0000000…

針對英特爾酷睿 CPU 優化,Canonical 發布 Ubuntu 實時內核

導讀Canonical 今天宣布針對支持時序協調運算&#xff08;TCC&#xff09;和時間敏感網絡&#xff08;IEEE TSN&#xff09;的英特爾酷睿處理器&#xff0c;推出優化版實時 Ubuntu 內核。 Canonical 于今年 2 月宣布&#xff0c;為購買 Ubuntu Pro 訂閱&#xff0c;使用代號為 …

OPENCV C++(七)霍夫線檢測+找出輪廓和外接矩形+改進旋轉

霍夫線檢測 vector<Vec2f> lines1;HoughLines(canny_mat, lines1, 1, CV_PI / 180.0,90 );//45可以檢測里面兩條線 80檢測出外邊兩條線 定義存放輸出線的向量 此向量輸出有<距離&#xff0c;角度> 因為檢測的原理就是在變換霍夫空間里面去檢測的&#xff0c;這里可…

ESP8266(RTOS SDK)內嵌網頁以實現WEB配網以及數據交互

【本文發布于https://blog.csdn.net/Stack_/article/details/131997098&#xff0c;未經允許不得轉載&#xff0c;轉載須注明出處】 1、執行make menuconfig&#xff0c;將http頭由512改為更大的值&#xff0c;否則用電腦瀏覽器訪問正常&#xff0c;但用手機瀏覽器訪問會因為ht…

基于weka手工實現K-means

一、K-means聚類算法 K均值聚類&#xff08;K-means clustering&#xff09;是一種常見的無監督學習算法&#xff0c;用于將數據集中的樣本劃分為K個不同的類別或簇。它通過最小化樣本點與所屬簇中心點之間的距離來確定最佳的簇劃分。 K均值聚類的基本思想如下&#xff1a; …

【快應用】list組件如何區分滑動的方向?

【關鍵詞】 list組件、滑動方向、scroll 【問題背景】 有cp反饋list這個組件在使用的時候&#xff0c;不知道如何區分它是上滑還是下滑。 【問題分析】 list組件除了通用事件之外&#xff0c;還提供了scroll、scrollbottom、scrolltop、scrollend、scrolltouchup事件&#x…

UIE在實體識別和關系抽取上的實踐

近期有做信息抽取的需求&#xff0c;UIE在信息抽取方面效果不錯。 模型準備 huggingface上下載UIE模型&#xff1a;PaddlePaddle/uie-base Hugging Face 點擊“Clone Repository”&#xff0c;確定git clone的鏈接 其中包含大文件&#xff0c;需要在windows安裝git-lfs&am…

九、多態(1)

本章概要 向上轉型回顧 忘掉對象類型 轉機 方法調用綁定產生正確的行為可擴展性陷阱&#xff1a;“重寫”私有方法陷阱&#xff1a;屬性與靜態方法 多態是面向對象編程語言中&#xff0c;繼數據抽象和繼承之外的第三個重要特性。 多態提供了另一個維度的接口與實現分離&…

C++_模板初階

在面向對象中&#xff0c;我們可以使用重載來實現多態。 但是問題在于&#xff0c;重載的函數僅僅是類型不同&#xff0c;代碼復用率比較低&#xff0c;只要有新的類型出現時&#xff0c;就要增加對應的函數&#xff1b;另一方面它的代碼可維護性比較低&#xff0c;一個出錯可…

java實現文件的下載

系統日志的獲取不可能每次都登錄服務器&#xff0c;所以在頁面上能夠下載系統運行的日志是必須的 如何來實現日志的下載&#xff0c;這樣的一個功能 前端我們用到的是window.open(...)這樣可以發送一個get請求到后臺 后臺接收到get請求之后&#xff0c;如何實現對文件的下載 R…