springMVC执行流程及架构
springMVC简单执行流程
springMVC框架
执行流程:
1、用户发送请求至前端控制器DispatcherServlet
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器根据请求url找到具体的处理器(也就是带有@Controller的类),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器(调用拿到的处理器对象)
5、执行处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView(这一部分是由我们自己编写的)
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet前端控制器
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、ViewReslover解析后返回具体View
10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11,DispatcherServlet响应用户
我们可以看到DispatcherServlet是整个流程控制的中心。
组件说明:
- DispatcherServlet:前端控制器
用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,DispatcherServlet的存在降低了组件之间的耦合性。
- HandlerMapping:处理器映射器
HandlerMapping负责根据用户请求url(包名+类名+方法名)找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。
- Handler:处理器
Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。这一部分是手动编写的
由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。
- HandlAdapter:处理器适配器
通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
- ViewResolver:视图解析器
View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。
- View:视图
springmvc框架提供了很多的View视图类型的支持,包括:jstlView、freemarkerView、pdfView等。我们最常用的视图就是jsp。
一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。
总结说明:在springmvc的各个组件中,处理器映射器、处理器适配器、视图解析器称为springmvc的三大组件。 需要用户开发的组件有handler处理器、view视图
注解实现
配置组件扫描器
<!-- 配置controller扫描包,多个包之间用,分隔 -->
<context:component-scan base-package="" />
配置映射器和适配器
首先需要在主配置文件中,配置处理器映射器和处理器适配器。
<!-- 配置处理器映射器,配置处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.
method.annotation.RequestMappingHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.
method.annotation.RequestMappingHandlerAdapter" />
<!--可以直接配置注解驱动,无需配置上面两个bean-->
<!-- 自动加载处理器映射器和处理器适配器 -->
<mvc:annotation-driven />
配置完成之后使用@ResquestMapping("url")即可
处理器映射器,会对类中标记了@ResquestMapping的方法进行映射。
处理器适配器,会对标记@ResquestMapping的方法进行适配。
处理器适配器:
前端控制器接收到请求后,找到注解形式的处理器适配器,对RequestMapping标记的方法进行适配,并对方法中的形参进行参数绑定。可以在springmvc处理器适配器上自定义转换器Converter进行参数绑定。
配置视图解析器
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--逻辑视图名的前缀-->
<property name="prefix" value="/WEB-INF/" />
<!--逻辑视图名的后缀-->
<property name="suffix" value=".jsp" />
</bean>
<!--最终地址:前缀+逻辑视图名+后缀-->
springMVC执行流程及架构的更多相关文章
- 2.SpringMVC执行流程
SpringMVC 执行流程: 执行流程简单分析: 1.浏览器提交请求到中央调度器 2.中央调度器直接将请求转给处理器映射器 3.处理器映射器会根据请求,找到处理该请求的处理器,并将其封装为处理器执行 ...
- 面试高频SpringMVC执行流程最优解(源码分析)
文章已托管到GitHub,大家可以去GitHub查看阅读,欢迎老板们前来Star! 搜索关注微信公众号 码出Offer 领取各种学习资料! SpringMVC执行流程 SpringMVC概述 Spri ...
- springmvc执行流程详细介绍
1.什么是MVC MVC是Model View Controller的缩写,它是一个设计模式 2.springmvc执行流程详细介绍 第一步:发起请求到前端控制器(DispatcherServlet) ...
- springMVC执行流程及原理
spring的MVC执行原理 1.spring mvc将所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求 进行真正的处理工作. 2.DispatcherSer ...
- SpringMvc执行流程及底层代码流程
SpringMVC执行流程 01.客户端发送请求被我们在web.xml中配置DispatcherServlet(核心控制器)拦截: 默认执行DispatcherServlet中的 protecte ...
- SpringMVC执行流程总结
SpringMVC 执行流程: 用户发送请求至前端控制器 DispatcherServlet DispatcherServlet 收到请求调用处理映射器 HandlerMapping 处理映射器根据请 ...
- 【阅读SpringMVC源码】手把手带你debug验证SpringMVC执行流程
✿ 阅读源码思路: 先跳过非重点,深入每个方法,进入的时候可以把整个可以理一下方法的执行步骤理一下,也可以,理到某一步,继续深入,回来后,接着理清除下面的步骤. ✿ 阅读本文的准备工作,预习一下Spr ...
- 口述完SpringMVC执行流程,面试官就让同事回家等消息了
Srping MVC 执行流程真的是老生常谈的话题了,最近同事小刚出去面试,前面面试官相继问了几个 Spring 相关的问题,但当面试官问他,你知道 Srping MVC 的执行流程吗?小刚娴熟的巴拉 ...
- SpringMVC--从理解SpringMVC执行流程到SSM框架整合
前言 SpringMVC框架是SSM框架中继Spring另一个重要的框架,那么什么是SpringMVC,如何用SpringMVC来整合SSM框架呢?下面让我们详细的了解一下. 注:在学习SpringM ...
随机推荐
- 逆向破解之160个CrackMe —— 023-024
CrackMe —— 023 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 线程三态和JVM线程状态
1.线程三态:就绪态.运行态.阻塞态 2.JVM中的六种状态 NEW(新建状态):一个尚未启动的线程所处的状态. RUNNABLE(可运行状态):可运行线程的线程状态,可能正在运行,也可能在等待处理器 ...
- Comet OJ 夏季欢乐赛 Gree的心房
Comet OJ 夏季欢乐赛 Gree的心房 题目传送门 题目描述 据说每一个走进Gree哥哥心房的小姑娘都没有能够再走出来-- 我们将Gree哥哥的心房抽象成一个n \times mn×m的地图,初 ...
- chrome-解决该扩展程序未列在 Chrome 网上应用店中
1.win10添加策略组 复制以下内容到.bat文件中,右键-以管理员身份运行,即可添加策略组 pushd "%~dp0" dir /b C:\Windows\servicing\ ...
- Django Flatpage设置
参考链接:https://docs.djangoproject.com/en/1.11/ref/contrib/flatpages/ 知识点: 通过django.site数据库记录表,对应域名和请求站 ...
- [无效]网络流之Edmond-Karp算法
// 此博文为迁移而来,写于2015年2月2日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102vr12.html UP ...
- vb.net 改变 excel 底色
Dim excelApplication AsNew Excel.Application Dim excelWorkBook As Excel.Workbook = excelApplication. ...
- ftp 服务的部署
前言FTP 是File Transfer Protocol(文件传输协议), 用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序.用户通过客户机程序向服务器程序发出命令,服务 ...
- Flask项目之login提交
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/11/2 20:53 # @Author : zoulixiang # @Si ...
- atlassian-confluence - docker安装
一下内容在centos 7安装成功.一.安装docker 1.yum安装docker12 yum update # 更新yumyum install docker # yum安装docker 2.开启 ...