spring mvc 框架运行机制 + 数据绑定原理
spring mvc 运行主要的组件:
1 前端控制器 (dispatchservlet) 相当于一个重要处理器,它用来调用其他功能模块来分工的效应一次请求,主要起调度的作用。
2. handler 映射器 : 用于前端控制器发送给他的url 找到 用于处理这个url 的 handler(controller) 找个这个controller 的名字之后,将该controller 的名字返回给 前端控制器
问题:返回的东西不只有这一个名字,还有别的东西。
3. handle 处理器: 用于将前端处理器发送给他的handler(controller )的名字, 去在handler(controller)里面去找,然后按照 我自己的规则去执行这个handler,执行完之后返回的是一个modelandview 的对象,然后将这个对象 发送给前端处理器。
4. 视图解析器: 用于将前端发送给他的一个视图(如jsp freemarker)的名字,解析为真正的视图。
俗语: 我(前端控制器) 虽然自己的没有什么特别的能力, 但是我会用人, 我手下有三元大将, 大将军(handler 映射器)帮我帮我寻找到底是哪个controller 可以帮我处理这次浏览器的威胁,二将军(handle处理器) 帮我将 controller 运算一遍转换成真正的处理结果, 三将军(视图解析器) 帮我将一个 视图的名字,给我解析成一个真正的视图。
整体的工作流程如下: 
流程:浏览器发出危险行为, 首领(disaptchservlet) 询问 大将军(handlerMapping) “我该如何迎战”, 大将军拿出来先前想出的计谋(xml 配置文件)说“主公, 你看这个计谋(handler)可以解决危险”, 首领(disptchservlet) 招呼 二将军(handleradapter):“快快将此条计谋(handler)取出来, 演示一遍让我看看”, 二将军找到这条计谋,自己思考(执行)了一遍, 说“主公, 可以使用这套阵法(view),以及这套装备(model) 解决危险”。 首领 “ 特好, 三将军(viewresolver)快帮我将整套阵法(view)取出来,让我看看” 三将军取出 阵法(view)交由主公, 首领“ 有了阵法, 给士兵们配上这套装备(model) 就能解决问题了”
数据绑定:

前端form表单里面提交的数据会以键值对的形式存放在servletrequest 里面, springmvc 会将这些 “键” 名字, 和我将要处理此次request 的方法的形参进行绑定赋值。所以运行
的机制是依据处理方法里面入参的属性值去找servletrequest 里面的键值对 去找和我匹配的,找到匹配的就拿过来注入。所以前端的“键”的名字很关键,必须和入参属性两者一致。
俗语: 找呀找呀找朋友, 我两名字是一致, 我们就是朋友,我在家里是user.name[0], 我的朋友也必须叫“user.name[0]”
spring mvc 框架运行机制 + 数据绑定原理的更多相关文章
- spring MVC框架入门(外加SSM整合)
spring MVC框架 一.什么是sping MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 W ...
- Spring MVC 框架搭建及具体解释
如今主流的Web MVC框架除了Struts这个主力 外.其次就是Spring MVC了,因此这也是作为一名程序猿需要掌握的主流框架.框架选择多了.应对多变的需求和业务时,可实行的方案自然就多了. 只 ...
- 手写Spring MVC框架(一) 实现简易版mvc框架
前言 前面几篇文章中,我们讲解了Spring MVC执⾏的⼤致原理及关键组件的源码解析,今天,我们来模仿它⼿写⾃⼰的mvc框架. 先梳理一下需要实现的功能点: tomcat加载配置文件web.xml: ...
- 手写Spring MVC框架(二) 实现访问拦截功能
前言 在上一篇文章中,我们手写了一个简单的mvc框架,今天我们要实现的功能点是:在Spring MVC框架基础上实现访问拦截功能. 先梳理一下需要实现的功能点: 搭建好Spring MVC基本框架: ...
- 4-3 Spring MVC框架-02
Spring MVC框架-02 Ⅰ.RESTful基础 是一种设计风格和开发方式 1.get和post请求区别: get post 获取请求 上传请求 请求参数在地址栏URL 请求参数在请求体里面 U ...
- Spring MVC 框架的架包分析,功能作用,优点
由于刚搭建完一个MVC框架,决定分享一下我搭建过程中学习到的一些东西.我觉得不管你是个初级程序员还是高级程序员抑或是软件架构师,在学习和了解一个框架的时候,首先都应该知道的是这个框架的原理和与其有关j ...
- Spring mvc框架 controller间跳转 ,重定向 ,传参
一.需求背景 1. 需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示. @Req ...
- spring mvc 框架搭建及详解
现 在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不 ...
- <转>ASP.NET学习笔记之理解MVC底层运行机制
ASP.NET MVC架构与实战系列之一:理解MVC底层运行机制 今天,我将开启一个崭新的话题:ASP.NET MVC框架的探讨.首先,我们回顾一下ASP.NET Web Form技术与ASP.NET ...
随机推荐
- 记mysql一次莫名的1062错误
1062 Duplicate entry '...' for key 'PRIMARY指的是主键重复或者唯一索引重复. 本来mysql表中未设主键和唯一索引,准备加上,但是设置的时候总是提示1062, ...
- 快速部署 Spring PetClinic 到函数计算平台
简介 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算准 ...
- Markdown破解及汉化
首先,附上用到的资源链接: 链接:https://pan.baidu.com/s/1ULvvCPcCv_P3KyD9ajXUjQ 提取码:5fkb 第一步 直接解压就可以,解压后运行该程序,会出现下图 ...
- POJ2411 Mondriaan's Dream 题解 轮廓线DP
题目链接:http://poj.org/problem?id=2411 题目大意 给你一个 \(n \times m (1 \le n,m \le 11)\) 的矩阵,你需要用若干 \(1 \time ...
- 利用shell脚本实现每隔60秒磁盘内存数据监控脚本
#!/bin/bash #Author:GaoHongYu #QQ: #Time:-- :: #Name:ncjk.sh #Version:V1. clear xtip=$(hostname -I) ...
- 小米6X谷歌套件
话不多说真机测试完美适配,安卓万物基于谷歌链接如下(个别MIUI版本不同谷歌商店会报错,如遇到请留言我会第一时间回复解决) 链接:https://pan.baidu.com/s/1b2Cs0u9J2b ...
- Go 开发关键技术指南 | 敢问路在何方?(内含超全知识大图)
作者 | 杨成立(忘篱) 阿里巴巴高级技术专家 Go 开发关键技术指南文章目录: 为什么你要选择 Go? Go 面向失败编程 带着服务器编程金刚经走进 2020 年 敢问路在何方? Go 开发指南大图 ...
- KMP 和 扩展KMP
KMP:在主串S中找子串T的位置KMP算法的时间复杂度O(|S|+|T|). #define maxn 1000 char s[maxn],t[maxn];//s为主串,t为子串 int net[ma ...
- Vim的环境设定与记录
vim 会主动将曾经做过的行为记录下来,记录在文件 ~/.viminfo,好方便下次作业. 更改 /etc/vimrc配置操作环境 vim的环境设定参数 :set nu :set nonu 设 ...
- ArcEngine语法笔记(VB)
1.获取图层字段 Dim pTable As ITable = pLayer Dim pField As IField pField = pTable.Fields.Field(i) Next 2. ...