spring源代码-DispatcherServlet
来源:互联网 发布:neflix 淘宝账号 编辑:程序博客网 时间:2024/06/05 12:39
DispatcherServlet遵循原始servlet的生命周期,init,service,destory
init(初始化)
通过HttpServletBean、FrameworkServlet、DispatcherServlet三个不同的类层次,SpringMVC的设计者将三种不同的职责分别抽象,运用模版方法设计模式分别固定在三个类层次中。
HttpServletBean : 完成的是<init-param>配置元素的依赖注入
FrameworkServlet :
(1)完成的是容器上下文的建立,即webApplicationContext,我们知道应用在加载加载spring的时候,已经初始化了一个webApplicationContext,现在又来一个context,这两个context为父子关系,spring-mvc对应的context为子,可以通过getParent拿到spring的context
(2)上下文建立的过程中,实例并且初始化核心的bean,比如RequestMappingHandlerMapping ,这个mapping会循环所有的controller及其方法,生成path到method的映射,注册到mapping中。
DispatcherServlet:
完成spring-mvc的请求处理和相应到核心组件的初始化
initHandlerMapping,初始化handlerMapping,从bean工厂中获取handlerMapping,放到DispatcherServlet中
service(请求处理和相应)
请求进行路由,获取对应的handler,并执行
循环handlerMapping,找到url对应的HandlerExcutionChain,生成requestMappingHandlerAdapter,调用handle方法,在handle方法中new出ServletInvocableHandlerMethod对象,执行invokeAndHandle,此时真正执行controller层的method
handle完成之后进行viewResolver,首先进行异常处理,这里给我们提供了扩展,下面介绍如何自定义异常处理器,对controller层的错误统一返回json,不返回错误页面
sping-mvc配置文件中配置
<bean class="com.fengjr.prizecenter.component.AjaxExceptionResolver"></bean>
/**
* Created by haoxu on 17/10/11.
*/public class AjaxExceptionResolver implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("isSuccess", false); modelAndView.setView(new FastJsonJsonView()); return modelAndView; }}
- spring源代码-DispatcherServlet
- 读Spring的源代码二:DispatcherServlet处理web请求的过程
- 读Spring的源代码三:ContextLoaderListener和DispatcherServlet的加载过程
- Spring MVC - DispatcherServlet Example
- Spring MVC DispatcherServlet说明
- Spring MVC DispatcherServlet配置
- Spring:DispatcherServlet的详解
- Spring DispatcherServlet 工作机制
- 初学 Spring MV -- DispatcherServlet
- spring mvc dispatcherServlet
- Spring MVC中的DispatcherServlet
- Spring MVC:DispatcherServlet详解
- spring中的DispatcherServlet
- Spring DispatcherServlet 的作用
- Spring DispatcherServlet 的作用
- spring MVC(一) DispatcherServlet
- spring mvc DispatcherServlet作用
- Spring MVC DispatcherServlet
- 【笔记】《WebGL编程指南》学习-第6章着色器语言(2-矢量和矩阵)
- 【BZOJ 4563 放棋子】【错排】
- STL之函数适配器
- redis获取异常或者获取不到
- 1020. Rope
- spring源代码-DispatcherServlet
- Linux 输出重定向>和>>的区别是什么?
- 设计模式
- 对java中多态的理解
- oracle数据库连接出现的错误
- centos 安装配置php,nginx
- mysql执行外部sql文件命令
- C#程序结构及基本语法
- hdu 1573 X问题 CRT不互质解法