SpringMVC请求处理流程

SpringMVC请求处理流程

SpringMVC中的Servlet一共有三个层次,分别是HttpServletBean、FrameworkServlet和 DispatcherServlet。
HttpServletBean直接继承自java的HttpServlet,其作用是将Servlet中配置的参数设置到相应的属性;
FrameworkServlet初始化了WebApplicationContext;
DispatcherServlet初始化了自身的9个组件。

	/**
	 * This implementation calls {@link #initStrategies}.
	 */
	@Override
	protected void onRefresh(ApplicationContext context) {
		initStrategies(context);
	}

	/**
	 * Initialize the strategy objects that this servlet uses.
	 * <p>May be overridden in subclasses in order to initialize further strategy objects.
	 */
	protected void initStrategies(ApplicationContext context) {
		initMultipartResolver(context);
		initLocaleResolver(context);
		initThemeResolver(context);
		initHandlerMappings(context);
		initHandlerAdapters(context);
		initHandlerExceptionResolvers(context);
		initRequestToViewNameTranslator(context);
		initViewResolvers(context);
		initFlashMapManager(context);
	}

在这里插入图片描述

1.Fillter

2.org.springframework.web.servlet.DispatcherServlet#doDispatch

2.1 checkMultipart

2.2getHandler

HandlerMapping:处理映射器,根据请求的url映射到对应的处理器(Controller)的某个处理方法上,映射成功后返回一个HandlerExecutionChain对象(处理器执行链),其中包括处理器(Controller)以及拦截器。

在这里插入图片描述
遍历handlerMappings 获取 handler(真正用于执行方法的对象)
org.springframework.web.servlet.handler.AbstractHandlerMapping#getHandler

2.3 getHandlerAdapter (根据handler获取HandlerAdapter 用于组织对象,用handler使用以及返回值的转换)

在这里插入图片描述

2.4 applyPreHandle

拦截器前置方法

2.5 handle

2.5.1 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#invokeHandlerMethod

org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod#invokeAndHandle
2.5.1.1
org.springframework.web.method.support.InvocableHandlerMethod#invokeForRequest
a. getMethodArgumentValues
b. doInvoke
2.5.1.2 org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite#handleReturnValue
在这里插入图片描述
遍历messageConverters进行转换

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#getModelAndView

2.6 applyPostHandle

拦截器
2.7 processDispatchResult
2.7.1异常解析
2.7.2 视图解析
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值