Spring MVC 执行原理
来源:互联网 发布:sdk软件开发工具包 编辑:程序博客网 时间:2024/04/29 22:30
在 Spring Mvc 访问过程里,每个请求都首先经过 许多的过滤器,经 DispatcherServlet 处理;
一个Spring MVC工程里,可以配置多个的 dispatcherServlet ,每个 DispatcherServlet 可以对应多个的 HandlerMapping ,每个 HandlerMapping 可以有自己的 Interceptor (拦截器)。
1. 请求首先 由 前端 DispatcherServlet 捕获;
2. DispatcherServlet 经过 HandlerMapping 获取适当的 Hanlder ,也即 Controller ,并返回给 DispatcherServlet;
3. 如果有设置 拦截器,首选执行拦截器的 preHandler 方法,并把执行结果返回 DispatcherServlet;
4. DispatcherServlet 根据捕获的请求,以及 Handler (Controller) ,获取到适当的 HandlerAdapter 处理,并把结果返回给 DispatcherServlet,结果为 (View 和 Model);
5. 如果有设置拦截器,就是执行 拦截器的 postHandler 方法,并返回 DispatcherServlet;
6. DispatcherServlet 根据获取的 view 跟 model 结合 ViewResolver,返回所指的 视图模板,并返回给 DispatcherServlet;
7. DispatcherServlet 结合 视图模型跟model ,执行 render() 渲染界面,并返回给客户端;
一个DispatcherServlet 都有自己 上下文配置文件, 这个配置继承自根的上下文配置文件;
每个 DispatcherServlet 都可配置多个不同的 HandlerMapping 映射方式;每个 HandlerMapping 都实现了 Ordered 接口,可以上下文文件配置中设置优先使用的 HandlerMapping;
用户的请求被 DispatcherServlet 捕获后,DispatcherServlet 使用优先级高的 HandlerMapping 查找可用的 Handler,如果没有找到合适的 Handler,就使优先级次之的 HandlerMapping 继续查找,直到找到为止;
比如:Spring MVC 提供主要的 HanderMapping 有 DefaultAnnotationHandlerMapping, SimpleUrlHandlerMapping, BeanNameUrlHandlerMapping
<bean id="defaultAnnoHandlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="order" value="1"/>
</bean>
<bean id="simpleUrlMapping" class="org.
springframework.Web.servlet.handler.SimpleUrlHandlerMapping">
<property name="order" value="2"/>
<!-- ... -->
</bean>
<bean id="beanNameUrlMapping" class="org.springframework.Web.servlet.
handler.BeanNameUrlHandlerMapping">
<!-- ... -->
</bean>
- Spring MVC 执行原理
- spring的MVC执行原理
- 【转】spring Mvc 执行原理 及 xml注解配置说明
- spring MVC --spring MVC原理
- 【Spring MVC】Spring MVC原理
- spring MVC 执行流程图
- Spring mvc 执行过程
- spring mvc 执行流程
- spring MVC执行流程
- Spring MVC执行流程
- Spring Mvc执行过程
- spring mvc 实现原理
- Spring MVC框架原理
- spring MVC原理
- spring mvc工作原理
- Spring MVC 原理
- spring mvc工作原理
- Spring MVC工作原理
- MySQL 删除数据库中重复数据方法小结
- 分布式版本控制系统Git(三):git使用总结以及常用命令
- Android开发-AsyncTask
- 131. Palindrome Partitioning
- groovy入门3 集合
- Spring MVC 执行原理
- 深入浅出解析大数据平台架构
- window server2012 + IIS8.0 + tomcat 集成环境搭建
- Spring3核心技术之AOP配置
- mybatis学习笔记
- Python:Argparse
- Spring 注解方式配置aop:
- ubuntu16.04搭建Hadoop2.7.2+spark1.6.1+mysql+hive2.0.0伪分布学习环境
- Unity3D- 自动寻路