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方法...