轉載 https://blog.csdn.net/qq924862077/article/details/53843251
上一篇博客springMVC源碼分析--HandlerAdapter(一)中我們主要介紹了一下HandlerAdapter接口相關的內容,實現類及其在DispatcherServlet中執行的順序,接下來我們詳細介紹一下其實現類SimpleServletHandlerAdapter,SimpleServletHandlerAdapter其實是一個Servlet的適配器,其最終執行的方法是Servlet的service方法,源碼如下,我們可以看到其真正起作用的地方是((Servlet) handler).service(request, response),其實也就是調用Servlet的service,其實本質還是比較簡單的。
supports方法就是判斷handler是否是Servlet
getLastModified直接返回-1
handle方法本質是執行Servlet.service方法
public class SimpleServletHandlerAdapter implements HandlerAdapter {
@Override
public boolean supports(Object handler) {
return (handler instanceof Servlet);
}
//執行Servlet的service方法
@Override
public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
//本質還是執行Servlet的service方法
((Servlet) handler).service(request, response);
return null;
}
@Override
public long getLastModified(HttpServletRequest request, Object handler) {
return -1;
}
}
這樣springMVC中就提供了執行Servlet的適配器,如果可以的話我們是否也可以自己寫一個適配器類然後注入到springMVC 的容器中。