SpringMVC核心架构具体流程

从网上挑出来的

孔子说了:磨刀不误砍柴工,先把这些基本而核心的概念弄懂了再下手,也不晚(不为过)

Spring MVC核心架构的具体流程(步骤)如下:

1、首先用户发送请求  DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其它的解析器进行处理,作为统一访问点,进行全局的流程控制

2、DispatcherServlet  HandlerMapping,HandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象,多个HandlerInterceptor拦截器)对象,通过这种策略模式,很容易添加新的策略

3、DispatcherServlet  HandlerAdapter,HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器

4、HandlerAdapter  处理器功能处理方法的调用,HandlerAdapter将会根据适配的结果调用真正的处理器的功能处理方法,完成处理功能;并返回一个ModelAndView对象(包含模型数据、逻辑视图名)

5、ModelAndView的逻辑视图名  ViewResolver,ViewResolver将把逻辑视图名解析为具体的view,通过这种策略模式,很容易更换其它视图技术

6、View  渲染,View会根据传进来的Model模式数据进行渲染,此处的Model实际是一个Map数据结构,因此很容易支持其它视图技术 7、返回控制权给DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束

此处只是讲了核心流程,没有考虑拦截器、本地解析、文件上传解析等

问题:

1、请求如何给前端控制器?这个应该在web.xml中进行部署描述

2、前端控制器如何根据请求信息选择页面控制器进行功能处理?我们需要配置HandlerMapping进行映射

3、如何支持多种页面控制器?配置HandlerAdapter从而支持多种类型的页面控制器

4、页面控制器如何使用业务对象?利用Spring IoC的依赖注入功能

5、页面控制器如何返回模型数据?使用ModelAndView返回

6、前端控制器如何根据页面控制器返回的逻辑视图名选择具体视图进行渲染?使用ViewResolver进行解析 7、不同的视图技术如何使用相应的数据模型?因为Model是一个Map数据结构,很容易支持其它视图技术

在此我们可以看出具体的核心开发步骤:

1、DispatcherServlet在web.xml中的部署描述,从而拦截请求到spring web mvc

2、HandlerMapping的配置,从而将请求映射到处理器

3、HandlerAdapter的配置,从而支持多种类型的处理器

4、ViewResolver的配置,从而将逻辑视图名解析为具体视图技术

5、处理器(页面控制器)的配置,从而进行功能处理

Spring Web MVC 的优势

1、清晰的角色划分:前端控制器(DispatcherServlet)、请求到处理器映射(HandlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)、处理器或页面控制器(Controller)、验证器(Validator)、命令对象(Command请求参数绑定到的对象就叫命令对象)、表单对象(FormObject提供给表单展示和提交到的对象就叫表单对象)

2、分工明确,而且扩展点相当灵活,可以很容易扩展,虽然几乎不需要

3、由于命令对象就是一个POJO,无需继承框架特定API,可以使用命令对象直接作为业务对象

4、和Spring的其它框架无缝集成,是其它Web框架所不具备的

5、可适配,通过HandlerAdapter可以支持任意的类作为处理器

6、可定制性,HandlerMapping、ViewResolver等能够非常简单地定制

7、功能强大的数据验证、格式化、绑定机制

8、利用Spring提供的Mock对象能够非常简单的进行Web单元测试

9、本地化、主题的解析的支持,使我们更容易进行国际化和主题的切换

10、强大的JSP标签库,使JSP编写更容易 还有比如RESTful风格的支持、简单的文件上传、约定大于配置的契约式编程支持、基于注解的零配置支持等等

时间: 2024-09-29 23:37:10

SpringMVC核心架构具体流程的相关文章

SpringMVC核心架构的具体流程

核心架构的具体流程步骤如下: 1.首先用户发送请求-->DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行 处理,作为统一访问点,进行全局的流程控制: 2.DispatcherServlet-->HandlerMapping, HandlerMapping 将会把请求映射为HandlerExecutionChain 对象(包含一 个Handler 处理器(页面控制器)对象.多个HandlerInterceptor 拦截器)对象,通过这种策略模式,

SpringMVC核心工作原理

SpringMVC的工作原理图: SpringMVC流程 1.  用户发送请求至前端控制器DispatcherServlet. 2.  DispatcherServlet收到请求调用HandlerMapping处理器映射器. 3.  处理器映射器找到具体的处理器(可以根据xml配置.注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet. 4.  DispatcherServlet调用HandlerAdapter处理器适配器. 5.  Handl

移动支付平台间接口报文解析核心架构及平台交易全程实录

移动支付平台间接口报文解析核心架构及平台交易全程实录 (HttpClient+SpringMVC+Spring3+Hibernate3+自定义Annotation) 课程分类:Java框架 适合人群:中级 课时数量:52课时 用到技术:JavaBean .Spring3.X. SpringMVC. Hibernate3.X.Apache HttpClient 3.x.JUnit4.x.自定义Annotation + java反射技术 涉及项目:移动支付平台间接口 咨询qq:1840215592

【转】Scrapy研究探索(三)——Scrapy核心架构与代码运行分析

转自 http://blog.csdn.net/u012150179/article/details/34441655 学习曲线总是这样,简单例子“浅尝”,在从理论+实践慢慢攻破.理论永远是基础,切记“勿在浮沙筑高台”. 一. 核心架构 关于核心架构,在官方文档中阐述的非常清晰,地址:http://doc.scrapy.org/en/latest/topics/architecture.html. 英文有障碍可查看中文翻译文档,笔者也参与了Scraoy部分文档的翻译,我的翻译GitHub地址:h

移动支付平台间接口报文解析技术核心架构实现、及平台交易处理项目全程实录教程

<基于移动支付平台间接口报文解析技术核心架构实现.及平台交易处理项目全程实录>课程讲师:MoMo 课程分类:Java框架适合人群:中级课时数量:52课时用到技术:JavaBean .Spring3.X. SpringMVC. Hibernate3.X.Apache HttpClient 3.x.JUnit4.x.自定义Annotation + java反射技术涉及项目:移动支付平台间接口咨询QQ:1337192913 课程介绍:   本课程抛开理论.以项目为驱动,适用于初次接触报文收发.组装解

转载:VLC架构及流程分析

这个是一篇转载的文章,但是没有找到出处,所以如果作者看到了这篇文章,请联系我,我将按照您的意愿或者删除,或者附上您的原文链接! 0x00 前置信息 VLC是一个非常庞大的工程,我从它的架构及流程入手进行分析,涉及到一些很细的概念先搁置一边,日后详细分析. 0x01 源码结构(Android Java相关的暂未分析) # build-android-arm-linux-androideabi/:第三方库. # modules/:模块代码. # modules/demux: 解复用模块代码. # m

netty源码解解析(4.0)-1 核心架构

netty是java开源社区的一个优秀的网络框架.使用netty,我们可以迅速地开发出稳定,高性能,安全的,扩展性良好的服务器应用程序.netty封装简化了在服务器开发领域的一些有挑战性的问题:jdk nio的使用:多线程并发:扩展性.它还提供了多种应用层协议的支持:http/https/websock, protobuf, 自定义协议, 简化了服务器协议的开发. netty是一个基于事件驱动的框架,它把事件分成两种类型:输入事件(inbound)和输出事件(outbound), 整个框架都是围

Scrapy研究探索(三)——Scrapy核心架构与代码执行分析

学习曲线总是这样,简单样例"浅尝".在从理论+实践慢慢攻破.理论永远是基础,切记"勿在浮沙筑高台". 一. 核心架构 关于核心架构.在官方文档中阐述的非常清晰,地址:http://doc.scrapy.org/en/latest/topics/architecture.html. 英文有障碍可查看中文翻译文档.笔者也參与了Scraoy部分文档的翻译.我的翻译GitHub地址:https://github.com/younghz/scrapy_doc_chs.源rep

spring初始(介绍、核心架构)

1.spring介绍 (1)spring与三层架构的关系: spring负责管理项目中的所有对象,是一个一站式的框架,容器中的对象决定了spring的功能. (2)特点: 是一个开源框架 轻量级(与EJB对比),依赖资源少,消耗的资源少 (3)分层: web层:struts.SpringMVC service层:spring dao层:hibernate.mybatis.jdbcTemplate.springdata spring是一个分层的一站式(每个层都提供解决方案)框架. (4)核心: 控