1. 程式人生 > >SpringMVC4 學習筆記(四)【處理器介面卡HandlerAdapter】

SpringMVC4 學習筆記(四)【處理器介面卡HandlerAdapter】

常用的處理器介面卡實現類有兩種

  • HttpRequestHandlerAdapter

 處理實現了HttpRequestHandler介面的處理器,當處理器實現介面後複寫handleRequest方法(無返回值)。

public class MyController implements HttpRequestHandler {

	public void handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		request.setAttribute("message", "Hello SpringMVC World!");
		request.getRequestDispatcher("/WEB-INF/jsp/welcome.jsp").forward(request, response);
	}

}


  • SimpleControllerHandlerAdapter

處理實現了Controller介面的處理器,當處理器實現介面後複寫handleRequest(帶有返回值ModelAndView)

public class MyController implements Controller {

	public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		ModelAndView mv = new ModelAndView();
		mv.addObject("message", "Hello SpringMVC World!");
		mv.setViewName("welcome");
		return mv;
	}
}


部分原始碼解析:

在中央排程器(DispatcherServlet)的doDispatch方法中,通過getHandlerAdapter方法獲取處理器相對應的介面卡


在getHandlerAdapter方法中:通過遍歷所有介面卡,驗證所有介面卡中的supports()方法,查詢處理器所對應的介面卡,找到則返回相對應的介面卡傳給ha


HttpRequestHanderAdapter原始碼示例:

supports方法通過instanceof判斷處理器是否實現了HttpRequestandler介面,返回相對應的boolean值給呼叫者


最後中央排程器(DispatcherServlet)再呼叫介面卡中的handle方法,

然後具體呼叫每個處理器複寫的handlerRequest方法