Spring MVC 设计概述
Spring MVC的架构

图展示了传统的模型层被拆分为业务层(Service)和数据访问层(DAO,Data Access Object)。在Service下可以通过Spring的声明式事务操作数据访问层,而在业务层上还允许我们访问NoSQL,这样就能够满足现今异军崛起的NoSQL的使用了,它的使用将大大提高互联网系统的性能。对于Spring MVC而言,其最大的特色是结构松散,比如几乎可以在Spring MVC中使用各类视图,包括JSON、JSP、XML、PDF等,所以它能够满足手机端、页面端和平板电脑端的各类请求,这就是现在它如此流行的原因
Spring MVC组件与流程

图中的阿拉伯数字给出了Spring MVC的服务流程及其各个组件运行的顺序,这是Spring MVC的核心。
首先,Spring MVC框架是围绕着DispatcherServlet而工作的,所以这个类是其最为重要的类。从它的名字来看,它是一个Servlet,那么根据Java EE基础的学习,我们知道它可以拦截HTTP发送过来的请求,在Servlet初始化(调用init方法)时,Spring MVC会根据配置,获取配置信息,从而得到统一资源标识符(URI,Uniform Resource Identifier)和处理器(Handler)之间的映射关系(HandlerMapping),为了更加灵活和增强功能,Spring MVC还会给处理器加入拦截器,所以还可以在处理器执行前后加入自己的代码,这样就构成了一个处理器的执行链(HandlerExecutionChain),并且根据上下文初始化视图解析器等内容,当处理器返回的时候就可以通过视图解析器定位视图,然后将数据模型渲染到视图中,用来响应用户的请求了。
当一个请求到来时,DispatcherServlet首先通过请求和事先解析好的HandlerMapping配置,找到对应的处理器(Handler),这样就准备开始运行处理器和拦截器组成的执行链,而运行处理器需要有一个对应的环境,这样它就有了一个处理器的适配器(HandlerAdapter),通过这个适配器就能运行对应的处理器及其拦截器,这里的处理器包含了控制器的内容和其他增强的功能,在处理器返回模型和视图给DispacherServlet后,DispacherServlet就会把对应的视图信息传递给视图解析器(ViewResolver)。注意,这一步取决于是否使用逻辑视图,如果是逻辑视图,那么视图解析器就会解析它,然后把模型渲染到视图中去,最后响应用户的请求;如果不是逻辑视图,则不会进行处理,而是直接通过视图渲染数据模型。这就是一个SpringMVC完整的流程,它是一个松散的结构,所以可以满足各类请求的需要,为此它也实现了大部分的请求所需的类库,拥有较为丰富的类库供我们使用,所以流程中的大部分组件并不需要我们去实现,只是我们应该知道整个流程,熟悉它们的使用就可以构建出强大的互联网系统了。
Spring MVC 设计概述的更多相关文章
- Spring MVC 笔记 概述
学习笔记 模型:封装装程序数据 视图:渲染模型数据,一般来说就是输出HTML 控制:处理请求,构建模型并将其传递给视图进行渲染 以上三者均围绕DispatcherServlet设计,它处理所有的HTT ...
- Spring企业级程序设计 • 【第5章 Spring MVC快速入门】
全部章节 >>>> 本章目录 5.1 Spring MVC设计概述及其框架结构 5.1.1 Spring MVC介绍 5.1.1 Spring MVC优势 5.1.2 S ...
- Spring MVC【入门】就这一篇!
MVC 设计概述 在早期 Java Web 的开发中,统一把显示层.控制层.数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Model1: 出现的弊端: JSP 和 Ja ...
- Spring MVC实践
MVC 设计概述 在早期 Java Web 的开发中,统一把显示层.控制层.数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Model1: 出现的弊端: JSP 和 Ja ...
- Spring MVC【入门】
Spring MVC[入门]就这一篇! MVC 设计概述 在早期 Java Web 的开发中,统一把显示层.控制层.数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Mod ...
- Spring MVC【入门】一篇!
MVC 设计概述 在早期 Java Web 的开发中,统一把显示层.控制层.数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Model1: 出现的弊端: JSP ...
- ssm整合说明与模板-Spring Spring MVC Mybatis整合开发
ssm整合说明 spring+spring mvc+mybatis 说明 源码下载 由于之前存在ssh框架,spring+struts+hibernate,其中spring负责aop与ioc,所以一般 ...
- Spring MVC相关
配置文件说明 web.xml, spring配置文件 applicationContext.xml, spring配置文件, mybatis连接mysql配置文件 sql-map-config-mys ...
- spring mvc学习 总体概览
spring mvc 设计概览 springmvc处理http请求,主要是在web.xml中配置一个dispatcherservlet,然后由此进行拦截并处理请求返回相应,下面就针对源码大体记 ...
随机推荐
- bzoj1784: [Usaco2010 Jan]island
现在居然出现一道题只有\(pascal\)题解没有\(C++\)题解的情况,小蒟蒻要打破它. 思维题:分类讨论 回归正题,此题十分考验思维,首先我们要考虑如何把不会走的地方给填上,使最后只用求一遍这个 ...
- LightOJ - 1067 - Combinations(组合数)
链接: https://vjudge.net/problem/LightOJ-1067 题意: Given n different objects, you want to take k of the ...
- JavaScript基础——数组
一 .数组的介绍 1.概念:数据的集合,任何数据都可以放在数组中 2.作用:可以同时操作多个数据 3.数组的创建: 字面量:var arr = [ ]; 构造函数:var arr = new Arra ...
- Centos7 docker pull速度特别慢
vim /etc/docker/daemon.json { "registry-mirrors" : ["https://docker.mirrors.ustc.edu. ...
- 五.划分LVM逻辑卷
作用: 1.整合分散的空间 2.空间可以进行扩大 零散空闲存储 ---- 整合的虚拟磁盘 ---- 虚拟的分区 由众多的物理卷(PV)组合成卷组(VG),从卷组中划分多个逻辑卷(L ...
- 边框图片border-image
一.定义: 在内容变化的容器里使用,边框自动填充,由于浏览器的兼容问题,没有广泛使用 border-image属性是速记属性用于设置 border-image-source, border-image ...
- PHP安装之configure的配置参数
1.生成环境安装配置如下 要求安装如下库: imagickgdmysqlmysqlimysqlndphalconPharsoapsocketsxwebxsvczipzlib 具体查看 vim php- ...
- 洛谷 P3979 遥远的国度
题目描述 修改某条路径上的值以及询问子树的最小值都最树剖的基础操作,那么如何实现换根呢? 考虑一下三种情况: 1.rot=询问的子树x,答案就是整棵树的最小值 2.rot在x的子树里,只有rot到x这 ...
- Codeforces 1172F Nauuo and Bug [线段树]
Codeforces 思路 定义\(f_{l,r}(x)\)表示数\(x\)从\(l\)进去\(r\)出来的时候会变成什么样子.容易发现这个函数是个分段函数,每一段都是斜率为1的一次函数,并且段数就是 ...
- [Shell]利用JS文件反弹Shell
0x01 模拟环境 攻击: kali ip: 192.168.248.132 测试: windows 7 x64 ip: 192.168.248.136 0x02 工具地址 https://githu ...