Spring MVC 之简介及常见注解

一、什么是 Spring MVC

Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从一开始就包含在 Spring 框架中。它的正式名称 "Spring Web MVC" 来自其源模块的名称 (Spring-webmvc),但它通常被称为"Spring MVC"。

什么是Servlet呢?
Servlet 是一种实现动态页面的技术。准确来讲Servlet是一套 Java Web 开发的规范,或者说是一套 Java Web 开发的技术标准。所谓实现 Servlet 规范,就是真正编写代码去实现Servlet 规范提到的各种功能,包括类、方法、属性等。
Servlet 规范是开放的,除了 Sun 公司,别人也可以实现 Servlet 规范,目前常见的实现了 Servlet 规范的产品包括 Tomcat、Weblogic、Jetty、Jboss、WebSphere 等,它们都被称
为"Servlet 容器"。Servlet 容器用来管理编写的 Servlet 类。

由上述可知:Spring Web MVC 是一个 Web 框架,简称为Spring MVC。

Spring MVC 项目创建和 Spring Boot 创建项目相同,在创建的时候选择 Spring Web 就相当于创建了 Spring MVC 的项目。

二、Spring MVC 注解

  • @RequestMapping 注解
    @RequestMapping 是 Spring Web MVC 应用程序中最常被用到的注解之一,它是用来注册接口的
    路由映射的。
    路由映射:当用户访问一个 URL 时, 将用户的请求对应到程序中某个类的某个方法的过程就叫路由映射。
    @RequestMapping 既可修饰类,也可以修饰方法 ,当修饰类和方法时,访问的地址是类路径 + 方法路径。
    @RequestMapping标识一个类:设置映射请求的请求路径的初始信息;
    @RequestMapping标识一个方法:设置映射请求请求路径的具体信息。
  • @RestController

当 Spring Boot 应用程序接收到 HTTP 请求时,它会查找与请求 URL 匹配的 @RestController 控制器。如果找到了匹配的控制器,Spring Boot 将调用匹配方法并将其返回值转换为 JSON 或 XML 响应体,并将其发送回客户端。

@RestController 注解的原理是使用 Spring MVC 框架来处理 HTTP 请求和响应。Spring MVC 框架使用 @RequestMapping 注解将请求 URL 映射到控制器方法,并使用 @ResponseBody 注解将方法返回的对象转换为响应体。@RestController 注解是 @Controller 和 @ResponseBody 注解的组合,可以方便地实现 RESTful API。

  • @RequestParam
    某些特殊的情况下,前端传递的参数 key 和我们后端接收的 key 可以不一致,比如前端传递了一个 time 给后端,而后端是使用 createtime 字段来接收的,这样就会出现参数接收不到的情况,如果出现这种情况,我们就可以使用 @RequestParam 来重命名前后端的参数值。
  • @RequestBody
    接收JSON对象, 需要使用 @RequestBody 注解。
    RequestBody: 请求正文,意思是这个注解作用在请求正文的数据绑定,请求参数必须在写在请求正文中。
    @ResponseBody 既是类注解,又是方法注解。如果作用在类上, 表示该类的所有方法, 返回的都是数据, 如果作用在方法上, 表示该方法返回的是数据。
  • @PathVariable
    path variable: 路径变量,这个注解主要作用在请求URL路径上的数据绑定。默认传递参数写在URL上,SpringMVC就可以获取到。
  • @RequestPart

@RequestPart注解用于上传文件。

相关推荐
码智社17 分钟前
Java实现RSA密钥生成、加密解密、加签验签
java
xixingzhe221 分钟前
spring ai简单使用skills
数据库·人工智能·spring
wear工程师25 分钟前
ThreadLocal 在线程池里为什么会串数据:别只会答内存泄漏
java·后端
Iruoyaoxh26 分钟前
栈和队列~
java·开发语言
审小匠OpenCPAi30 分钟前
银行流水核查怎么自动化?单边匹配、双向勾稽与图聚类异常检测的工程对比
java·前端·人工智能·python·审计
码上上班1 小时前
docker课程
java·docker·容器
腻害兔1 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:CRM 客户关系模块深度解析——从线索到回款,一套完整的 B2B 销售闭环是怎么搭的?
java·前端·javascript·vue.js·产品经理·ai编程
达子6661 小时前
第9章_HarmonyOs图解 用Java开发UI
java·ui·harmonyos
龙虾PRO3 小时前
能源与股票量化核心差异,AI全链路落地实操手册
java·面试·职场和发展
llwszx3 小时前
【Java/Go后端手撸原生Agent(第九篇):Plan-and-Execute规划模式——从“走一步看一步“到“先谋后动“】
java·python·golang·agent开发·plan模式·规划执行模式