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";
    }
}

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

image


注意,浏览器通过 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


相关文章
|
4天前
|
存储 前端开发 Java
Spring MVC中@SessionAttributes注解使用详解
Spring MVC中@SessionAttributes注解使用详解
24 0
|
19天前
|
存储 前端开发 Java
Java Web框架,如Spring MVC,是一种用于构建Web应用程序的软件框架:学生考试Web应用程序
Java Web框架,如Spring MVC,是一种用于构建Web应用程序的软件框架。它们提供了一种结构化的方法,用于处理Web请求、生成动态内容和管理Web应用程序的组件。以下是关于Java Web框架和Spring MVC的详细解释,以及如何使用Spring MVC创建一个简单的Web应用程序的示例代码。
|
19天前
|
设计模式 存储 前端开发
介绍Spring MVC框架,以及如何使用它构建Web应用程序。
Spring MVC 是一个用于构建 Java Web 应用程序的强大框架。它基于经典的 MVC(Model-View-Controller)设计模式,提供了一种结构化的方法来开发可维护和可扩展的 Web 应用程序。在这篇文章中,我们将深入介绍 Spring MVC 框架,包括其核心概念、工作原理以及如何使用它构建 Web 应用程序。
|
19天前
|
前端开发 Java API
什么是RESTful API,Spring MVC如何支持RESTful架构
RESTful API(Representational State Transfer)是一种基于HTTP协议的软件架构风格,用于设计网络应用程序的API。它强调使用标准的HTTP方法(GET、POST、PUT、DELETE等)来进行资源的操作,以及使用URI来标识资源。RESTful API的设计目标是简单、可扩展、易于理解和使用。
|
21天前
|
设计模式 前端开发 Java
一篇文章让使你的Spring Mvc学习入门,还不来了解吗?
一篇文章让使你的Spring Mvc学习入门,还不来了解吗?
|
25天前
|
JSON 前端开发 Java
Spring MVC入门必读:注解、参数传递、返回值和页面跳转(下)
Spring MVC入门必读:注解、参数传递、返回值和页面跳转(下)
29 0
|
25天前
|
JSON 前端开发 Java
Spring MVC入门必读:注解、参数传递、返回值和页面跳转(上)
Spring MVC入门必读:注解、参数传递、返回值和页面跳转(上)
25 0
|
26天前
|
设计模式 前端开发 Java
spring MVC
spring MVC
15 0
|
27天前
|
监控 前端开发 Java
学习 [Spring MVC] 的JSR 303和拦截器,提高开发效率
学习 [Spring MVC] 的JSR 303和拦截器,提高开发效率
25 0
|
28天前
|
前端开发 Java Spring
Spring MVC拦截器+注解方式实现防止表单重复提交
Spring MVC拦截器+注解方式实现防止表单重复提交
相关产品
云迁移中心
推荐文章
更多