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

news2024/9/22 11:27:55

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.coloradmin.cn/o/1935428.html

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

相关文章

项目实用linux 操作详解-轻松玩转linux

我之前写过完整的linux系统详解介绍: LInux操作详解一:vmware安装linux系统以及网络配置 LInux操作详解二:linux的目录结构 LInux操作详解三:linux实际操作及远程登录 LInux操作详解四:linux的vi和vim编辑器 LInux操作…

LeetCode 3112.访问消失节点的最少时间:单源最短路的Dijkstra算法

【LetMeFly】3112.访问消失节点的最少时间:单源最短路的Dijkstra算法 力扣题目链接:https://leetcode.cn/problems/minimum-time-to-visit-disappearing-nodes/ 给你一个二维数组 edges 表示一个 n 个点的无向图,其中 edges[i] [ui, vi, l…

【JavaEE】CAS原理实现 + 常见应用

本文基于jdk8 参考: 黑马程序员深入学习Java并发编程,JUC并发编程全套教程_哔哩哔哩_bilibili CAS原理 CAS:比较和交换(设置) Compare And Swap(Set)。当A的值为5的时候,给A设置值为10。这里涉及到的比较和设置值的操作是原子的…

SAP代理商哲讯智能携手合肥企业,共塑SAP系统开发新篇章

在数字化转型的浪潮中,SAP开发作为企业信息化建设的重要一环,对于提升企业的运营效率和市场竞争力具有至关重要的作用。合肥,作为中国东部地区的重要城市之一,拥有众多企业正积极探索SAP开发的可能性。哲讯智能科技有限公司&#…

【昇思25天学习打卡营第25天 | 基于MindSpore通过GPT实现情感分类】

学习心得:基于MindSpore通过GPT实现情感分类 摘要 本文通过一个具体的实验案例,详细阐述了如何使用华为的MindSpore框架结合GPT模型来实现情感分类任务。从环境配置到模型训练,再到评估和测试,整个流程清晰、系统,为…

第三篇 Vue项目目录结构介绍

1、最外层目录结构 passagerFrontPage ├── .vscode //vscode配置,不用理会 ├── node_modules //项目依赖,npm install命令执行后自动生成 ├── public //公共资源存放 ├── src //源码 ├── tests //选装:测试模块 ├── .git…

华为云安全事件深度剖析与防范策略

华为云安全事件深度剖析与防范策略 引言 随着云计算技术的飞速发展,企业越来越依赖云服务来提升业务效率和创新能力。然而,云服务在带来便利的同时,也伴随着一系列复杂的安全挑战。华为云作为国内领先的云服务提供商,其安全性直接…

Linux网络——TcpServer

一、UDP 与 TCP 在现实生活中,Udp 类似于发传单,Tcp 类似于邮局的挂号信服务。 1.1 UDP(用户数据报协议) 无连接:发放传单时,你不需要提前和接受传单的人建立联系,直接把传单发出去。不可靠&…

Ubantu 使用 docker 配置 + 远程部署 + 远程开发

大家好我是苏麟 , Ubantu 一些配置 . 视频 : 服务器很贵?搞台虚拟机玩玩!保姆级 Linux 远程开发教程_哔哩哔哩_bilibili Docker安装及配置 安装命令 : sudo apt install docker.io 查看版本号 : docker -v 查看虚拟机地址命令 : ifconfig 虚拟机地址 或…

服务器数据恢复—RAID5阵列重建重建导致数据丢失的数据恢复案例

服务器数据恢复环境&故障: 一台服务器,有一组由5块硬盘组建的raid5磁盘阵列。 服务器在运行过程中一块有磁盘掉线,由于raid5阵列支持一块磁盘掉线的特性,服务器还在正常工作。不久之后服务器出现故障,管理员在不了…

记一下blender的烘焙贴图的UV特殊用法

就拿这个BOX来说好了 如果使用light map展开是这样的 如果你手动展好的话是这样的 为什么提到这个东西呢 如果有一个物体,你在blender渲染其实使用了程序化方案,且没展UV就做好了颜色,那如果你想要直接拿到他,直接用这个light …

LLM大模型实战项目--基于Stable Diffusion的电商平台虚拟试衣

本文详细讲解LLM大模型实战项目,基于Stable Diffusion的电商平台虚拟试衣 一、项目介绍 二、阿里PAI平台介绍 三、阿里云注册及开通PAI 四、PAI_DSW环境搭建 五、SDLORA模型微调 一、项目介绍 AI虚拟试衣是一种创新的技术,利用人工智能和计算机视觉技…

【C语言】深入解析选择排序

文章目录 什么是选择排序?选择排序的基本实现代码解释选择排序的优化选择排序的性能分析选择排序的实际应用结论 在C语言编程中,选择排序是一种简单且直观的排序算法。尽管它在处理大型数据集时效率不高,但由于其实现简单,常常用于…

IT产品研发全生命周期【详细说明】

阶段步骤任务负责人产品管理用户故事收集和理解用户需求,创建用户故事产品经理需求分类分类用户故事,组织和优先级排序需求经理可行性分析评估需求的技术可行性与实现难度研发经理需求转换将需求转化为具体的产品特性或功能要求需求经理需求管理创建需求…

【机器学习】机器学习与语音识别的融合应用与性能优化新探索

文章目录 引言第一章:机器学习在语音识别中的应用1.1 数据预处理1.1.1 数据去噪1.1.2 数据归一化1.1.3 特征提取 1.2 模型选择1.2.1 隐马尔可夫模型1.2.2 循环神经网络1.2.3 长短期记忆网络1.2.4 Transformer 1.3 模型训练1.3.1 梯度下降1.3.2 随机梯度下降1.3.3 Ad…

Three.JS 使用RGBELoader和CubeTextureLoader 添加环境贴图

导入RGBELoader模块: import { RGBELoader } from "three/examples/jsm/loaders/RGBELoader.js"; 使用 addRGBEMappingk(environment, background,url) {rgbeLoader new RGBELoader();rgbeLoader.loadAsync(url).then((texture) > {//贴图模式 经纬…

基于Linux的USB-wifi配置流程

目录 内核配置 配置 CFG80211 配置usb 配置 Netlink 配置DHCP 工作流程 1.连接到无线网络 2.设置网络接口: 3.验证连接: 4. 接收数据: 最近daisy一直忙活这个linux的wifi驱动和bluze蓝牙驱动,相比较蓝牙,WiFi的驱动和内…

【ARMv8/v9 GIC- 700 系列 2 -- GIC-700 上电控制寄存器 GICR_PWRR】

请阅读【ARM GICv3/v4 实战学习 】 文章目录 GIC-700 上电GICR_PWRR 寄存器字段介绍GICR_PWRR 功能说明GICR_PWER 代码配置GICR_PWRR 使用场景GICR_PWRR 注意事项GIC-700 上电 GICR_PWRR(功耗寄存器)是ARM GICv4架构中用于控制GIC-700是否可以关闭电源的寄存器。它通过几个位…

【日记】我倒是想穿可爱的 JK 小裙子,可惜我是哥布林……(704 字)

正文 中午给三盆植物换水,惊叹于文竹的根。长得之长,都能在花盆里盘几圈了。而且我好像有一段时间没换水了,花盆的水中和盆底有了些绿藻。虽然不知道好不好,但我还是清掉了,摸起来黏黏的。而且我也总是觉得单位的水&am…

InceptionV3代码实现(Pytorch)

文章目录 Inception介绍InceptionV3代码实现第一步:定义基础卷积模块第二步:定义Inceptionv3模块InceptionAInceptionBInceptionCInceptionDInceptionE 第三步:定义辅助分类器InceptionAux第四步:搭建GoogLeNet网络第五步*&#x…