springMVC原始碼分析--SimpleControllerHandlerAdapter(三)

歸田發表於2016-12-26

上一篇部落格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方法。



相關文章