spring MVC

1.什么是SpringMVC

Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。

2.工作原理

  1. 用户发来一个请求,首先进入的是前端控制器DispatcherServlet

  2. 前端控制器(DispacherServlet)将用户发来的请求发送给处理器映射器(HandlerMapping)

  3. 处理器映射器根据前端控制器发来的用户的请求找到对应符合的控制器(Handler),并且将其封装成处理器执行链,返回给前端控制器。

  4. 处理器适配器接收到来自前端控制器的执行链后,找到对应执行此执行链的处理器适配器(HandlerAdapter)来调用的具体的控制器(就是说其对应的方法或者逻辑)

  5. 处理器适配器 (HandlerAdaptoer) 会调用对应的具体的 Controller(处理业务逻辑)

  6. 控制器执行完成后,会返回一个ModelAndView对象给处理器适配器

  7. 处理器适配器将返回来的ModelAndView对象返回给前端控制器(到这里所有的业务处理过程就要完了,接下就是将结果以页面的形式响应给用户)

  8. 前端控制器将返回回来的ModelAndView对象交给视图解析器(ViewResolver),视图解析器根据传过来的View对象解析成对应的页面对象

  9. ViewResolver 将封装好的页面对象和Model对象返回给 DIspatcherServlet

  10. 前端控制器再将返回回来的Model对象交给视图(View)

  11. 视图根据传过来的Model对象再一次的对页面进行渲染(将模型数据填充至视图中),然后在返回给前端控制器。

  12. 前端控制器将完成的结果响应给浏览器,然后浏览器在展现给用户。

3.核心组件

1)DispatcherServlet是SpringMVC框架了里面的前端控制器

作用:统一处理用户发来的请求和响应,相当于一个中间转换器,减少了各个组件之间的调度,减少的耦合性。

2)HandlerMapping是SpringMVC框架里面的处理器映射器

作用:根据请求发来的url 和method找到对应的Handler(就是说在一个用到SpringMVC框架的项目中会有好多方法和逻辑,这个组件的作用就是找到对应的方法和组件返回给前端控制器)

3)Handler处理器,注意,这个需由工程师自己开发。

作用:在 DispatcherServlet 的控制下,Handler对具体的用户请求进行处理。

4)HandlerAdapter是SpringMVC框架提供的处理器适配器

作用:根据映射器找到的处理器Handler信息,按照特定的规则去执行相关的处理器 Handler。

5)ViewResolver是SpringMVC框架提供的视图解析器

作用:就是字如其名,就是用来将处理的结果解析成视图来展现给用户。视图解析器根据逻辑视图名解析成物理视图名,生成View视图对象,最后对视图进行渲染响应给用户。

6)View是开发者自己提供的视图

作用:根据model对象的要求来渲染页面,然后前端控器在响应给用户。

相关推荐
天天被压力7 分钟前
【A股分钟级高频数据完全手册 #04】指数分钟级行情数据接口:沪深指数Pro版最新分时取数
java·人工智能·python
敲代码的小小酥10 分钟前
谈SpringMVC与Spring WebFlux的区别与适用场景
java·后端·spring
天天被压力17 分钟前
【A股分钟级高频数据完全手册 #03】股票历史1分钟K线数据接口怎么用:Pro版批量拉取与本地缓存
java·人工智能·python
apcipot_rain23 分钟前
C++转Java日记(02)
java·开发语言·c++
nice_lcj52032 分钟前
【从零理解 Spring AI · 03】Spring AI 在 Spring 生态里的位置
java·spring boot·大模型·spring ai·ai应用开发
码农小河6611 小时前
基于SSM+JSP的高校专业信息管理系统【附源码+数据库】
java·开发语言·数据库
风若飞13 小时前
Spring Ai 入门遇到问题1
java·后端·spring
Nuanyt13 小时前
LeetCode Hot 100 链表专题(五)· 2 题(Java)
java·算法·leetcode·链表
黑马程序员毕设14 小时前
基于 Java 的餐饮点餐系统设计与应用报告
java·开发语言
SL_staff14 小时前
从文档工具到知识中枢:基于JVS数字底座构建企业级统一内容管理平台的技术实践
java·开源·全栈