《Spring-MVC》系列文章目录

简介
Spring MVC是一种基于Java的实现MVC设计模式的请求驱动类型的轻量级Web框架,它通过把Model(模型)、View(视图)、Controller(控制器)分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便测试。Spring MVC是Spring框架的一部分,使用Spring MVC可以非常方便的设计出干净的Web层。

在Spring MVC中,控制器(通常称作Dispatcher Servlet)实现了前端控制器设计模式,每个web请求必须通过它以便它能够管理整个请求的生命周期。当一个web请求发送到Spring MVC应用程序,dispatcher servlet首先接收请求,然后组织那些在Spring web应用程序上下文配置的(例如实际请求处理控制器和视图解析器)或者使用注解配置的组件,所有的这些都需要处理该请求。

Spring MVC具有许多优点,例如:

  1. 天然与Spring框架集成,如IoC容器、AOP等。
  2. 提供强大的约定大于配置的契约式编程支持。
  3. 能简单的进行Web层的单元测试。
  4. 支持灵活的URL到页面控制器的映射。
  5. 非常容易与其他视图技术集成,如Velocity、FreeMarker等。
  6. 具有非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API。
  7. 支持灵活的本地化等解析。
  8. 具有更加简单的异常处理。
  9. 对静态资源的支持。
  10. 支持Restful风格。

高内聚低耦合,单一职责
随着前后端分离模式的流行,springmvc又衍生出了三层架构: 表现层(contorller), 业务逻辑层(service)和数据层.(dao)


流程
在这里插入图片描述SpringMVC的执行流程可以概括为以下几个主要步骤:
11. 发送请求:用户通过浏览器或其他客户端发送HTTP请求到服务器。

  1. 前端控制器接收请求:Spring MVC的前端控制器DispatcherServlet接收到请求。DispatcherServlet是Spring MVC的核心组件,它负责接收所有的请求并进行分发。

  2. 请求映射:DispatcherServlet根据请求的URL查找HandlerMapping,以确定处理该请求的Controller。HandlerMapping负责将URL映射到相应的Controller。

  3. 调用处理器:一旦找到了合适的Controller(也称为处理器或Handler),DispatcherServlet会调用处理器适配器执行该处理器来处理请求。处理器会根据业务逻辑处理请求,并生成一个ModelAndView对象。这个对象包含了视图的名字以及需要渲染到视图中的数据。

  4. 模型数据解析:在处理器生成ModelAndView对象后,如果模型数据中有自定义的类型,那么还需要通过ModelAndViewContainer进行数据类型转换和格式化,以便于视图解析和渲染。

  5. 视图解析:DispatcherServlet会将ModelAndView对象传递给ViewResolver进行视图解析。ViewResolver根据视图的名字解析出具体的视图实现类View,如JSP视图等。

  6. 视图渲染:视图实现类使用ModelAndView对象中的模型数据进行渲染,生成最终的响应结果(通常是HTML页面)。

  7. 返回响应:视图将渲染后的结果返回给DispatcherServlet,再由DispatcherServlet返回给客户端。


文章目录

开始学习吧

  1. 【第1章】spring-mvc搭建
  2. 【第2章】引入spring-mvc框架
  3. 【第3章】spring-mvc请求参数处理
  4. 【第4章】spring-mvc请求参数处理JSON数据

常用注解

注解描述使用场景
@RequestMapping用于映射请求URL到特定的处理器方法可用在类或方法上,定义请求的URL路径
@GetMapping用于映射GET请求URL到特定的处理器方法可用在类或方法上,定义请求的URL路径
@PostMapping用于映射POST请求URL到特定的处理器方法可用在类或方法上,定义请求的URL路径
@PathVariable绑定URL模板变量到控制器方法的参数上用于从URL中获取参数值
@RequestParam绑定请求参数到控制器方法的参数上用于从请求中获取参数值
@RequestBody用于绑定请求参数到命令对象(通常是JavaBean)上用于处理表单提交的数据绑定
@RequestHeader用于绑定请求头到命令对象(通常是JavaBean)上用于处理表单提交的数据绑定
@ResponseBody表示该方法的返回结果直接写入HTTP响应体中用于返回JSON、XML等响应数据
@RestController@Controller和@ResponseBody的组合注解用于创建RESTful Web服务的控制器
@RequestPart用于映射文件到 MultipartFile主要用于处理多部分请求,特别是当请求中包含文件上传时
@CookieValue用于绑定cookie到命令对象用于处理请求携带的cookie数据绑定
@SessionAttribute用于绑定session到命令对象用于处理请求携带的session数据绑定

这些注解在Spring MVC框架中是非常常用和重要的,它们帮助开发者更简洁、高效地处理HTTP请求和构建Web应用。每个注解都有其特定的使用场景和功能,开发者可以根据实际需求选择使用。


视频学习
官方文档
中文文档

视频中版本比较低,接下来我用新版本作为演示,视频中讲解的太细了,🆗;
官方文档,对每个点都介绍的比较细,但是没有提供样例代码,可以作为参考使用;
中文文档优点是中文,缺点是和最新版差了一个大版本,有总比没有强;
我负责把最精华、最干货的内容总结给大家;
带家人们学习最新的技术,推荐大家跟着我的博客学习,有问题可以评论或私聊我,尽力帮助大家。

诚邀您点击一下“关注”按钮,您的支持是我坚持创作的动力。

在这里插入图片描述
《Spring》系列文章目录

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Getting started - 英文版 - English Version

🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace This pa…

在不同操作系统上自动生成Protocol Buffers的Java语言包的方法

各语言的Protocol Buffers文件都需要通过protoc来生成,这个动作往往需要手动输入命令完成。本文介绍的方法,将借助Maven来实现自动化生成工作。这样开发者只要专注于proto的定义,且不用将生成的文件上传到代码仓库,从而降低开发的…

Tracecat:开源 SOAR

Tracecat 是一个面向安全团队的开源自动化平台。 开发人员认为,每个人都应该可以使用安全自动化,特别是人手不足的中小型团队。 核心功能、用户界面和日常工作流程基于一流安全团队的现有最佳实践。 使用专门的人工智能模型来标记、总结和丰富警报。 …

【软件开发规范篇】JAVA后端开发编码注释规范

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是&#xff0…

20240502在WIN11下显示桌面

20240502在WIN11下显示桌面 2024/5/2 15:06 百度:WIN11 状态栏 右键 显示桌面 在WIN10下,可以在状态栏点击右键→“显示桌面”来最小化全部窗口,特别是我打开的浏览器的巨多的窗口! 但是在WIN11下,这个【显示桌面】怎…

2024五一杯数学建模B题思路代码文章教学-交通需求规划与可达率问题

交通需求规划与可达率问题 问题总结: 问题一:在一个小型交通网络中,给定的起点和终点之间的交通需求需分配到相应路径上。目标是最大化任意一条路段出现突发状况时的交通需求期望可达率。 问题二:在一个较大的交通网络中&#xff…

Linux-进程调度器

1. 前言 在计算机中,进程的数量远多于cpu的数量,所以就存在,多个进程抢占一个cpu的情况,所以就需要一套规则,决定这些进程被处理的顺序,这就叫做进程调度。 在我的简单理解下,其实就是把进程放…

普乐蛙景区vr体验馆VR游乐场设备身历其境体验

小编给大家推荐一款gao坪效产品【暗黑战车】,一次6人同乘,炫酷外观、强大性能和丰富内容适合各个年龄层客群,紧张刺激的VR体验让玩家沉浸在元宇宙的魅力中,无论是节假日还是平日,景区商场助力门店提高客流量和营收~ ◆…

实验三 .Java 语言继承和多态应用练习 (课内实验)

一、实验目的 本次实验的主要目的是通过查看程序的运行结果及实际编写程序,练习使用 Java 语言的继承特性。 二、实验要求 1. 认真阅读实验内容,完成实验内容所设的题目 2. 能够应用多种编辑环境编写 JAVA 语言源程序 3. 认真体会多态与继承的作用…

B+树详解与实现

B树详解与实现 一、引言二、B树的定义三、B树的插入四、B树的删除五、B树的查找效率六、B树与B树的区别和联系 一、引言 B树是一种树数据结构,通常用于数据库和操作系统的文件系统中。它的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间…

WebGL/Cesium 大空间相机抖动 RTE(Relative to Eye)实现原理简析

在浏览器中渲染大尺寸 3D 模型:Speckle 处理空间抖动的方法 WebGL/Cesium 大空间相机抖动 RTE(Relative to Eye)实现原理简析 注: 相机空间和视图空间 概念等效混用 1、实现的关键代码 const material new THREE.RawShaderMaterial({uniforms: {cameraPostion: {…

【Qt QML】用CMake管理Qt工程

CMake是一个开源、跨平台的工具系列,用于构建、测试和打包软件。CMake使用简单的独立配置文件来控制软件编译过程。与许多跨平台系统不同,CMake被设计为与本地构建环境结合使用。 下面我们在CMake项目中使用Qt的最基本方法。首先,创建一个基本…

如何解决pycharm创建项目报错 Error occurred when installing package ‘requests‘. Details.

🐯 如何解决PyCharm创建项目时的包安装错误:‘requests’ 🛠️ 文章目录 🐯 如何解决PyCharm创建项目时的包安装错误:requests 🛠️摘要引言正文📘 **问题分析**🚀 **更换Python版本…

OpenCV 实现重新映射(53)

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV 实现霍夫圆变换(52) 下一篇 :OpenCV实现仿射变换(54) 目标 在本教程中,您将学习如何: 一个。使用 OpenCV 函数 cv::remap 实现简…

Java Web 开发 - 掌握拦截器和监听器

目录 深入了解Java Web的拦截器和监听器 拦截器(Interceptor) 拦截器的使用场景 拦截器实例 思维导图 ​编辑 监听器(Listener) 监听器的使用场景 监听器类型 监听器实例 思维导图​编辑 总结 深入了解Java Web的拦截器…

C——双向链表

一.链表的概念及结构 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。什么意思呢?意思就是链表在物理结构上不一定是连续的,但在逻辑结构上一定是连续的。链表是由一个一个的节点连…

uniapp0基础编写安卓原生插件和调用第三方jar包和编写语音播报插件之使用jar包插件

前言 如果你不会编写安卓插件,你可以先看看我之前零基础的文章(uniapp0基础编写安卓原生插件和调用第三方jar包和编写语音播报插件之零基础编写安卓插件), 我们使用第三方包,jar包编写安卓插件 开始 把依赖包,放到某个模块的/libs目录(myTestPlug/libs) 还要到build…

java-函数式编程-函数对象

定义 什么是合格的函数?无论多少次执行函数,只要输入一样,输出就不会改变 对象方法的简写 其实在类中,我们很多参数中都有一个this,被隐藏传入了 函数也可以作为对象传递,lambda就是很好的例子 函数式接口中…

ROS实操:通信机制的实现

最近闲来无事,打算重温了一下ROS方面的相关知识。先前的学习都是一带而过,发现差不多都忘了,学习的不够深入。因此,在重温的同时,写下了这篇关于ROS架构的学习博客。 上一篇博客的链接为:ROS架构的学习【No…

如何利用有限的数据发表更多的SCI论文?——利用ArcGIS探究环境和生态因子对水体、土壤和大气污染物的影响

原文链接:如何利用有限的数据发表更多的SCI论文?——利用ArcGIS探究环境和生态因子对水体、土壤和大气污染物的影响https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247602528&idx6&snc89e862270fe54239aa4f796af07fb71&chksmfa82…