SpringMVC注解全解析:构建高效Web应用的终极指南 (上)

SpringMVC 是一个强大的 Web 框架,广泛应用于 Java Web 开发中。它通过注解简化了配置,增强了代码的可读性。本文将全面解析 SpringMVC 中常用的注解及其用法,帮助你构建高效的 Web 应用。

一. MVC介绍

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

不过Spring在实现MVC时, 也结合⾃⾝项⽬的特点, 做了⼀些改变, 相对⽽⾔, 下⾯这个图或许更加合适 ⼀些. 

 

 二. Spring 注解介绍

1) @SpringBootApplication

        SpringBoot 项目的启动类 

Spring Boot 项目的基石,创建 SpringBoot 项目之后会默认在主类加上

@SpringBootApplication
public class SpringSecurityJwtGuideApplication {public static void main(java.lang.String[] args) {SpringApplication.run(SpringSecurityJwtGuideApplication.class, args);}
}

2)  @RequestMapping

@RequestMapping 注解用于映射 URL 到控制器类或方法。它可以用于类和方法上,定义请求的路径、方法类型(GET、POST 等)以及其他属性。

通常规范要求 类路径与方法路径都要写 规范~

@RequestMapping("/request") //类路径
@RestController()
public class RequestController {@RequestMapping("/hello") // 方法路径public String say(){return "你好呀";}

        @RequestMapping 的URL路径也可以是多层路径, 最终访问时, 依然是 类路径 + ⽅法路径 

2.1)  @RequestMaping是Get请求 还是 Post请求?

        我们后端程序员可以采用 Postman 软件 模拟发送 Get请求 与 Post请求.

      可从官网下载并使用  Postman

 

以上两种请求发送后均可 收到  

说明 @Requestmaping 既⽀持Get请求, ⼜⽀持Post请求. 同理, 也⽀持其他的请求方式.

        指定请求方式    @RequestMapping(value = "/getRequest",method= RequestMethod.POST)

3)  @RequestParam (后端参数映射)

        @RequestParam 注解用于绑定请求参数到方法的参数上。它可以设置默认值和是否必需。

        后端参数重命名

@RequestMapping("/m4")
public Object method_4(@RequestParam("time") String createtime) {return "接收到参数createtime:" + createtime;
}

      前端传递了一个名为time的参数,而后端希望将其映射到createtime字段,我们可以使用@RequestParam注解来实现这一点。

4) @PathVariable (获取URL中参数)

基本用法

@PathVariable 注解的基本用法是在控制器的方法参数中,通过注解将 URL 中的路径变量绑定到方法参数。

@Controller
@RequestMapping("/products")
public class ProductController {@RequestMapping("/{id}")public String getProduct(@PathVariable("id") int productId, Model model) {// 使用 productId 获取产品信息Product product = productService.getProductById(productId);model.addAttribute("product", product);return "productDetail"; // 返回视图名称}
}

 在上述例子中: 

  • @RequestMapping("/{id}") 指定了 URL 模式,其中 {id} 是一个路径变量。
  • @PathVariable("id") 将 URL 中的 id 部分绑定到 getProduct 方法的 productId 参数。

 通过合理使用 @PathVariable,可以有效地处理和解析路径中的变量部分,增强应用程序的灵活性和可维护性。

 5) @RequestPart (上传文件)

 @RequestPart 注解在 SpringMVC 中用于将请求的一部分(通常是 multipart/form-data 请求中的文件部分))绑定到方法的参数上。这在处理文件上传时非常有用。

基本用法

 @RequestPart 注解的基本用法是在控制器的方法参数中,通过注解将请求的一部分绑定到方法参数。

后端代码实现: 

 @RequestMapping("/m9")public String getfile(@RequestPart("file") MultipartFile file) throws IOException{//获取⽂件名称String fileName = file.getOriginalFilename();//⽂件上传到指定路径file.transferTo(new File("D:/" + file.getOriginalFilename()));return "接收到⽂件名称为: "+fileName;}

 

 

总结

在本文中,我们详细介绍了 SpringMVC 中一些常用的注解,包括 @SpringBootApplication@RequestMapping@RequestParam@PathVariable@RequestPart。通过这些注解,我们可以简化控制器的开发,增强代码的可读性和维护性。每个注解都有其独特的功能和应用场景,在构建高效的 Web 应用时发挥着重要作用。

这些注解是 SpringMVC 框架的基础,掌握它们将帮助你更好地理解和使用这个强大的 Web 框架。然而,SpringMVC 的注解体系还远不止于此。在下篇文章中,我们将继续探讨其他重要的注解. 

敬请期待《SpringMVC注解全解析:构建高效Web应用的终极指南(下)》!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/47076.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字通云平台 智慧政务OA PayslipUser SQL注入漏洞复现

0x01 产品简介 数字通云平台智慧政务OA产品是基于云计算、大数据、人工智能等先进技术,为政府部门量身定制的智能化办公系统。该系统旨在提高政府部门的办公效率、协同能力和信息资源共享水平,推动电子政务向更高层次发展。 0x02 漏洞概述 数字通云平台 智慧政务OA Paysli…

使用百度语音技术实现文字转语音

使用百度语音技术实现文字转语音 SpringBootVue前后端分离项目 调用api接口需要使用AK和SK生成AccessToken,生成getAccessToken的接口有跨域限制,所以统一的由后端处理了 部分参数在控制台->语音技术->在线调试里面能找到 Controller RestController RequestMapping(&q…

PostgreSQL的引号、数据类型转换和数据类型

一、单引号和双引号(重要): 1、在mysql没啥区别 2、在pgsql中,实际字符串用单引号,双引号相当于mysql的,用来包含关键字; -- 单引号,表示user_name的字符串实际值 insert into t_user(user_nam…

浏览器跨tab页面通信方式总结

需求: 浏览器不同 tab 标签页之间是独立的, 如果要通信必须通过特殊手段来实现跨标签页通信。 1.StorageEvent 事件 当一个标签页 localStorage 变化时(sessionStorage 无效),同源下另一个或其他所有标签页使用 DO…

python多级表头汇总

需求:将图一的数据展示为图二样式 图一: 图二: 图一具体的Excel截图 图二具体样式 python解决办法: # 导入 pandas 库,用于数据处理 import pandas as pd# 加载 Excel 文件 file_path 多级表头读取实例.xl…

科研绘图系列:R语言circos图(circos plot)

介绍 Circos图是一种数据可视化工具,它以圆形布局展示数据,通常用于显示数据之间的关系和模式。这种图表特别适合于展示分层数据或网络关系。Circos图的一些关键特点包括: 圆形布局:数据被组织在一个或多个同心圆中,每个圆可以代表不同的数据维度或层次。扇区:每个圆被划…

【BUG】已解决:SyntaxError invalid syntax

SyntaxError invalid syntax 目录 SyntaxError invalid syntax 【常见模块错误】 错误原因: 解决办法: 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于…

图书馆定位导航:RFID、VR与AR技术在图书馆中的应用

图书馆作为知识的宝库,承载着无数求知者的梦想与期待,随着馆藏书籍数量的激增与图书馆布局的日益复杂,读者在寻找目标书籍往往有许多困难。传统的索引号查询方式虽能提供书籍的基本信息,但在寻找过程中,因不熟悉图书馆…

【Android】使用视图绑定ViewBinding来代替findViewById

文章目录 介绍作用用法开启ViewBinding功能自动生成绑定类在Activity中使用访问视图控件 区别 介绍 ViewBinding 是 Android 开发中的一个功能,它简化了访问视图的过程,避免了使用 findViewById 的繁琐步骤。它通过生成与布局文件相对应的绑定类&#xf…

CentOS 7 安装Jenkins2.346.1(war方式安装)

既然想要安装Jenkins,肯定是先要从官网解读所需环境配置信息,如需了解更多自行查阅 https://www.jenkins.io/doc/book/installing/linux/ JDK17,Maven3.9 安装 先从官网分别下载JDK17与Maven3.9 下载好之后上传至服务器、并解压&#xff1a…

算法学习day13(动态规划)

一、打家劫舍III 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。 除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 …

ubuntu 24 PXE Server (bios+uefi) 批量部署系统

pxe server 前言 PXE(Preboot eXecution Environment,预启动执行环境)是一种网络启动协议,允许计算机通过网络启动而不是使用本地硬盘。PXE服务器是实现这一功能的服务器,它提供了启动镜像和引导加载程序,…

dev c++ 添加osg包含目录失败

在dev c 中添加osg的包含目录; 编译程序,出现下图错误; 打开出错文件,修改编码为UTF-8, 错误还是没有消除; 根据资料,osg是基于opengl开发的;不过我也没在osg的目录下看到opengl的头…

2024-07-19 Unity插件 Odin Inspector10 —— Misc Attributes

文章目录 1 说明2 其他特性2.1 CustomContextMenu2.2 DisableContextMenu2.3 DrawWithUnity2.4 HideDuplicateReferenceBox2.5 Indent2.6 InfoBox2.7 InlineProperty2.8 LabelText2.9 LabelWidth2.10 OnCollectionChanged2.11 OnInspectorDispose2.12 OnInspectorGUI2.13 OnIns…

Training for Stable Diffusion

1.Training for Stable Diffusion 笔记来源: 1.Denoising Diffusion Probabilistic Models 2.最大似然估计(Maximum likelihood estimation) 3.Understanding Maximum Likelihood Estimation 4.How to Solve ‘CUDA out of memory’ in PyTorch 1.1 Introduction …

如何设计分布式锁?

1. 为什么需要使用分布式锁? 在实际项目中,经常会遇到多个客户端对同一个资源或数据进行访问,为了避免并发访问带来错误,就会对该资源或数据加一把锁,只允许获得锁的客户端进行操作。 总结来说,分布式锁是…

新能源汽车空调系统的四个工作过程

汽车空调制冷系统组成 1.汽车空调制冷系统组成 以R134a为制冷剂的汽车空调制冷系统主要包括压缩机、电磁离合器、冷凝器、 散热风扇、储液于燥器、膨胀阀、蒸发器、鼓风机、制冷连接管路、高低压检测 连接接头、调节与控制装置等组成。 汽车空调的四个过程 1压缩过程 传统车…

金融数据的pandas模块应用

金融数据的pandas模块应用 数据链接:https://pan.baidu.com/s/1VMh8-4IeCUYXB9p3rL45qw 提取码:c6ys 1. 导入所需基础库 import pandas as pd import matplotlib.pyplot as plt from pylab import mpl mpl.rcParams[font.sans-serif][FangSong] mpl.rcP…

JAVA.1.新建项目

1.代码结构 2.如何创建项目 1.创建工程 至此,我们创建了我们的第一个工程 2.创建模块 可见已经有了p28的一个模块,删掉了再添加 展开src 3.创建包 4.新建类 5.编写代码 package demo1;public class Hello {public static void main(String[] args) {Sys…

华为od机试真题:火星符号运算(Python)

题目描述 已知火星人使用的运算符号为 #和$ 其与地球人的等价公式如下 x#y2*x3*y4 x$y3*xy2x y是无符号整数。地球人公式按照c语言规则进行计算。火星人公式中,# 号的优先级高于 $ ,相同的运算符,按从左往右的顺序计算 现有一段火星人的字符串报文&a…