本篇文章为大家展示了如何进行SpringMVC的DispatcherServlet源码分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。SpringMVC核心就是DispatcherServlet,所有得请求都会转发到DispatcherServlet,然后再通过DispatcherServlet执行具体得控制层(Handler)返回ModelAndView给客户端视图展示。DispatcherServlet其实就是一个Servlet类,无非就是包装一层,通过url能够映射找到我们得SpringMvc中定义得请求方法。源代码分析:类的集成关系DispatcherServlet继承FrameworkServlet继承HttpServlet面向基本上思想 重写 先走父类 ,在走子类。得出答案:先看HttpServlet在找到我们最后的子类关系:DispatcherServlet继承FrameworkServlet继承HttpServlet流程执行关系:HttpServlet service方法 判断请求方法的类型FrameworkServlet doServiceDispatcherServlet doService在servlet初始化阶段会调用其init方法,所以我们首先要查看在DispatcherServlet中是否重写了init方法。我们在其父类HttpServletBean中找到该方法DispatcherServlet的初始化过程主要是通过将当前的Servlet类型实例转换为BeanWrapper类型实例,以便使用Spring中提供的注入功能进行对应属性的注入。我们看下servletBean的初始化,HttpServletBean其父类FrameworkServlet覆盖了它的initServletBean函数,如下:initWebApplicationContext函数主要工作就是创建或者刷新WebApplicationContext 实例并对servlet功能所使用的变量进行初始化刷新方法onRefreshprotected void initStrategies(ApplicationContext context) { initMultipartResolver(context); //初始化上传文件解析器(或者是多部分请求解析器) initLocaleResolver(context);//初始化本地化解析器 initThemeResolver(context);//初始化主题解析器 initHandlerMappings(context);//初始化处理器映射器 initHandlerAdapters(context);//初始化处理器适配器 initHandlerExceptionResolvers(context);//初始化处理器异常解析器 initRequestToViewNameTranslator(context);//初始化请求到视图名翻译器 initViewResolvers(context);//初始化视图解析器 initFlashMapManager(context 香港云主机);//初始化重定向数据管理器}执行目标方法:1.执行doDispatch2.调用getHandler方法获取请求目标的方法 也就是 请求url映射路径对应的控制层具体的方法handlerMappings的作用查找控制器位置,比如xml和注解方式。3.调用getHandlerAdapter获取控制层适配器 RequestMappingHandlerAdapter4.执行拦截器前置方法 preHandle() 如果返回为true的话5.执行实际请求目标方法 返回modeAndView对象6.执行拦截器PostHandle()方法7.设置渲染视图层内容8.执行拦截器afterCompletion方SpringMVC控制层容器初始化HttpServletBean init ()方法FrameworkServlet initServletBean方法→ initWebApplicationContext();DispatcherServlet onRefresh方法→ initStrategies()方法当我们servlet容器初始化的时候初始化上述内容就是如何进行SpringMVC的DispatcherServlet源码分析,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注开发云行业资讯频道。
本篇内容介绍了“R语言高级辅助特性怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!附加属性:测度工具:Leaflet Measure ###增加该工具可以轻…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。