SpringMVC 原始碼分析

2021-10-19 01:15:36 字數 2568 閱讀 1358

springmvc之***

springmvc的引數匹配原始碼分析

使用 @modelattribute 進行引數注入

springmvc方法返回值詳解

原始碼流程

public

class

implements

}

@configuration

@componentscan

("com"

)@enableaspectjautoproxy

//@enablewebmvc //

public

class

extends

webmvcconfigurationsupport

/*配置 argamentresovel

*/@override

public

void

addargumentresolvers

(list

resolvers)

/*配置 返回body的 json 配置

*/@override

public

void

configuremessageconverters

(list

?>> converters)

}

public

void

addinterceptors

(interceptorregistry registry)

public

class

logininterceptor

extends

handlerinterceptoradapter

// 進入登入頁面,判斷session中是否有key,有的話重定向到首頁,否則進入登入介面

if(uri.

endswith

("/login/"

)|| uri.

endswith

("/login"))

else

}// 其他情況判斷session中是否有key,有的話繼續使用者的操作

if(request.

getsession()

!= null && request.

getsession()

.getattribute

("loginuser"

)!= null)

// 最後的情況就是進入登入頁面

response.

sendredirect

(request.

getcontextpath()

+"/login");

return

false;}

}

遍歷所有的***的prehandler 方法,如果返回false 解鎖return false。

針對返回值,具有下面這些處理器:都是實現了handlermethodreturnvaluehandler這個介面。

首先方法進入 dodispath。

gethandleradapter(): 根據你controller的型別去找乙個介面卡

handle() : 執行controller邏輯並且進行檢視裁決(判斷是要重定向還是**還是響應頁面)

setresponsestatus()設定responsestatus響應狀態碼 對標:@responsestatus註解

handlereturnvalue() 進行檢視裁決

() 重新封裝乙個modelandview物件

processdispatchresult():開始做檢視渲染

拿到檢視名稱 封裝乙個檢視物件 進行forward

SpringMVC原始碼分析 二

第九章 spring aop 原始碼解析 二 這一章來簡單的介紹一下springmvc的高階應用 過濾器 filter 對request請求起到過濾的作用,作用在servlet之前,如果配置為 可以對所有的資源訪問 servlet js css靜態資源等 進行過濾處理 interceptor 是sp...

Spring MVC 的原始碼分析 1

總結 外部容器通過 傳給spring mvc初始化,這個初始化我們是以分散重寫初始化邏輯進入spring ioc 初始化,然後在返回到spring mvc自己的上下文九大元件初始化 spring mvc 底層是設計原理是 前端控制模式 我們拿著總結和上面這張圖去看具體實現過程,不然在細節過程,我們很...

Spring MVC 的原始碼分析 2

spring mvc 如何在servlet容器中處理業務的?我們依次檢視原始碼中三個方法的具體內容 1 requestmethod.patch都包含那些列舉型別呢?public enum requestmethod 2 processrequest方法是如何進行分流的呢?3 當所有的method方法...