码迷,mamicode.com
首页 > 编程语言 > 详细

springmvc源码解读

时间:2020-03-11 12:31:50      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:ext   int   ref   apt   请求   value   ret   关系   返回   

一、基础流程

 ApplicationContext初始化时建立所有url和Controller类的对应关系(用Map保存).
1、url和Controller的beanName保存至Map;
AbstractUrlHandlerMapping->registerHandler(String urlPath, Object handler);

2、根据请求url找到对应的Controller,并从Controller中找到处理请求的方法
DispatcherServlet -> doService() -> doDispatch();

3、通过反射获取该方法上的注解和参数,解析方法和参数上的注解,最后反射调用方法获取ModelAndView结果视图
RequestMappingHandlerAdapter ->handleInternal(HttpServletRequest request,HttpServletResponse response, HandlerMethod handlerMethod);

二、重要组成

)DispatherServlet
前端控制器
1、从HandlerMapping获取HandlerExecutionChain(Controller对象、HandlerInterceptor);
2、调用拦截器,将HandlerExecutionChain传入HandlerAdapter,返回ModelAndView;
3、将ModelAndView传入ViewResolver,获得View并返回Response;

)HandlerMapping
1、RequestMappingHandlerMapper,获取@Controller及@RequestMapping注释的Bean和拦截器封装成HandlerExecutionChain;

)HandlerAdapter
1、RequestMappingHandlerAdapter,获取HandlerAdapter;
2、RequestResponseBodyMethodProcessor,处理@RequestBody注释参数;
3、HandlerParamMethodArgumentResolver,解析方法参数,@RequestParam映射,asm编译字节码文件获取入参;
4、反射调用实际方法;
5、RequestResponseBodyMethodProcessor,处理@ResponseBody注释参数;
6、ModelAndViewMethodReturnValueHandler,处理方法返回值,返回ModelAndView;

)ViewResolver

三、流程图

技术图片

 

 

 转载至:https://blog.csdn.net/huyang0304/article/details/82997514

springmvc源码解读

标签:ext   int   ref   apt   请求   value   ret   关系   返回   

原文地址:https://www.cnblogs.com/anhaogoon/p/12461431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!