SpringMvc执行流程

目录

DispatcherServlet初始化

请求处理流程


Spring对请求的处理流程如下:

SpringMvc执行流程_第1张图片

springmvc框架是将请求映射到具体执行业务方法上,然后执行业务方法后,返回视图,由视图解析器进行解析渲染,然后返回。

前端控制器DispatcherServlet是springmvc的核心控制处理类。

DispatcherServlet初始化

在tomcat等容器初始化时,通过读取web.xml文件中配置的中的DispatcherServlet来进行初始化,DispatcherServlet初始化主要生成一个webapplicationContext的上下文、加载handleMapping即处理映射器、加载handleAdapter处理适配器、viewResolver视图解析器等。

请求处理流程

DispatcherServlet是一个servlet,初始化时已经加载了mvc需要的类,在doService就是对请求的处理了。

请求首先进入doService方法,然后调用doDispatch方法。

protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {
		HttpServletRequest processedRequest = request;
		HandlerExecutionChain mappedHandler = null;
		boolean multipartRequestParsed = false;
    
         。。。。。
}

调用getHandler方法获取处理映射器,处理映射器即是哪个类或方法来处理对应请求URL,因为框架中有许多映射方式,使用注解只是其中方便的一种。

mappedHandler = getHandler(processedRequest);

调用 getHandlerAdapter获取对应的处理适配器。处理适配器与处理映射器基本上是一一对应的,比如RequestMappingHandlerAdapter就是针对注解方式的处理适配器,其中会加载具体的参数绑定的解析器,来对参数进行绑定解析等。

如下:

HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());

调用处理适配器的handle返回ModelAndView,

mv = ha.handle返回ModelAndView。

随后调用视图解析器,解析、渲染,通过response返回数据。

processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);

参考:

https://www.jianshu.com/p/6f841d81ed72

你可能感兴趣的:(spring)