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

【SpringMVC】常用注解

什么是MVC?

MVC是一种程序分层开发模式,分别是Model(模型),View(视图)以及Controller(控制器)。这样做可以将程序的用户界面和业务逻辑分离,使得代码具有良好的可扩展性、可复用性、可维护性和灵活性。

@Controller

显而易见,@Controller注解对应的是MVC模式中的Controller对象。在Bean注解存储对象一文中也有过介绍,@Controller表示的是控制器,归属于业务逻辑层,对前端发来的请求进行判断,观察其数据是否合理,也就是控制用户行为,判断参数合理性。

@RequestMapping

@RequestMapping,翻译过来的意思就是请求映射,顾名思义就是对前端发来的路由地址进行映射,使其对应到某个类或者方法上。

使用位置

1. Java类

如上图,若对应到某个类上,那么这个类其中的所有方法进行请求映射时都需要先把父路径加上。

2. Java方法

如上图,当用户想要进行登录的时候,前端就会向后端发一个路由,而路由正是根据这个@RequestMapping注解其中的请求映射而来。

常见属性

1. value

value指的就是请求地址,但是使用的时候一般其他属性不多见,因此也就将其直接省略。

@RequestMapping(value = "/login")

2. method

如果各位程序猿有了解过HTTP协议的话,这其实就是HTTP协议首行中的方法。本来设计协议的大佬是为了更好的描述一次请求是想要干啥,但是在实际开发中,好多都是一刀切,直接使用一个POST请求解决一切请求。

  • GET:获取资源,也就是CURD中的查询操作,将数据库中的一些资源给返回前端,然后前端调取显示到页面上;例如博客系统中可以使用GET请求来获取博客。
  • POST:添加资源/修改资源,较着重于添加资源,也就是CURD中的增加操作,给数据库中增加一些实例个体;例如写好一篇文章之后点击提交按钮就是发送POST请求将播客存储到数据库中。
  • DELETE:删除资源,也就是CURD中的删除操作,在数据库中删除一些信息;例如点击一篇博客的删除按钮就是发送DELETE请求将此篇博客删除。
  • PUT:修改资源,也就是CURD中的修改操作,将数据库中的一些信息进行修改;例如发现博客系统的一篇博客不太好,然后进行修改,再提交时就是使用PUT请求。
  • PATCH:新引入的一个方法,修改局部资源,还是修改操作,和PUT不太一样的是修改局部,其实我感觉还是比较鸡肋,毕竟有那么多还是POST一刀切,那为啥还要增加这种,不过从维护角度看还是非常不错,通过这些注解大概了解代码进行了啥操作。

上述最常用的就是GET和POST请求,在面试中也会问一些关于这两个操方法的不同点,需要切记的一点就是没有啥区别,毕竟都是人为规定的,那么肯定就是可以修改的。

@RequestMapping(value = "/login", method = RequestMethod.GET)@PostMapping(value = "/login")

综上所述,@RequestMapping注解就是进行路由映射,也就是前端在进行某些操作时会用到一些数据,此时前端就会发送路由,而后端根据发送的路由就可以映射到对应的类和方法上进行逻辑操作。

@Requestparam

@Requestparam,翻译过来就是请求参数。本质上写代码不使用这个注解也是没有问题的,但是为了代码的严谨性,建议叠加。

 

http://www.lryc.cn/news/274744.html

相关文章:

  • 关于曲率、曲率半径和曲率圆,看这几篇文章就够啦
  • java面试题-Spring常见的异常类有哪些?
  • 数据库选择题 (期末复习)
  • WeNet语音识别+Qwen-72B-Chat Bot+Sambert-Hifigan语音合成
  • 是否需要跟上鸿蒙(OpenHarmony)开发岗位热潮?
  • 【Golang】Json 无法表示 float64 类型的 NaN 以及 Inf 导致的 panic
  • bootstrap5实现宠物商店网站 Cat-Master
  • 基于多反应堆的高并发服务器【C/C++/Reactor】(中)创建并初始化TcpServer实例 以及 启动
  • 边缘计算设备是什么意思。
  • 使用ChatGPT midjourney 等AI智能工具,能为视觉营销做些什么?
  • 图像分割实战-系列教程4:unet医学细胞分割实战2(医学数据集、图像分割、语义分割、unet网络、代码逐行解读)
  • 防火墙未开端口导致zookeeper集群异常,kafka起不来
  • React-hook-form-mui(二):表单数据处理
  • java网络文件地址url的转换为MultipartFile文件流
  • JS实现/封装节流函数
  • ENVI 各版本安装指南
  • 60天零基础干翻C++————初识C++
  • 考研复试英语口语问答举例第二弹
  • MyBatis-Plus实现自定义SQL语句的分页查询
  • vue3 里的 ts 类型工具函数
  • 【SpringCloud】之远程消费(进阶使用)
  • 自然语言处理24-T5模型的介绍与训练过程,利用简单构造数据训练微调该模型,体验整个过程
  • CISSP 第5章 保护资产的安全
  • docker安装-在linux下的安装步骤
  • 在Uniapp中使用Echarts创建可视化图表
  • 基于python的leetcode算法介绍之动态规划
  • 通信原理期末复习——计算大题(一)
  • 【萤火虫系列教程】2/5-Adobe Firefly 文字​生成​图像
  • JDK 11:崭新特性解析
  • leetcode.在链表中插入最大公约数