Spring MVC 中的常见注解的用法(上)

简介: Spring MVC 中的常见注解的用法

认识 Spring MVC


什么是 Spring MVC


Spring MVC(正式名称:Spring Web MVC) 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。


  1. Spring MVC 是⼀个 Web 框架
  2. Spring MVC 是基于 Servlet API 构建的

MVC 的定义


MVC 是 Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构模式,它把软件系统分为模型、视图和控制器三个基本部分。



5403782abb4a4e1e9329da93d8d6f371.png

MVC 执行流程:


  1. 用户的请求首先到 Controller
  2. Controller 将请求转发给 Model
  3. Model 处理业务并将数据结果返回给 Controller
  4. Controller 将处理的数据发给 View
  5. View 将数据转换成页面发送给用户


MVC 是⼀种思想,⽽ Spring MVC 是对 MVC 思想的具体实现。

总结来说,Spring MVC 是⼀个实现了 MVC 模式,并继承了 Servlet API 的 Web 框架。既然是 Web框架,那么当⽤户在浏览器中输⼊了 url 之后,我们的 Spring MVC 项⽬就可以感知到⽤户的请求.


在创建 Spring Boot 项⽬时,我们勾选的 Spring Web 框架其实就是 Spring MVC 框架。


Spring MVC 注解的运用


  1. 连接的功能:将⽤户(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的 Spring 程序。
  2. 获取参数的功能:⽤户访问的时候会带⼀些参数,在程序中要想办法获取到参数。
  3. 输出数据的功能:执⾏了业务逻辑之后,要把程序执⾏的结果返回给⽤户

1. Spring MVC 的连接


首先创建一个 TestController 类,来实现用户与 Spring 程序的交互:


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller   //让该类随着 Spring 框架启动而加载
@ResponseBody   //返回非页面数据(这个注解在返回数据中讲解)
//@RestController 相当于@Controller + @ResponseBody
@RequestMapping("/test")   //路由器规则注册(一级路由)
public class TestController {
    @RequestMapping("/hi")    //路由器规则注册(二级路由)
    public String sayHi() {
        System.out.println("hi Spring MVC");
        return "<h1> 你好 Spring MVC <h1>";
    }
}


通过浏览器地址访问,来与程序交互:e83b2e1515c44c81a2829b976de34d3d.png


3bc2bf2d224f459998f31c9072354762.png


可以看到,通过我们访问地址 http://localhost:8080/test/hi 就可以执行sayHi 方法,并返回字符串到页面上了。


这里注意:

spring mvc 项目默认扫描路径是启动类所在的包下所有的子包,也就是说:我们新建的的类要想放入 IoC 中,就得在该包下创建类。(默认启动类是在 demo 包下)

ac231e1bd8103eaf4ab013e92a4e1161_5b7429ddab674f3685b9da9bc832f77f.png


@RequestMapping 注解


@RequestMapping 是 Spring Web 应⽤程序中最常被⽤到的注解之⼀,它是⽤来注册接⼝的路由映射的。


路由映射:所谓的路由映射指的是,当⽤户访问⼀个 url 时,将⽤户的请求对应到程序中某个类的某个⽅法的过程就叫路由映射。


@RequestMapping 即可修饰类,也可以修饰⽅法,当修饰类和⽅法时,访问的地址是类 + ⽅法。

@RequestMapping 也可以直接修饰⽅法,代码实现如下:

a1ff838a0f9e43e1a0665fc44f44596e.png

9e2be5f91cd94a389662e890718e29e1.png

默认情况下,@RequestMapping 是支持 post 和 get 请求的,我们用 Postman 来验证一下:

get 请求:


1c725ee8a5641da913b96c5de9754789_c7d3f8b69cc34cde99fa88699a47b98e.png

post 请求:

d8a6d5aba3f580c1a137549433992312_d376f88c59604bc995b7ccea97431218.png

在有些情况下,我们可能要该注解只支持其中一种请求,那要怎么实现呢?


  1. 只支持 get 请求的注解方式
@RestController
@RequestMapping("/test")
public class TestController {
  //方式一
  //下面 value 也可以改为 path
    @RequestMapping(value = "/hi",method = RequestMethod.GET)
    public String sayHi() {
        System.out.println("hi Spring MVC");
        return "<h1> 你好 Spring MVC <h1>";
    }
    //方式二
    @GetMapping("/hhh")
    public String hhh() {
        return "hello world";
    }
}

这里就只演示一下方式一:


注意,浏览器通过 url 来访问地址, 默认是 get 请求。

再通过 Postman 来构造一下 post 请求:

782afd3300c49a2b20b865980aa61b34_4e473ac54bd14d6fba228172bde4ef97.png

2. 只支持 post 请求的注解方式


@RestController
@RequestMapping("/test2")
public class Test2Controller {
    //方式一
    @RequestMapping(path = "/hi",method = RequestMethod.POST)
    public String sayHi() {
        return "你好";
    }
    //方式二
    @PostMapping("/hhh")
    public String hhh() {
        return "你好,世界!";
    }
}


这里通过浏览器直接访问就报错了:

b98e952f4ed04510a82d05cc1f5e3614.png


通过 Postman 构建 post 请求:

33330b505c34a9cf6551d6c3d287e21f_137216324448484fb70c7d02d551d787.png


相关文章
|
7天前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
131 73
|
2天前
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
34 21
|
7天前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
|
7天前
|
Java Spring
【Spring配置】idea编码格式导致注解汉字无法保存
问题一:对于同一个项目,我们在使用idea的过程中,使用汉字注解完后,再打开该项目,汉字变成乱码问题二:本来a项目中,汉字注解调试好了,没有乱码了,但是创建出来的新的项目,写的注解又成乱码了。
|
16天前
|
设计模式 前端开发 Java
步步深入SpringMvc DispatcherServlet源码掌握springmvc全流程原理
通过对 `DispatcherServlet`源码的深入剖析,我们了解了SpringMVC请求处理的全流程。`DispatcherServlet`作为前端控制器,负责请求的接收和分发,处理器映射和适配负责将请求分派到具体的处理器方法,视图解析器负责生成和渲染视图。理解这些核心组件及其交互原理,有助于开发者更好地使用和扩展SpringMVC框架。
27 4
|
2月前
|
前端开发 Java Spring
Spring MVC核心:深入理解@RequestMapping注解
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的核心,它将HTTP请求映射到控制器的处理方法上。本文将深入探讨`@RequestMapping`注解的各个方面,包括其注解的使用方法、如何与Spring MVC的其他组件协同工作,以及在实际开发中的应用案例。
47 4
|
2月前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
131 2
|
2月前
|
前端开发 Java Spring
探索Spring MVC:@Controller注解的全面解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序的基石之一。它不仅简化了控制器的定义,还提供了一种优雅的方式来处理HTTP请求。本文将全面解析`@Controller`注解,包括其定义、用法、以及在Spring MVC中的作用。
57 2
|
2月前
|
前端开发 Java 开发者
Spring MVC中的控制器:@Controller注解全解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序控制层的核心。它不仅简化了控制器的定义,还提供了灵活的请求映射和处理机制。本文将深入探讨`@Controller`注解的用法、特点以及在实际开发中的应用。
93 0
|
3月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
253 2