// 迴圈所有的handleradaoter通過supports判斷適合的handler,得到合適的handleradapter
handleradapter ha =
gethandleradapter
gethandler()
);// process last-modified header, if supported by the handler.
string method = request.
getmethod()
;boolean isget =
"get"
.equals
(method);if
(isget ||
"head"
.equals
(method))}
// ***的prehandler的方法呼叫,這裡會取出所有的***然後挨個執行
//如果返回false 會執行triggeraftercompletion方法,並結束dodispatch方法。if(
(processedrequest, response)
)// actually invoke the handler.
//真正controller的邏輯處理並返回檢視
mv = ha.
handle
gethandler()
);// 處理非同步通知的???
if(asyncmanager.
isconcurrenthandlingstarted()
)// 檢視是否返回了檢視,沒有的話 通過viewnametranslator 來獲取我們配置的預設檢視
(processedrequest, mv)
;//執行所有***的posthandle方法
(processedrequest, response, mv);}
catch
(exception ex)
catch
(throwable err)
//判斷是否有異常,如果controller存在,則呼叫***的aftercompletion方法
processdispatchresult;}
catch
(exception ex)
catch
(throwable err)
finally
}else}}
}這裡詳細描述gethandler過程
看一下gethandlerinternal方法
lookuphandler中會根據urlpath獲取對應的handler,匹配不到,會嘗試使用萬用字元匹配controller。萬用字元
buildpathexposinghandler方法將配置中對應***加入到執行鏈中,保證這些***可以有效的作用於目標物件。
緊接著獲取處理器介面卡gethandleradapter方法。
看一下******controllerhandleradapter類
servlet過濾器可以再servlet處理每個web請求的前後分別對它進行前置處理和後置處理。
springmvc允許通過處理攔截web請求,進行前置處理和後置處理。處理攔截是在spring的web應用程式上下文中配置的。因此它們可以利用各種容器特性,並引用容器中宣告的任何bean。
看一下render方法
再看一下createview方法
解析得到檢視時候就可以進一步處理跳轉邏輯。
DispatcherServlet學習筆記
chapter2 org.springframework.web.servlet.dispatcherservlet 1 dispatcherservlet主要用作職責排程工作,本身主要用於控制流程,主要職責如下 1 檔案上傳解析,如果請求型別是multipart將通過multipartresolv...
DispatcherServlet的原始碼和流程分析
1 自動配置dispatcherservlet和dispatcherservletregistry 2 註冊dispatcherservlet到servletcontext 3 初始化mvc的元件 handler執行完成後,向dispatcherservlet 返回乙個modelandview物件 ...
邏輯回歸 breast cancer 資料集處理
coding utf 8 import pandas as pd import numpy as np from matplotlib import pyplot as plt from sklearn.model selection import train test split definit ...