Spring MVC 底层原理
Spring MVC处理的流程:
具体执行步骤如下:
1 首先用户发送请求给前端控制器,前端控制器根据请求信息(如url)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图中的1、2步骤
2 页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在spring web mvc中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;
处理完毕后返回一个ModelAndView(模型数据和逻辑视图名);图中3、4、5步骤
3 前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染;图中的6、7步骤
4 前端控制器再次收回控制权,将响应返回给用户,图中的步骤8
Spring MVC 的运行原理
- 首先,用户向服务器发送请求,请求被前端控制器DispatcherServet截获
DispatcherServlet没有业务处理的能力,调用HandlerMapping处理器映射器- HandlerMapping根据xml配置和注解找到具体的Handler,并将处理器执行链(包括Handler和拦截器数组)返回给DispatcherServlet
DispatcherServlet调用HandlerAdapter处理器适配器- HandlerAdapter经过适配器调用具体的处理器(Controller,也称后端控制器)
- Controller执行完返回ModleAndView
- HandlerAdapter将ModleAndView返回给DispatcherServlet
DispatcherServlet将ModleAndView传给ViewReslover视图解析器- ViewReslover解析后返回具体的View
- Dispatcher根据View进行视图渲染(将Modle填充至View)
DispatcherServlet响应用户
springMVC执行细节:
DispatcherServlet在执行时会加载默认的配置文件:DispatcherServlet.properties来加载相关组件
可以在springMVC-servlet.xml中更改配置:
- <!-- 视图解析器 -->
- <bean
- class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/jsp/" />
- <property name="suffix" value=".jsp" />
- </bean>
- <!-- 处理器映射器 -->
- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
- <!-- 处理器适配器 -->
- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
也可以使用注解驱动来代替上面的 处理器映射器 和处理器适配器的配置:
- <!-- 配置注解驱动 -->
- <mvc:annotation-driven />
Spring MVC 底层原理的更多相关文章
- (4.1)Spring MVC执行原理和基于Java的配置过程
一.Spring MVC执行原理和基于Java配置的配置过程 (一)Spring MVC执行过程,大致为7步. 所有的请求都会经过Spring的一个单例的DispacherServlet. Dispa ...
- Spring MVC简单原理
Spring MVC原理 针对有Java Web基础.Spring基础和Spring MVC使用经验者. 前言 目前基于Java的web后端,Spring生态应该是比较常见了.虽然现在流行前后端分离, ...
- Spring Aop底层原理详解
Spring Aop底层原理详解(来源于csdn:https://blog.csdn.net/baomw)
- 拜托!面试请不要再问我Spring Cloud底层原理[z]
[z]https://juejin.im/post/5be13b83f265da6116393fc7 拜托!面试请不要再问我Spring Cloud底层原理 欢迎关注微信公众号:石杉的架构笔记(id: ...
- spring Mvc 执行原理 及 xml注解配置说明 (六)
Spring MVC 执行原理 在 Spring Mvc 访问过程里,每个请求都首先经过 许多的过滤器,经 DispatcherServlet 处理; 一个Spring MVC工程里,可以配置多个的 ...
- MVC底层原理
窥探ASP.Net MVC底层原理 实现跨越Session的分布式TempData 1.问题的引出 我相信大家在项目中都使用过TempData,TempData是一个字典集合,一般用于两个请求之间临时 ...
- spring AOP底层原理实现——jdk动态代理
spring AOP底层原理实现——jdk动态代理
- Spring AOP底层原理
------------------siwuxie095 Spring AOP 底层原理 AOP 即 Aspect Or ...
- Spring IoC底层原理
-------------------siwuxie095 Spring IoC 底层原理 1.IoC 即 Invers ...
随机推荐
- ASIHTTPRequest缓存策略download cache
本文为大家介绍了iOS开发ASIHTTPRequest使用download cache的内容,其中包括cache策略,存储策略,其他cache相关的特性,编写自己的cache等等内容. 从1.8版本开 ...
- influxdb基本操作
名词解释 在具体的讲解influxdb的相关操作之前先说说influxdb的一些专有名词,这些名词代表什么. influxDB名词 database:数据库: measurement:数据库中的表: ...
- diary of django
1.安装django -> pip install django ----- 某些时候竟然需要FQ 2.JsonResponse 需要 (不需要了,django.http自带) pip i ...
- Kotlin Reference (十二) Extensions
most from reference Kotlin与C#和Gosu类似,提供了扩展一个新功能的类,而不必继承类或使用任何类型的设计模式,如Decorator(装饰者模式).这是通过称为扩展的特殊声明 ...
- test20181004 苹果树
题意 分析 对每个点维护子树所能达到的dfn最大值.最小值.次大值.次小值,然后就可以计算原树中每个点与父亲的连边对答案的贡献. 如果子树中没有边能脱离子树,断掉该边与任意一条新加的边都成立,答案就加 ...
- 用pthon来写个跳板机
用pthon来写个跳板机 1.需求 程序一:1.后台管理- 堡垒机上创建用户和密码(堡垒机root封装的类,UserProfile表)- .bashrc /usr/bin/python3 /dat ...
- IE7下对某些seajs压缩文件不兼容的解决方法
seajs.config({ comboExcludes: /common.js/ }) (杨磊哥提供)
- 实习第二天-今年第一场雨-方法的重载(马上想到println()函数和abs(函数))
在C语言中 调用函数abs()返回一个整数的绝对值, fabs(返回一个单精度浮点型的绝对值)若要返回这些数的绝对值,则必须记住这些函数的名字 java可以用方法的重载:即是方法名必须相同,参数必须不 ...
- USB设备驱动_WDS
1. usb_alloc_dev中的 bus_type 中指定了匹配函数,和uevent中的环境参数. ====>不同的bus_type的匹配函数可能是不同的,uevent的环境变量参数也可能是 ...
- day37 mysql数据库学习
3.什么是数据库 用来存储数据的仓库 数据是以文件的形式保存 海峰补充内容 ↓ 4 数据库服务器.数据管理系统.数据库.表与记录的关系(重点理解!!!) 记录:1 刘海龙 324245234 2 ...