深入学习SpringMVC框架
大部分Java应用都是Web应用,展现层是WEB应用不可忽略的重要环节.Spring为了展现层提供了一个优秀的WEB框架Spring MVC .
文章目录
- 一.MVC模式简介
- 二.SpringMVC介绍
- 三.SpringMVC特点
- 四.原理解析 (面试常考)
- 五. 组件说明
- 六.核心分发器DispatcherServlet
一.MVC模式简介
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
- MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:
- ①Model(模型)表示应用程序核心(比如数据库记录列表)。
- ②View(视图)显示数据(数据库记录)。
- ③Controller(控制器)处理输入(写入数据库记录)。
- MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。
二.SpringMVC介绍
- Spring MVC 是一个表现层框架,它是Spring框架的一部分,用于完成于视图层进行数据交互的工作。
三.SpringMVC特点
- ①Spring MVC 框架并不知道使用的视图,
所以不会强迫开发者只使用 JSP 技术
- ②Spring MVC 分离了控制器、模型对象、过滤器以及处理程序对象的角色,这种分离让它们更容易进行定制
四.原理解析 (面试常考)
- 1、
客户端发出一个http请求给web服务器
,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet. - 2、DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参数Cookie等)以及HandlerMapping的配置
找到处理请求的处理器(Handler)
。 - 3-4、DispatcherServlet根据HandlerMapping找到对应的Handler,将处理权交给Handler(Handler将具体的处理进行封装)
,再由具体的HandlerAdapter对Handler进行具体的调用
。 - 5、Handler对数据处理完成以后将
返回一个ModelAndView()对象给DispatcherServlet。
- 6、Handler返回的ModelAndView()只是一个逻辑视图并不是一个正式的视图,
DispatcherSevlet通过ViewResolver将逻辑视图转化为真正的视图View。
- 7、Dispatcher
通过model解析出ModelAndView()中的参数进行解析最终展现出完整的view并返回给客户端
。
五. 组件说明
- DispatcherServlet:前端控制器
前端控制器用户请求到达前端控制器,它就相当于mvc模式中的c,
dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性
。
- HandlerMapping:处理器映射器
处理器映射器HandlerMapping负责根据用户请求找到Handler即处理器
,springmvc提供了不同的映射器实现不同的映射方式。
- Handler:处理器
Handler是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。
由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。
- HandlerAdapter:处理器适配器
通过HandlerAdapter对处理器进行执行,这是适配器模式的应用
,通过扩展适配器可以对更多类型的处理器进行执行。
- View Resolver:视图解析器
View Resolver负责将处理结果生成View视图
,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。
- View:视图
springmvc框架提供了很多的View视图类型的支持。
六.核心分发器DispatcherServlet
DispatcherServlet是Spring MVC的"灵魂"和"心脏"
,它负责接受HTTP请求并协调 SpringMVC的各个组件完成请求处理的工作。和任何Servlet一样,用户必须在web.xml中配置好DispatcherServlet。- (1)DispatcherServlet继承关系
- (2)DispatcherServlet介绍
- DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。
- (3) DispatcherServlet主要职责
DispatcherServlet主要用作职责调度工作,本身主要用于控制流程
文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析;
通过HandlerMapping,将请求映射到处理器(返回一个HandlerExecutionChain,它包括一个处理器、多个
HandlerInterceptor拦截器);通过HandlerAdapter支持多种类型的处理器(HandlerExecutionChain中的处理器);
通过ViewResolver解析逻辑视图名到具体视图实现;
本地化解析;
渲染具体的视图等;
如果执行过程中遇到异常将交给HandlerExceptionResolver来解析。
(4)DispatcherServlet辅助类
spring中的DispatcherServlet使用一些特殊的bean来处理request请求和渲染合适的视图。这些bean就是SpringMVC中的一部分。你能够通过在WebApplicationContext中的一个或多个配置来使用这些特殊的bean。但是,你不需要在SpringMVC在维护这些默认要使用的bean时,去把那些没有配置过的bean都去初始化一道。
- 初识Spring框架请参考:Spring框架基础
- Spring-IOC框架请参考:IOC详解
- Spring-AOP框架请参考:AOP详解
The best investment is in yourself
2020.03.28 记录辰兮的第39篇博客
深入学习SpringMVC框架相关推荐
- 框架写mysql插入为空_学习springMVC框架配置遇到的问题-数据写入不进数据库时的处理办法...
Idea简单SpringMVC框架配置 前边已经介绍过了Struts在Idea上的配置,相对于Struts来说,我觉得SpringMVC有更多的优势,首先Struts是需要对action进行配置,页面 ...
- java mvc框架代码_JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码)
原标题:JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码) JavaEE体系结构包括四层,从上到下分别是应用层.Web层.业务层.持久层.Struts和SpringMVC是Web层的 ...
- SpringMVC框架--学习笔记(下)
接上篇:SpirngMVC框架--学习笔记(上):https://blog.csdn.net/a745233700/article/details/81038382 17.全局异常处理: 系统中异常包 ...
- SpringMVC框架--学习笔记(上)
1.SpringMVC入门程序: (1)导入jar包:spring核心jar包.spring-webmvc整合Jar包 (2)配置前端控制器:web.xml文件中 <?xml version=& ...
- SpringMVC框架学习总结
Spring MVC框架学习总结 --田超凡 一.MVC设计模式 MVC设计模式是软件工程中的一种架构模式,他强制性的使软件的输入.处理和输出分开,把 ...
- SpringMVC框架 学习DAY_03:@RequestMapping注解/拦截器与过滤器
1. 关于@RequestMapping注解 在控制器中,在处理请求的方法之前添加@RequestMapping注解,可以配置请求路径与处理请求的方法的映射关系! 在@RequestMapping注解 ...
- SpringMVC框架 学习DAY_01:框架概括 / 简易应用 / 核心执行流程图 /在框架下显示HTML模板页面/ 接受请求
1. SpringMVC框架的作用 MVC = Model(数据模型) + View(视图) + Controller(控制器) SpringMVC框架主要解决了接收请求与处理响应的问题,也可以认为是 ...
- Java EE——SpringMVC框架学习
文章目录 一.SpringMVC的基本概念: 1.三层架构和MVC: 2.SpringMVC的概述: 3.SpringMVC在三层架构的位置: 二.SpringMVC 的入门: 三.入门案例的执行过程 ...
- Java培训学习笔记分享:SpringMVC框架
JavaEE体系结构包括四层,从上到下分别是应用层.Web层.业务层.持久层.Struts和SpringMVC是Web层的框架,Spring是业务层的框架,Hibernate和MyBatis是持久层的 ...
最新文章
- “小霸王学习机”再现?树莓派400正式发布,售价70美元
- Visual Studio找不到iOS模拟器
- linux配置tomcat内存配置文件,Linux与Windows下tomcat内存设置
- STM32开发 -- IAP详解
- VTK:绘图之ScatterPlot
- VTK:几何对象之PolyLine
- Laravel核心解读--服务容器(IocContainer)
- 【AI面试题】Kmeams算法流程以及Kmeans++介绍
- 跨境电商系统的一个架构演进
- SCSI设备IO过程:磁盘上线与IO过程
- 博途PLC 1200/1500PID PID_Temp 加热制冷双输出+级联控制(串级控制)
- 苹果电脑上四款好用的可以记事的日历软件
- 那么如何求出这个长轴和短轴呢?于是线性代数就来了
- 强大的web打印插件--Lodop
- Oracle 18c:拉里·埃里森亲自支招,数据库自动化之后,DBA何去何从?
- 手把手带你用viewpager实现gallary效果,外加无限循环,自动轮播
- # #define 以及 # ##解释
- Oracle 10g的闪回机制
- windows XP无法使用suspend to RAM (s3)功能的解决过程
- Nature 重大发现:癌基因竟不在染色体上?第一作者吴思涵亲身解读!
热门文章
- 目前以太网主要采用什么连接计算机,目前以太网主要采用______连接计算机,计算机能够独享带宽...
- html中diy的背景怎么透明,自制复古几何无缝纹案背景_html/css_WEB-ITnose
- 还在调API写所谓的AI“女友”,唠了唠了,教你基于python咱们“new”一个(深度学习)
- [漏洞分析] CVE-2022-0995 watch_queue 1bit “溢出“内核提权
- 争议不断的AI绘画,如今成为了顶流?
- 巴西柔术第三课:封闭式防守的降服技术
- 边坡裂缝拉绳位移计的原理及怎样进行长期健康监测
- 再厚的马赛克都能被扒干净?这款去码神器火了
- hacking8信息流邀请码第二关 代码详解
- 最近两周出去面试遇到的面试题(前端初级、长更)