初识 Spring(06)---(MVC原理)

简介: MVC原理MVC  原理图Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。  通常模型对象负责在数据库中存取数据。

MVC原理

MVC  原理图

mvc%e6%a8%a1%e5%bc%8f

Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
  通常模型对象负责在数据库中存取数据。

View(视图)是应用程序中处理数据显示的部分。
  通常视图是依据模型数据创建的。

Controller(控制器)是应用程序中处理用户交互的部分。
  通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

spring MVC  原理图

过程:

1.客户端发送HTTP请求,先到中央处理器(servlet),中央处理器会将 url 地址传给 处理器映射器;

2. 处理器映射器根据  url 地址 找到处理器(自己写的),找到后生成一个处理器对象,然后该对象和拦截器链一起返回给中央处理器;

3.中央处理器收到真正的处理器对象后,它自身并不能调用该处理器,而是通过处理器适配器;处理器对象给处理器适配器发送

ModelAndView 对象(里面封装了数据信息,可以从处理器调用 service--dao--从数据库查询信息,将这些信息放到 Model 里面, Model里存放数据信息;View 里存放逻辑视图,即指向真正 JSP 页面的字符串),处理器适配器收到ModelAndView 对象会将其传给中央处理器;

4.这时中央处理器收到的View只是个字符串,需要将其转换成真正的视图;调用视图解析器(能将逻辑视图名找到真正的视图,并将真正的视图(JSP)返回给中央处理器),这时中央处理器有了数据和视图;

5.进行视图渲染(将JSP页面中的 el表达式 和 jstl标签 用 model 中的数据进行替换)后中央处理器有了一个静态页面;再将这个

静态页面返回给客户端

图片升级(实际上和上图一样)

更高端一点

Spring的模型-视图-控制器(MVC),该框架是围绕一个DispatcherServlet来设计的,这个DispatcherServlet就是一个我们很熟悉的Servlet,当然这个Servlet,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时区与主题渲染等,甚至还能支持文件上传等功能。原理 如下图所示:

关于上图的一个说明:

1、首先,Http请求:将客户端请求提交到DispatcherServlet这个Servlet。

2、然后,找到处理器:由DispatcherServlet控制器查询出一个或多个HandlerMapping,并且找到处理请求的Controller(控制器类)。

3、然后,调用处理器:DispatcherServlet将请求提交到Controller(控制器类)。

4、然后,调用业务处理和返回结果:Controller调用业务逻辑处理后,返回了ModelAndView。

5.、然后,处理视图映射并返回模型: DispatcherServlet查询到一个或多个ViewResoler视图解析器后,找到ModelAndView指定的视图(页面)。

7、最后,就是Http响应了:视图负责将结果显示到客户端页面上。

目录
相关文章
|
6月前
|
缓存 Java 开发者
【Spring】原理:Bean的作用域与生命周期
本文将围绕 Spring Bean 的作用域与生命周期展开深度剖析,系统梳理作用域的类型与应用场景、生命周期的关键阶段与扩展点,并结合实际案例揭示其底层实现原理,为开发者提供从理论到实践的完整指导。
712 22
|
6月前
|
人工智能 Java 开发者
【Spring】原理解析:Spring Boot 自动配置
Spring Boot通过“约定优于配置”的设计理念,自动检测项目依赖并根据这些依赖自动装配相应的Bean,从而解放开发者从繁琐的配置工作中解脱出来,专注于业务逻辑实现。
2065 0
|
5月前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
5月前
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
5月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
586 3
|
7月前
|
Java 关系型数据库 数据库
深度剖析【Spring】事务:万字详解,彻底掌握传播机制与事务原理
在Java开发中,Spring框架通过事务管理机制,帮我们轻松实现了这种“承诺”。它不仅封装了底层复杂的事务控制逻辑(比如手动开启、提交、回滚事务),还提供了灵活的配置方式,让开发者能专注于业务逻辑,而不用纠结于事务细节。
|
12月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestBody
`@RequestBody` 是 Spring 框架中的注解,用于将 HTTP 请求体中的 JSON 数据自动映射为 Java 对象。例如,前端通过 POST 请求发送包含 `username` 和 `password` 的 JSON 数据,后端可通过带有 `@RequestBody` 注解的方法参数接收并处理。此注解适用于传递复杂对象的场景,简化了数据解析过程。与表单提交不同,它主要用于接收 JSON 格式的实体数据。
1194 0
|
11月前
|
存储 人工智能 自然语言处理
RAG 调优指南:Spring AI Alibaba 模块化 RAG 原理与使用
通过遵循以上最佳实践,可以构建一个高效、可靠的 RAG 系统,为用户提供准确和专业的回答。这些实践涵盖了从文档处理到系统配置的各个方面,能够帮助开发者构建更好的 RAG 应用。
4815 116
|
8月前
|
前端开发 Java API
Spring Cloud Gateway Server Web MVC报错“Unsupported transfer encoding: chunked”解决
本文解析了Spring Cloud Gateway中出现“Unsupported transfer encoding: chunked”错误的原因,指出该问题源于Feign依赖的HTTP客户端与服务端的`chunked`传输编码不兼容,并提供了具体的解决方案。通过规范Feign客户端接口的返回类型,可有效避免该异常,提升系统兼容性与稳定性。
538 0
|
10月前
|
前端开发 Java 数据库连接
Spring核心原理剖析与解说
每个部分都是将一种巨大并且复杂的技术理念传达为更易于使用的接口,而这就是Spring的价值所在,它能让你专注于开发你的应用,而不必从头开始设计每一部分。
268 32