springMVC原始碼分析--SimpleControllerHandlerAdapter(三)
上一篇部落格springMVC原始碼分析--HandlerAdapter(一)中我們主要介紹了一下HandlerAdapter介面相關的內容,實現類及其在DispatcherServlet中執行的順序,接下來我們詳細介紹一下其實現類SimpleControllerHandlerAdapter,SimpleControllerHandlerAdapter是Controller實現類的介面卡類,其本質是執行Controller中的handleRequest方法。
supports方法就是判斷handler是否是Servlet
getLastModified直接返回-1
handle方法本質是執行Controller.handleRequest方法。
public class SimpleControllerHandlerAdapter implements HandlerAdapter {
@Override
public boolean supports(Object handler) {
//判斷是否是Controller類
return (handler instanceof Controller);
}
//執行Controller的handleRequest方法
@Override
public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
//本質是執行Controller的handleRequest方法
return ((Controller) handler).handleRequest(request, response);
}
@Override
public long getLastModified(HttpServletRequest request, Object handler) {
if (handler instanceof LastModified) {
return ((LastModified) handler).getLastModified(request);
}
return -1L;
}
}
其實Controller介面的定義也很簡單,僅僅定義了一個handleRequest方法
public interface Controller {
ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception;
}
SimpleControllerHandlerAdapter的實現也是很簡單的,就是適配執行Controller的handleRequest方法。相關文章
- SpringMVC原始碼分析SpringMVC原始碼
- SpringMVC原始碼分析1:SpringMVC概述SpringMVC原始碼
- SpringMVC原始碼分析原理SpringMVC原始碼
- springmvc工作原理及原始碼分析SpringMVC原始碼
- SpringMVC之原始碼分析--ViewResolver(五)SpringMVC原始碼View
- SpringMVC原始碼分析系列(精簡)SpringMVC原始碼
- SpringMVC基礎原始碼分析(一)SpringMVC原始碼
- SpringMVC請求流程原始碼分析SpringMVC原始碼
- SpringMVC原始碼分析2:SpringMVC設計理念與DispatcherServletSpringMVC原始碼Servlet
- Retrofit原始碼分析三 原始碼分析原始碼
- 從SpringMvc原始碼分析其工作原理SpringMVC原始碼
- SpringMVC執行流程及原始碼分析SpringMVC原始碼
- Spring原始碼分析(四)SpringMVC初始化原始碼SpringMVC
- preact原始碼分析(三)React原始碼
- SpringMVC原始碼解析SpringMVC原始碼
- 面試官:你分析過SpringMVC的原始碼嗎?面試SpringMVC原始碼
- 5.2 spring5原始碼--spring AOP原始碼分析三---切面原始碼分析Spring原始碼
- 原始碼分析三:OkHttp—BridgeInterceptor原始碼HTTP
- 原始碼分析三:OkHttp—CacheInterceptor原始碼HTTP
- 原始碼分析三:OkHttp—ConnectInterceptor原始碼HTTP
- 原始碼分析三:OkHttp—CallServerInterceptor原始碼HTTPServer
- 原始碼分析三:OkHttp—RetryAndFollowUpInterceptor原始碼HTTP
- SpringMVC DispatcherServlet原始碼解析SpringMVCServlet原始碼
- Vue原始碼分析系列三:renderVue原始碼
- Netty原始碼分析--建立Channel(三)Netty原始碼
- containerd 原始碼分析:建立 container(三)AI原始碼
- java集合原始碼分析(三):ArrayListJava原始碼
- SpringMVC原始碼分析:POST請求中的檔案處理SpringMVC原始碼
- springMvc原始碼解讀–AbstractUrlHandlerMappingSpringMVC原始碼APP
- SpringBoot2.0原始碼分析(三):整合RabbitMQ分析Spring Boot原始碼MQ
- Android主流三方庫原始碼分析(三、深入理解Glide原始碼)Android原始碼IDE
- gson-plugin深入原始碼分析(三)Plugin原始碼
- jQuery原始碼剖析(三) - Callbacks 原理分析jQuery原始碼
- Floyd&Raft的原始碼分析(三)Raft原始碼
- weex原始碼分析(三) -- weex工程建立原始碼
- Flutter Dio原始碼分析(三)--深度剖析Flutter原始碼
- 面試高頻SpringMVC執行流程最優解(原始碼分析)面試SpringMVC原始碼
- 設計模式(二十四)——職責鏈模式(SpringMVC原始碼分析)設計模式SpringMVC原始碼
- 友好 RxJava2.x 原始碼解析(三)zip 原始碼分析RxJava原始碼