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注解用于上传文件。

相关推荐
CCYe、26 分钟前
新模型上线、旧模型下线:企业AI网关如何管住模型版本
java·网络·数据库·人工智能
风筝在晴天搁浅28 分钟前
解题代码清爽版
java·开发语言
NeverFear79229 分钟前
【黑马点评】短信登录
java·redis·tomcat·intellij-idea
2601_962298671 小时前
正则表达式引擎 哪些
java·python·perl·pcre·正则表达式引擎
孙克旭_1 小时前
JVM 入门详解:JVM、JRE、JDK 区别,JVM 基础结构梳理
java·开发语言·jvm
随遇而安zx1 小时前
【地基篇】---JVM 内存结构知识点(Java 8 运行时数据区深度解析)
java·开发语言·jvm
布吉岛的石头1 小时前
Java 程序员第 48 阶段1:Transformer 架构总览与自注意力直觉,从 RNN 痛点理解注意力机制
java·架构·transformer
吴声子夜歌1 小时前
Guava——事件总线
java·网络·guava
en.en..1 小时前
Ubuntu嵌入式开发 export环境变量
java·开发语言·数据库
gf13211111 小时前
【python_回复邮件】
android·java·python