基于注解的 SpringMVC

SpringMVC

  • SpringMVC
    • 使用SpringMVC的两个配置@EnableWebMVC 和 ACWAC
    • SpringMVC执行流程
    • 接收请求参数
      • Postman 发包工具()
      • get 请求---简单类型数据(基本数据类型和String)
      • get 请求---对象类型数据
      • get 请求---数组类型
      • get 请求 --- 集合类型 @RequestParam
      • get 请求 --- 日期类型 @DateTimeFormat
      • post 请求 --- 请求体类型 @RequestBody
      • 请求---路径参数 @Pathvariable
      • @RequestParam的三个应用场景
      • 总结
  • 全局异常处理器
    • 两个注解 @RestControllerAdvice 和 @ ExceptionHandler
  • Restful 风格
    • Restful四种方式(注解)
  • 注解总结(十四)

SpringMVC

介绍:
SpringMVC将Servlet一些通用功能进行了抽取和封装,使用它之后,代码主要有两部分组成:
前端控制器:由SpringMVC提供,主要负责接收参数和返回数据(在进入控制层之前的位置 会先经过前端控制器 再 到 控制层 返回数据时在控制层之后)
处理器:由程序员编写,主要负责参数的处理和业务层调用,可以理解为自己所写的业务逻辑代码
还有视图解析器等,视图解析器可以搭配JSP使用,但是现在不用JSP,也不用表单提交,就不对视图解析器做过多解释
在这里插入图片描述

使用SpringMVC的两个配置@EnableWebMVC 和 ACWAC

需要在这个config包下添加SpringMVC的初始化类和在配置类(有@Component修饰的类)中添加 @EnableWebMVC注解 加载SpringMVC,在初始化类中继承ADSI父类重写3个方法,可以创建SpringMVC容器 配置要处理请求的路径 创建Spring容器
在这里插入图片描述
在这里插入图片描述

SpringMVC执行流程

@RequestMapping注解的作用是接收前端请求,有两个重要的属性 value 和 method
@RsponseBody注解的作用是声明返回前端的数据为Json类型
@Controller 和 @RsponseBody 可以进行合并 @RestController 用在类上表明类中的所有方法均返回前端json格式的数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

接收请求参数

Postman 发包工具()

这里介绍一个小工具Postman 可以发送 get post put delete 请求 ,模拟前端请求,
可以携带参数或请求体,这样救不用写表单来进行测试了

get 请求—简单类型数据(基本数据类型和String)

在这里插入图片描述

get 请求—对象类型数据

在这里插入图片描述

get 请求—数组类型

在这里插入图片描述

get 请求 — 集合类型 @RequestParam

在这里插入图片描述

get 请求 — 日期类型 @DateTimeFormat

在这里插入图片描述

post 请求 — 请求体类型 @RequestBody

在这里插入图片描述

请求—路径参数 @Pathvariable

在这里插入图片描述

@RequestParam的三个应用场景

在这里插入图片描述
应该也可以给集合起别名(参考Mybatis中 的@Param注解猜想)

总结

在这里插入图片描述
@RequestMapping 如果不指定method属性 默认接收所有请求类型

全局异常处理器

就是在controller层之前不进行异常的处理,所有的异常都会向上层抛出,直到抛到控制层为止,全局异常处理器会对控制层中的异常进行处理,

两个注解 @RestControllerAdvice 和 @ ExceptionHandler

@RestControllerAdvice 标注在上,声明当前类是一个用于专门处理异常的类
@ExceptionHandler 标注在方法上,声明当前方法可以处理哪些异常
在这里插入图片描述

Restful 风格

Restful风格是一种通过请求方式和请求路径确定方法的方式,避免了一些请求方法的暴露,提高了安全性和简洁性

REST是一种软件架构风格,其强调HTTP应当以资源为中心[在请求地址中尽量的不要出现动词]。
REST使用不同的请求方式表示不同的操作操作: GET(获取)、POST(新建)、PUT(更新)、DELETE(删除)
在这里插入图片描述

Restful四种方式(注解)

@GetMapping 相当于@RequestMapping( method = RequestMethod.GET) 常用与查询请求 可以与路径参数方式搭配使用
@PostMapping
@PutMapping
@DeleteMapping

ps:get 方式 和 delete 方式 不能携带请求体 要想获取必须通过将数据作为参数的形式传到后端
路径参数也可以传递数组形式的参数 接收不定长的数组的时候前端可以通过集合接收

注解总结(十四)

@EnableWebMVC
@RequestMapping
@Resonpse
@RestController
@RequestParam
@DateTimeFormat
@RequestBody
@Pathvariable
@RestControllerAdvice
@ ExceptionHandler
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping

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

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

相关文章

Python自动计算Excel数据指定范围内的区间最大值

本文介绍基于Python语言,基于Excel表格文件内某一列的数据,计算这一列数据在每一个指定数量的行的范围内(例如每一个4行的范围内)的区间最大值的方法。 已知我们现有一个.csv格式的Excel表格文件,其中有一列数据&#…

基于光子实验的指数级加速的量子同态加密理论

前言 量子计算机不仅有望在某些重要任务上超越经典计算机,而且还能保护计算的隐私。例如,盲量子计算协议支持安全委托量子计算,其中客户端可以保护其数据和算法的隐私,不受分配来运行计算的量子服务器的影响。然而,这…

【雕爷学编程】MicroPython动手做(14)——掌控板之OLED屏幕2

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

Visual Studio2022报错 无法打开 源 文件 “openssl/conf.h“解决方式

目录 问题起因问题解决临时解决方案 问题起因 近一段时间有了解到Boost 1.82.0新添加了MySQL库,最近一直蠢蠢欲动想要试一下这个库 所以就下载了源码并进行了编译(过程比较简单,有文档的) 然后在VS2022中引入了Boost环境&#xf…

软件外包开发的需求分析

需求分析是软件开发中的关键步骤,其目的是确定用户需要什么样的软件,以及软件应该完成哪些任务。需求分析是软件工程的早期工作,也是软件项目成功的基础,因此花费大量精力和时间去做好需求分析是值得的。今天和大家分享软件需求分…

【开发问题】flink-cdc不用数据库之间的,不同类型的转化

不同的数据库之期间数据类型转化 问题来源与原因解决过程,思路错误,导致各种错误错误思路是什么 正确解决方式,找官网对应的链接器,数据转化 问题来源与原因 我一开始是flink-cdc,oracle2Mysql,sql 我一开…

idea中设置maven本地仓库和自动下载依赖jar包

1.下载maven 地址&#xff1a;maven3.6.3 解压缩在D:\apache-maven-3.6.3-bin\apache-maven-3.6.3\目录下新建文件夹repository打开apache-maven-3.6.3-bin\apache-maven-3.6.3\conf文件中的settings.xml编辑&#xff1a;新增本地仓库路径 <localRepository>D:\apache-…

【Kafka】常用操作

1、基本概念 1. 消息&#xff1a; Kafka是一个分布式流处理平台&#xff0c;它通过消息进行数据的传输和存储。消息是Kafka中的基本单元&#xff0c;可以包含任意类型的数据。 2. 生产者&#xff08;Producer&#xff09;&#xff1a; 生产者负责向Kafka主题发送消息。它将消息…

Python web实战 | Docker+Nginx部署python Django Web项目详细步骤【干货】

概要 在这篇文章中&#xff0c;我将介绍如何使用 Docker 和 Nginx 部署 Django Web 项目。一步步讲解如何构建 Docker 镜像、如何编写 Docker Compose 文件和如何配置 Nginx。 1. Docker 构建 Django Web 项目 1.1 配置 Django 项目 在开始之前&#xff0c;我们需要有一个 D…

QT自定义控件实现并导入

QT自定义控件 介绍 QT Creator自定义控件和designer控件导入 1.安装QT5.7.1 2.将QT编译器目录、lib目录、include目录导入path 使用说明 使用说明按照 1.创建QtDesigner自定义控件工程&#xff0c;打开Qt Creator,创建一个Qt 设计师自定义控件&#xff0c;如下图所示&#xf…

CK_03靶机详解

CK_03靶机详解 靶场下载地址&#xff1a;https://download.vulnhub.com/ck/MyFileServer_3.zip 这个靶机开放的端口特别多&#xff0c;所以给我们的误导也很多&#xff0c;我直接按照正确的思路来。 因为开着445所以就枚举了一下靶机上共享的东西&#xff0c;发现两个share的…

elment-ui的侧边栏 开关及窗口联动

<template><div class"asders"><el-aside width"200px"><div class"boxbody"><div>源码外卖</div><el-switch v-model"isCollapse" :active-value"true" :inactive-value"fals…

通过Filebeat进行日志监控

对系统的日志监控&#xff0c;通用做法是使用ELK&#xff08;Elasticsearch、Logstash、Kibana&#xff09;进行监控和搜索日志&#xff0c;这里给出另一种方案&#xff1a;通过Filebeat接收日志到Kafka&#xff0c;监控平台接收Kafka&#xff0c;并通过WebSocket实时展示。 这…

CAD Voronoi3D V1.0.1 版本更新说明

更新说明 CAD Voronoi3D V1.0.1版本对泰森多边形晶格进行进一步的优化。 采用新算法大幅度减少形体边界出现小晶格的可能性&#xff0c;使区块更均匀&#xff1a; 优化曲边边界晶格曲率问题&#xff0c;消除曲边形体晶格边界曲率过大现象&#xff1a; 优化生成算法&#xff…

Bash编程

目录&#xff1a; bash编程语法bash脚本编写 1.bash编程语法 Bash 编程基础 变量引号数组控制语句函数 Bash 变量 语法&#xff1a; Variable_namevalue Bash 变量定义的规则 变量名区分大小写&#xff0c;a和A为两个不同的变量。变量名可以使用大小写字母混编的形式进行…

iOS - 解压ipa包中的Assert.car文件

项目在 Archive 打包后&#xff0c;生成ipa包 将 xxx.ipa文件修改为zip后缀即 xxx.zip &#xff0c;然后再双击解压&#xff0c;会生成一个 Payload 文件夹&#xff0c;里面一个文件 如下图&#xff1a; 然后显示改文件的包内容&#xff1a; 解压 Assets.car 文件的方式&…

Linux操作系统1-命令篇

不同领域的主流操作系统 桌面操作系统 Windos Mac os Linux服务器操作系统 Unix Linux(免费、稳定、占有率高) Windows Server移动设备操作系统 Android(基于Linux,开源) ios嵌入式操作系统 Linux(机顶盒、路由器、交换机) Linux 特点&#xff1a;免费、开源、多用户、多任务…

flutter:BottomNavigationBar和TabBar

区别 BottomNavigationBarr和TabBar都是用于创建导航栏的组件&#xff0c;但它们有一些区别。 位置不同&#xff1a;BottomNavigationBar通常位于屏幕底部&#xff0c;用于主要导航&#xff1b;而TabBar通常位于屏幕顶部或底部&#xff0c;用于切换不同的视图或页面。 样式不…

java设计模式-观察者模式

什么是观察者模式 观察者模式&#xff08;Observer&#xff09;是软件设计中的一种行为模式。 它定义了对象之间的一对多关系&#xff0c;其中如果一个对象改变了状态&#xff0c;所有依赖它的对象都会自动被通知并更新。 这种模式包含了两种主要的角色&#xff0c;即被观察…

AI 绘画Stable Diffusion 研究(二)sd模型ControlNet1.1 介绍与安装

部署包作者:秋葉aaaki 免责声明: 本安装包及启动器免费提供 无任何盈利目的 大家好&#xff0c;我是风雨无阻。 众所周知&#xff0c;StableDiffusion 是非常强大的AI绘图工具&#xff0c;需要详细了解StableDiffusion的朋友&#xff0c;可查看我之前的这篇文章&#xff1a; …