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 ...
随机推荐
- phpstorm 常用指令
先选中移动内容 块向右移动:Tab键 块向左移动:Shift + Tab键 ctrl+/行注释ctrl+shift+/块注释 ctrl+g跳转行 alt + 上/下 键实现在类中的方法切换ctrl + ...
- chrome flash插件地址
C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\PepperFlash 火狐
- Dockerfile构建mysql数据库
dockerfile文件: FROM centos:centos6 MAINTAINER admin "admin@topsec.com.cn" RUN yum insta ...
- Texas Instruments matrix-gui-2.0 hacking -- menubar.php
<?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...
- OpenCV-bwLabel-实现图像连通组件标记与分析
OpenCV实现图像连通组件标记与分析- matlab bwLabel; code: #include <opencv2/opencv.hpp> #include <iostream ...
- UT源码_105032014033
需求描述: 设计佣金问题的程序 commission方法是用来计算销售佣金的需求,手机配件的销售商,手机配件有耳机(headphone).手机壳(Mobile phone shell).手机贴膜(Ce ...
- LeetCode-Microsoft-Add Two Numbers II
You are given two non-empty linked lists representing two non-negative integers. The most significan ...
- Struts2重新学习1
一:框架 1:框架的意义在于可以大大提高我们的开发效率.框架时一种主动设计,使用框架必须遵守框架指定好的开发流程. 2:框架的强大之处不是源自它能让你做什么,而是它不能让你做什么.有规有矩,方可成方圆 ...
- MySQL--禁用账号和设置账号有效期
======================================================================= MySQL5.5/5.6版本 在MySQL 5.7 版本 ...
- nginx unit nodejs 模块试用
unit 对于nodejs 的支持是在10.25 发布的,基本能用,但是依然有好多问题,当前在测试的时候就发现,请求之后会block , 相关的issue 已经有人反馈了,最好使用源码编译,方便测 ...