Spring mvc学习总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xhpscdx/article/details/54968934

解spring mvc的什么特征

  1. 我想通过在实际应用中需要明白这些特征原理。
  2. 需要了解DispatcherServlet,DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapter,ViewResolver,Interceptor,ExceptionHandler,LocaleResolver(i18n国际化组件),Controller支持请求参数,返回参数。
  3. 需要了解这些组件工作请求流程。熟悉各个组件的调用位置。
  4. 了解spring mvc的整体架构,方便自行扩展。

spring mvc 组件时序图

image

  1. browse的请求都会被DispatchServlet所拦截,调用doDispatch方法,DispatchServlet是主要request请求处理组件,很多属性组件在init被set进来。MultipartResolver,LocaleResolver,handlerMappings,handlerAdapters,handlerExceptionResolvers这些常用组件。
  2. 2-4步骤HandlerExecutionChain获取过程,
    RequestMappingHandlerMapping的父类AbstractHandlerMapping.getHandler(HttpServletRequest request) 获取了HandlerMethod,并在getHandlerExecutionChain方法里构建HandlerExecutionChain, HandlerExecutionChain对象主要有HandlerMethod属性(具体controller方法),该request需要interceptorList。
  3. RequestMappingHandlerMapping
  4. 步骤5是根据methodHandler获取对应的HandlerAdapter。
  5. 执行HandlerExecutionChain的方法前interceptor拦截器,
  6. 步骤10,调用HandlerAdapter.handle方法,里面会根据HandlerMethodArgumentResolver,根据参数调用 进行选择是否调用HttpMessageConverter 或者ConversionService 处理。
  7. 13并会执行参数注入与参数validate。
  8. 步骤14,最后调用controller业务层。
  9. 最近返回ModelAndView对象在DispatchServlet,
  10. 继续执行HandlerExecutionChain.applyPostHandle应用处理后interceptor。
  11. 方法processDispatchResult是对handlerExceptionResolvers处理。
  12. 完成。

猜你喜欢

转载自blog.csdn.net/xhpscdx/article/details/54968934