从0开始回顾SpringMVC---系列一

简介: SpringMVC1、什么是SpringMVC?SpringMVC是一个基于Java实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的及部分,简化开发,减少出错,方便组内开发人员之间的配合。MVC● Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao)和服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能

SpringMVC

1、什么是SpringMVC?


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

MVC

  • Model(模型)数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao)和服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。
  • View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
  • Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。 也就是说控制器做了个调度员的工作。

2、SpringMVC的核心组件?


  1. DispatcherServlet:前置控制器,是整个流程控制的核心,控制其他组件的执行,进行统一调度,降低组件之间的耦合性,相当于总指挥。
  2. Handler:处理器,完成具体的业务逻辑,相当于 Servlet 或 Action。
  3. HandlerMapping:DispatcherServlet 接收到请求之后,通过 HandlerMapping 将不同的请求映射到不同的 Handler。
  4. HandlerInterceptor:处理器拦截器,是一个接口,如果需要完成一些拦截处理,可以实现该接口。
  5. HandlerExecutionChain:处理器执行链,包括两部分内容:Handler 和 HandlerInterceptor(系统会有一个默认的 HandlerInterceptor,如果需要额外设置拦截,可以添加拦截器)。
  6. HandlerAdapter:处理器适配器,Handler 执行业务方法之前,需要进行一系列的操作,包括表单数据的验证、数据类型的转换、将表单数据封装到 JavaBean 等,这些操作都是由 HandlerAdapter 来完成,开发者只需将注意力集中业务逻辑的处理上,DispatcherServlet 通过 HandlerAdapter 执行不同的 Handler。
  7. ModelAndView:装载了模型数据和视图信息,作为 Handler 的处理结果,返回给 DispatcherServlet。
  8. ViewResolver:视图解析器,DispatcheServlet 通过它将逻辑视图解析为物理视图,最终将渲染结果响应给客户端。

3、SpringMVC 工作原理了解吗?


流程如下:

  1. 客户端向服务端发送一次请求,这个请求会先到前端控制器DispatcherServlet(也叫中央控制器);
  2. DispatcherServlet接收到请求后会调用HandlerMapping处理器映射器。由此得知,该请求该由哪个Controller来处理(并未调用Controller,只是得知);
  3. DispatcherServlet调用HandlerAdapter处理器适配器,告诉处理器适配器应该要去执行哪个Controller;
  4. HandlerAdapter处理器适配器去执行Controller并得到ModelAndView(数据和视图),并层层返回给DispatcherServlet;
  5. DispatcherServlet将ModelAndView交给ViewReslover视图解析器解析,然后返回真正的视图;
  6. DispatcherServlet将模型数据填充到View视图中进行视图渲染;
  7. DispatcherServlet将结果响应给客户端
相关文章
|
5G 网络架构 索引
安装一个开源虚拟路由器VPP-20.09
安装一个开源虚拟路由器VPP-20.09
|
JavaScript 前端开发
Element-ui 中表单(Form)验证数字值范围(大小)
Element-ui 中表单(Form)验证数字值范围(大小)
2593 0
Element-ui 中表单(Form)验证数字值范围(大小)
|
SpringCloudAlibaba 网络协议 Cloud Native
Spring Cloud Alibaba-全面详解(学习总结---从入门到深化)
Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案。
15747 2
Spring Cloud Alibaba-全面详解(学习总结---从入门到深化)
|
10月前
|
SQL 存储 开发框架
ASPX+MSSQL注如;SQL盲注
在ASPX与MSSQL环境下,SQL注入和SQL盲注是常见且危险的攻击方式。通过参数化查询、输入验证、最小权限原则以及使用WAF等防御措施,可以有效防止此类攻击的发生。了解和掌握这些技术,对于提升应用程序的安全性至关重要。希望本文能为您提供有价值的信息和指导。
201 23
|
Web App开发 JavaScript 前端开发
QRCode.js:使用 JavaScript 生成二维码
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.
2179 0
|
存储 关系型数据库 MySQL
MySQL中count是怎样执行的?———count(1),count(id),count(非索引列),count(二级索引列)的分析
MySQL中count是怎样执行的?———count(1),count(id),count(非索引列),count(二级索引列)的分析
356 0
MySQL中count是怎样执行的?———count(1),count(id),count(非索引列),count(二级索引列)的分析
|
Rust C语言 Windows
|
机器学习/深度学习 Java 数据处理
我心中的编程语言之王:Python
我心中的编程语言之王:Python
|
算法 Java API
记一次 OpenFeign 线上乱码问题
Accept-Encoding 和 Content-Encoding 是 HTTP 中用来对采用何种压缩格式传输正文进行协定的一对 header。工作原理如下: 浏览器发送请求,通过 Accept-Encoding 带上自己支持的内容编码格式列表 服务端从中挑选一个用来对正文进行编码,并通过 Content-Encoding 响应头指明响应编码格式。 浏览器拿到响应正文后,根据 Content-Encoding 进行解压缩。服务端若响应未压缩的正文,则不允许返回 Content-Encoding。
记一次 OpenFeign 线上乱码问题
|
网络协议 网络架构
计算机网络:IP、端口、网络通信协议、TCP/IP五层模型、字节序
计算机网络:IP、端口、网络通信协议、TCP/IP五层模型、字节序
256 0
计算机网络:IP、端口、网络通信协议、TCP/IP五层模型、字节序

热门文章

最新文章