SpringMVC工作原理

文章目录

    • Spring MVC 概述
    • 组件介绍
    • Spring MVC的工作原理

Spring MVC 概述

SpringMVC是一个基于MVC模式的Web框架,它是Spring Framework的一部分。SpringMVC主要用于在Java Web应用程序中实现Web层,提供了一套与平台无关的、可重用的Web组件。
Spring MVC是Spring框架提供的一个实现webMVC设计模式的轻量级框架,全称是Spring Web MVC。它是目前主流的实现MVC设计模式的框架,提供前端路由映射、视图解析等功能。Java Web开发者必须要掌握的技术框架。
Spring Web MVC 框架提供 模型-视图-控制器 架构和随时可用的组件,用于开发灵活且松散耦合的 Web 应用程序。MVC 模式有助于分离应用程序的不同方面,如输入逻辑,业务逻辑和 UI 逻辑,同时在所有这些元素之间提供松散耦合。
MVC是一个架构模式,它分离了表现与交互。它被分为三个核心部件:模型、视图、控制器。下面是每一个部件的分工:
● 视图是用户看到并与之交互的界面。
● 模型表示业务数据,并提供数据给视图。
● 控制器接受用户的输入并调用模型和视图去完成用户的需求。
MVC是一种软件架构思想,把软件按照模型、视图、控制器来划分。
在Spring MVC中,Controller负责接收用户的请求和响应浏览器。用户通过视图层发送请求到服务器,请求被Controller接收。Controller调用相应的Model层处理请求,处理完毕后结果返回到Controller。Controller再根据请求处理的结果找到对应的View视图,渲染数据后最终响应给浏览器。Spring MVC对这套MVC流程进行封装,帮助开发者屏蔽底层细节,并且开放出相关接口供开发者调用,让MVC开发更简单方便。
总体来说,SpringMVC将Web层的处理流程分成了多个步骤,每个步骤都有对应的组件负责处理。通过这种方式,SpringMVC实现了松耦合的设计,并且提供了很高的可扩展性和灵活性。同时,SpringMVC也提供了很多常用的功能,例如数据绑定、表单验证、异常处理等,使得开发者可以更快速、更高效地开发出高质量的Web应用程序。

组件介绍

其核心组件包括DispatcherServlet(前置控制器)、Handler(处理器)、HandlerMapping(处理器映射)、HandlerInterceptor(处理器拦截器)、HandlerExecutionChain(处理器执行链)、HandlerAdapter(处理器适配器)、ModelAndView(模型数据和视图信息)、ViewResolver(视图解析器)等。
DispatcherServlet:前端控制器,作用就是接收请求,响应结果,相当于转发器
HandleMapping:处理器映射器,作用就是根据请求的URL查找Handler
HandlerAdapter:处理器适配器,作用就是按照特定的规则去执行Handler,也就是开发Handler时需要满足HandlerAdapter的规则,这样HandlerAdapter才能执行Handler。
View resolver:视图解析器,作用根据逻辑视图解析成真正的视图(view)
view:视图,是一个接口,其实现类能支持不同的view类型,jsp、freemarker、Excel等

Spring MVC的工作原理

在这里插入图片描述
1.用户发送请求至前端控制器DispatcherServlet
2. DispatcherServlet收到请求调用HandlerMapping处理器映射器
3.处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet
4.DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
5.执行处理器(Controller,也叫后端控制器)
6.Controller执行完成返回ModelAndView
7.HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9.ViewReslover解析后返回具体View
10DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)
11.DispatcherServlet响应用户

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/339699.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年程序员必备:掌握未来技术架构的关键方向

随着科技的飞速发展,程序员的角色也在不断演变。 到了2024年,仅仅掌握基本的编程技能已经远远不够,程序员必须紧跟技术潮流,深入理解并掌握新兴的技术架构方向,以确保在职场中的竞争力。本文将探讨2024年程序员必须关…

时间差异导致数据缺失,如何调整Grafana时间与Prometheus保持同步?

Grafana时间如何调快或调慢? 在k8s环境中,常使用prometheusgrafana做监控组件,prometheus负责采集、存储数据,grafana负责监控数据的可视化。 在实际的使用中,有时会遇到这样的问题,k8s集群中的时间比真实…

通义千问Qwen-72B-Chat基于PAI的低代码微调部署实践

作者:熊兮、求伯、一耘 引言 通义千问-72B(Qwen-72B)是阿里云研发的通义千问大模型系列的720亿参数规模模型。Qwen-72B的预训练数据类型多样、覆盖广泛,包括大量网络文本、专业书籍、代码等。Qwen-72B-Chat是在Qwen-72B的基础上…

电脑提示dll丢失怎么办,教你一招将dll修复

使用电脑时,你的电脑是否出现关于dll文件丢失或找不到的问题,出现这种问题又该如何解决呢,dll文件问题会导致软件无法打开,或者会导致系统崩溃。今天就来教大家如何快速解决dll文件修复。 一.如何修复dll修复 方法一:…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷5

某企业根据自身业务需求,实施数字化转型,规划和建设数字化平台,平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”,拟采用开源OpenStack搭建企业内部私有云平台,开源Kubernetes搭建云原生服务平台,选…

(N-137)基于springboot,vue运动会报名管理系统

开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,项目采用前后端分离 前端技术:vueAvueElementUI 服务端技术:springbootmybatis 本项…

Qt优秀开源项目之二十:RedPanda-CPP(小熊猫C++)

小熊猫C是跨平台、轻量易用的开源C/C集成开发环境。 官网:http://royqh.net/redpandacpp github:https://github.com/royqh1979/RedPanda-CPP 小熊猫C(原名小熊猫Dev-C 7)是基于Qt开发的Dev-C替代版本。和经典的Dev-C 5.11、新的Embarcadero …

切分大文件sql为小份

数据库太大了,整个备份导入出问题或者慢,需要将整个库按照表分割(一个表一个sql文件) 环境 win10 工具:python3.7pycharm 要分割的文件大小:6G,sql文件import redbname with open(best**.sql,…

redis stream restTemplate消息监听队列框架搭建

整体思路 1. pom增加redis依赖&#xff1b; 2. 消息监听器&#xff0c;实现StreamListener接口&#xff0c;处理消息到达逻辑&#xff1b; 3. 将消息订阅bean及监听器注册到配置中&#xff1b; 1. pom <?xml version"1.0" encoding"UTF-8"?> <…

STM32Cubemx PWM驱动SG90舵机

一、SG90相关介绍 名 称&#xff1a;9克舵机 180度 尺 寸&#xff1a;23mmX12.2mmX29mm 重 量&#xff1a;9克 扭 矩&#xff1a;1.5kg/cm 工 作 电 压: 4.2-6V 温 度 范 围:0℃--55℃ 运 行 速 度&#xff1a;0.3秒/60度 死 带 宽:10微秒 二、Cubemx配置 sys配置 RCC配置 LED…

JavaWeb- Tomcat

一、概念 老规矩&#xff0c;先看维基百科&#xff1a;Apache Tomcat (called "Tomcat" for short) is a free and open-source implementation of the Jakarta Servlet, Jakarta Expression Language, and WebSocket technologies.[2] It provides a "pure Ja…

docker 容器添加指定网络地址

docker 容器添加指定网络地址 在搭建halo博客时&#xff0c;准备让 halo、mysql8.1、nginx 三个容器在同一个网段中&#xff0c;并指定IP。 实现docker内部容器之间网络互通。 查看容器网络信息命令 docker inspect 容器名各容器部署成功后网络效果如下&#xff1a; nginx …