《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的执行流程可以概括为以下几个主要步骤:

  1. 发送请求:用户通过浏览器或其他客户端发送HTTP请求到服务器。

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

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

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

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

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

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

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


文章目录

开始学习吧

  1. 【第1章】spring-mvc搭建
  2. 【第2章】引入spring-mvc框架

常用注解

注解 描述 使用场景
@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应用。每个注解都有其特定的使用场景和功能,开发者可以根据实际需求选择使用。


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

视频中版本比较低,接下来我用新版本作为演示,视频中讲解的太细了,🆗;

官方文档,对每个点都介绍的比较细,但是没有提供样例代码,可以作为参考使用;

中文文档优点是中文,缺点是和最新版差了一个大版本,有总比没有强;

我负责把最精华、最干货的内容总结给大家;

带家人们学习最新的技术,推荐大家跟着我的博客学习,有问题可以评论或私聊我,尽力帮助大家。

bash 复制代码
诚邀您点击一下"关注"按钮,您的支持是我坚持创作的动力。


《Spring》系列文章目录

相关推荐
暮乘白帝过重山4 分钟前
Singleton和Prototype的作用域与饿汉式/懒汉式的初始化方式
spring·原型模式·prototype·饿汉式·singleton·懒汉式
腥臭腐朽的日子熠熠生辉32 分钟前
解决maven失效问题(现象:maven中只有jdk的工具包,没有springboot的包)
java·spring boot·maven
ejinxian34 分钟前
Spring AI Alibaba 快速开发生成式 Java AI 应用
java·人工智能·spring
杉之39 分钟前
SpringBlade 数据库字段的自动填充
java·笔记·学习·spring·tomcat
圈圈编码1 小时前
Spring Task 定时任务
java·前端·spring
俏布斯1 小时前
算法日常记录
java·算法·leetcode
27669582921 小时前
美团民宿 mtgsig 小程序 mtgsig1.2 分析
java·python·小程序·美团·mtgsig·mtgsig1.2·美团民宿
爱的叹息1 小时前
Java 连接 Redis 的驱动(Jedis、Lettuce、Redisson、Spring Data Redis)分类及对比
java·redis·spring
程序猿chen1 小时前
《JVM考古现场(十五):熵火燎原——从量子递归到热寂晶壁的代码涅槃》
java·jvm·git·后端·java-ee·区块链·量子计算
松韬2 小时前
Spring + Redisson:从 0 到 1 搭建高可用分布式缓存系统
java·redis·分布式·spring·缓存