Spring MVC原始碼剖析一(優勢及核心思想)

2021-10-19 12:25:58 字數 1991 閱讀 5904

一、概述

mvc全稱為model view controller,是一種用於建立web應用程式表現層的設計模式。今天我們從原始碼的角度介紹一下spring mvc。

二、專案構建

我們再看下之前的spring框架怎麼進行訪問的……如下圖

該訪問即為最初的訪問方式,通過實現httpservlet,重寫doget和dopost方法來實現訪問,這種方式每乙個請求都要有乙個具體的類去實現httpservlet,重寫裡面的dopost和doget方法做具體的業務處理……

通過這兩種方式的比較,我們可以很輕易的看出spring mvc解放了生產力,讓開發者可以花更少的時間去實現更多的價值。那麼它究竟是如何實現的呢?我們接下來通過閱讀原始碼的方式來了解一下它的執行原理。

三、原始碼剖析

同樣和解析spring框架時的做法一樣,我們先觀察web.xml配置檔案

我們配置了註解掃瞄和視**析器,了解完配置檔案後,我們來解析下dispatcherservlet這個類,其實該類的核心是doservice方法如下圖

doservice方法的核心又是dodispatch方法,我們對該方法進行一下解析

​ // 獲取當前請求的處理程式介面卡。

​ // 處理 last-modified 請求頭

string method = request.getmethod();

boolean isget = "get".equals(method);

if (isget || "head".equals(method))

}​ return;

}​        // 實際處理器處理請求,返回 modelandview 物件

​ if (asyncmanager.isconcurrenthandlingstarted())

// 對結果的檢視物件進行處理

}catch (exception ex)

catch (throwable err)

// 跳轉頁面渲染檢視

}catch (exception ex)

catch (throwable err)

finally

}else }}

}spring mvc的核心思想全部在這個方法裡面,先通過掃瞄獲取@controller標記的類,即handler,沒找到則404報錯,通過介面卡找到能處理該請求的處理器,然後實際請求返回modelandview物件,最後對該物件進行處理,渲染,然後跳轉到該頁面。

四、小結

本人因所學有限,如有錯誤之處,望請各位指正!

原始碼剖析 Hashtable 原始碼剖析

hashtable同樣是基於雜湊表實現的,同樣每個元素都是key value對,其內部也是通過單鏈表解決衝突問題,容量不足 超過了閾值 時,同樣會自動增長。hashtable也是jdk1.0引入的類,是執行緒安全的,能用於多執行緒環境中。hashtable同樣實現了serializable介面,它支...

GDAL原始碼剖析(一)

一 gdal簡介 gdal官方 本文章中的基本內容都是參照官網中的資訊,如有錯誤或者與官網中的內容衝突,以官網中的為正確。在開始文章之前,我想先提出幾個問題,什麼是gdal?gdal能做什麼?gdal怎麼使用?gdal內部結構是怎麼組織的?gdal提供的演算法原理是什麼?對於上面的幾個問題,希望大家...

GDAL原始碼剖析(一)

一 gdal簡介 在開始文章之前,我想先提出幾個問題,什麼是gdal?gdal能做什麼?gdal怎麼使用?gdal內部結構是怎麼組織的?gdal提供的演算法原理是什麼?對於上面的幾個問題,希望大家看完該系列文章後能對上面的幾個問題少點疑惑,希望能對感興趣的童鞋們有所幫助。本人不才,文章中難免會出現問...