类的继承关系
- public class DispatcherServlet extends FrameworkServlet
- public abstract class FrameworkServlet extends HttpServletBean implements ApplicationContextAware
- public abstract class HttpServletBean extends HttpServlet implements EnvironmentCapable, EnvironmentAware
- public abstract class javax.servlet.http.HttpServlet extends GenericServlet
- public abstract class javax.servlet.GenericServlet implements Servlet, ServletConfig,java.io.Serializable
- public interface javax.servlet.Servlet
代码处理流程
- DispatcherServlet.java: doService()开始处理请求;
- DispatcherServlet.java: getHandler() 遍历几种handler
- AbstractHandlerMapping.java: getHandler() 获取处理类的实例
- AbstractHandlerMapping.java: getHandler() 检查是否为跨域请求(检查代码: request.getHeader(“Origin”) != null;)
- AbstractHandlerMethodMapping.java: lookupHandlerMethod()->实际是在addMatchingMappings()方法里获取请求url对应的Controller全限定类路径及返回参数及全限定方法名.
(例如(因代码过长,所以折行.): public java.util.List
xyz.suancaiyu.complexcontrollerdemo.controller.CoffeeController.getAll() ) - DispatcherServlet.java: doService()实际调用处理程序:mv = ha.handle(processedRequest, response, mappedHandler.getHandler());
- DispatcherServlet.java: doService()处理完成,并返回.
实际调用链路
其他
@RequestMapping注解的处理类: RequestMappingHandlerAdapter