当前位置: 首页 > article >正文

【SpringMVC】深入解析@ RequestMapping 注解的概念及使用和 MVC 介绍

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


Spring Web MVC入门


1. Spring Web MVC


什么是 Spring Web MVC?

MVC官方文档介绍

Spring Web MVC是Spring框架中的一个用来做网站开发的部分,它是基于Servlet技术的。

虽然它的正式名字叫“Spring Web MVC”,但大家一般都简称它“SpringMVC”。

什么是 Servlet ?

Servlet是一种技术,用来创建动态网页。

它其实是一种规范,也就是规定了如何写Java Web应用的规则。但单靠规范本身不能做任何事,必须要开发者根据这些规则写代码,才能实现它的功能。

很多公司都可以根据这个规范来开发相应的软件,比如Tomcat、Weblogic、Jetty等,它们被叫做“Servlet容器”。

这些容器的作用就是管理和运行开发者写的Servlet代码。

从上述定义我们可以得出一个信息:Spring Web MVC是一个Web框架。 下面咱们简称之为:Spring MVC

然而要真正的理解什么是Spring MVC?我们首先要搞清楚什么是MVC?


1.1 MVC 定义


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

在这里插入图片描述

  • Model:数据的管理者,负责存取和处理数据,如数据库操作。
  • View:数据的展示者,用户看到的界面,如网页或APP界面。
  • Controller:协调者,接收用户请求,选择对应的Model处理,并返回结果到View。
  • Model:是看不见的数据管家 (数据库操作/计算逻辑),后厨
  • View:是看得见的界面(你操作的按钮/表格),点餐菜单
  • Controller: 是传话小秘书 (在界面和数据之间跑腿传话),传菜单的服务员

1.2 什么是Spring MVC?


MVC是一种架构设计模式,也是一种思想,而Spring MVC是对MVC思想的具体实现。除此之外,Spring MVC还是一个Web框架。

总结来说,Spring MVC是一个实现了MVC模式的Web框架。所以,Spring MVC主要关注有两个点:

  1. MVC
  2. Web框架

Spring MVC 全称是 Spring Web MVC。

在这里插入图片描述

其实,Spring MVC我们在前面已经用过了,在创建Spring Boot项目时,我们勾选的Spring Web框架其实就是Spring MVC框架:

可以看到,Spring Web的介绍是:

Build web, including RESTful, applications using Spring MVC. Uses Apache Tomcat as the default embedded container.

这时候可能有些 uu 就懵了,前面创建的不是SpringBoot项目吗?怎么又变成了Spring MVC项目?他们之间到底有着什么样的关系?

  • SpringBoot是2014年发布的,Spring是2004年发布的,在2014年发布之前,就不能用Spring实现MVC架构吗?显然不是了。
  • Spring Boot只是实现Spring MVC的其中一种方式而已。
  • Spring Boot可以添加很多依赖,借助这些依赖实现不同的功能。Spring Boot通过添加Spring Web MVC框架,来实现web功能。

不过Spring在实现MVC时,也结合自身项目的特点,做了一些改变,相对而言,下面这个图或许更加合适一些……

在这里插入图片描述


在这里插入图片描述

现在请求不再先走view再走controller,请求可以直接发送到controller

controller在受到model传回来的响应后,可以返回给 view,也可以直接返回浏览器

后端开发一般就不会让请求和响应交互过程走view,不过核心没变 ,比如上面的例子中,去饭店吃饭:

  • 一些饭店是前厅来负责接待客户,帮助客户点餐,也就是 Controller 来负责接收用户的请求。
  • 去公司面试,直接由面试官来接待候选人,省去了HR中间的交接过程。

2. 学习Spring MVC


既然是Web框架,那么当用户在浏览器中输入了url之后,我们的Spring MVC项目就可以感知到用户的请求,并给予响应。

咱们学习Spring MVC,重点也就是学习如何通过浏览器用户程序进行交互。主要分以下三个方面:

  1. 建立连接:让用户(浏览器)能找到并访问你的 Spring 程序,简单来说就是让用户输入网址时能够打开你的网页。

  2. 请求:用户在网页上点击、输入等操作时,会发送一些信息(比如表单数据)。你的程序需要能接收到这些信息,以便做进一步处理。

  3. 响应:当程序处理完用户的请求后,需要把处理结果(比如网页内容)返回给用户,这就是响应。

总结一下:就是让用户通过浏览器访问程序,获取信息,再把结果返回给用户。

对于Spring MVC来说,掌握了以上3个功能就相当于掌握了Spring MVC。


2.1 项目准备


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

Spring MVC使用Spring Boot的方式创建

创建项目时,勾选上Spring Web模块即可,如下图所示:

在这里插入图片描述


2.2 建立连接


在Spring MVC中使用 @RequestMapping 来实现URL路由映射,也就是浏览器连接程序的作用

我们先来看看代码怎么写,创建一个 UserController 类,实现用户通过浏览器和程序的交互,具体实现代码如下:

在这里插入图片描述

资源路径:类路径+方法路径(资源路径要唯一),建议给所有的类都加上类路径,可以:

  • 使用唯一命名类路径,避免报错;
  • 提高可读性;

方法名和路径名称无需一致

接下来,我们运行程序,访问:http://127.0.0.1:8080/sayHi,就可以看到程序返回的数据了:

在这里插入图片描述


加上类路径也可以:

在这里插入图片描述


2.2.1 @ RequestMapping 注解介绍

@RequestMapping 是Spring Web MVC应用程序中最常被用到的注解之一,它是用来注册接口的路由映射的。

表示服务收到请求时,路径为 /sayHi 的请求就会调用 sayHi 这个方法的代码。

路由映射:当用户访问一个URL时,将用户的请求对应到程序中某个类的某个方法的过程就叫路由映射。

既然@RequestMapping已经可以达到我们的目的了,我们为什么还要加@RestController呢?

我们把@RestController去掉,再来访问一次:

在这里插入图片描述

可以看到,程序报了404,找不到该页面。

这就是@RestController起到的作用。

一个项目中,会有很多类,每个类可能有很多的方法,Spring程序怎么知道要执行哪个方法呢?

Spring会对所有的类进行扫描,如果类加了注解@RestController,Spring 才会去看这个类里面的方法有没有加@RequestMapping这个注解,当然它的作用不止这一点。


2.2.2 @ RequestMapping使用

@RequestMapping既可修饰类,也可以修饰方法,当修饰类和方法时,访问的地址是资源路径,资源路径=类路径+方法路径

@RequestMapping标识一个:设置映射请求的请求路径的初始信息
@RequestMapping标识一个方法:设置映射请求请求路径的具体信息

在这里插入图片描述

访问地址:http://127.0.0.1:8080/user/sayHi

在这里插入图片描述


注意:

@RequestMapping的URL路径最前面加不加/(斜杠)都可以,Spring程序启动时,会进行判断,如果前面没有加,Spring会拼接上一个/

在这里插入图片描述

访问 http://127.0.0.1:8080/user/sayHi,依然可以正确响应。

在这里插入图片描述

通常情况下,我们加上/

@RequestMapping的URL路径也可以是多层路径,最终访问时,依然是类路径+方法路径
在这里插入图片描述

访问路径:http://127.0.0.1:8080/user/m1/say/hi

在这里插入图片描述


2.2.3 @ RequestMapping是GET还是POST请求?

GET请求

浏览器发送的请求类型都是GET,通过以上案例,可以看出来 @RequestMapping 支持GET请求。


POST请求

我们通过 form 表单来构造请求:

创建test.html,HTML代码:

在这里插入图片描述


前端代码放在static目录下,访问方式为:http://127.0.0.1:8080/test.html

在这里插入图片描述


如果有多层目录,访问链接从static目录开始写。

在这里插入图片描述

如上图,访问链接为:http://127.0.0.1:8080/html/test.html。

在这里插入图片描述

从运行结果可以看出:@RequestMapping既支持GET请求,又支持POST请求。同理,也支持其他的请求方式。

那如何指定GET或者POST类型呢?

指定GET/POST方法类型

我们可以显式地指定 @RequestMapping 来接收POST的情况,如下所示:

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


http://www.kler.cn/a/577431.html

相关文章:

  • 晏殊几何学讲义
  • C++:string容器(下篇)
  • clickhouse的优缺点
  • python实战项目61:去除文本中的表情符号
  • 基于Python+Django的网上招聘管理系统
  • qt ui相关的第三方库插件库
  • 从源到目标:深度学习中的迁移学习与领域自适应实践
  • 更多文章请查看
  • 操作系统知识点22
  • The Rust Programming Language 学习 (三)
  • 电脑的常见问题的原因+解决方法
  • 《从零构建企业级容器镜像生态:Harbor与Registry双星架构实战手记》
  • 机器学习图像标记工具MyVision的使用教程
  • 计算机网络:计算机网络的组成和功能
  • 【自学笔记】Numpy基础知识点总览-持续更新
  • 第10章 metasploit(网络安全防御实战--蓝军武器库)
  • 批量将 Word 拆分成多个文件
  • 从青铜巨人到硅基生命:机器人文明的意识觉醒之路--三千年人类想象与科技突破的双螺旋演进)
  • C# Lambda 表达式 详解
  • 【leetcode hot 100 73】矩阵置零