SpringMVC—请求映射路径 & get请求与Post请求发送请求参数 & 5种类型参数传递 & json数据传递参数 & 日期型参数的传递 & 响应

请求映射路径:

核心问题 :在团队开发过程中,若在不同的类中配置的访问路径一致就会出问题,SpringMVC框架不知道到底要去找哪个访问路径
解决方法 :

1.在路径名的前面加上自己所在的模块名称

2.抽出模块名称,在类前进行注解:

具体过程变化如下:

变成:

get请求与post请求(在Apifox界面中)发送请求参数

Get请求 & Post请求:

Get请求:

只要url后面的参数与方法括号内的参数名一致,就可以传进来了

Post请求:

将apifox的请求方式从Get切换到Post,进入body(因为请求参数被放在了body中),进入x-www-form-lencoded即可

在java代码中还是确保方法中的参数名和Post的参数名保持一致就行

复制代码
CommanParam()这个方法统一了Servlet的doGet()/doPost()方法。只需注明参数即可,Get/Post类型的划分依靠apifox实现

Post中文乱码问题解决:

在该类中配置字符过滤器,将中文按照UTF-8的格式过滤。

5种类型参数传递

1.基本类型

复制代码
1.不加RequestParam()注解,就确保括号内参数名和请求参数名一致
2.如果括号内参数名和请求参数名不一致,则需要在参数前加入@RequestParam("...")
括号内的参数名和请求参数内的参数名一致。

2.Pojo类型(引用类型)

如果请求数据传过来的是多个数据,而我要用Pojo类型接收,需要提前创建好一个Pojo类,届时会自动把请求数据封入这个Pojo类型。

3.嵌套Pojo类型(引用类型的内部有引用类型的属性)

与Pojo类型的实现类代码保持一致。在apifox中需要给引用的属性传值

4.数组类型

在请求参数的参数传递时,只需要把key的值写成一样的就行。

在Java实现类中。括号内的参数名和请求参数的key一致

5.集合类型

需要在集合类型前面加上@RequestParam注明,向它告诉这只是一个参数名,只不过这个值有多个,因此需要多次添加

json数据传递参数:

在apifox中选中"Body",点击raw,确定json格式

在请求路径对应的java实现类的方法括号中,加入@RequestBody注解:

在核心配置类前加入 @EnableWebMVC,使配置文件能够自动支持json数据格式的转换

复制代码
区别:
@ResquestBody支持json数据格式转换
@RequestParam支持url地址传参

日期型参数的传递:

SpringMVC默认的日期型参数格式是yyyy/mm/dd,如果想要日期型参数格式改变,例如变成yyyy-mm-dd,则需要设置@DataTimeFormat注解的pattern参数,把pattern参数设置成实际时间的格式。例如:

Converter转换器接口:

Spring准备了极其多的实现类,这里就不列举了。只需知道Convert是DataTimeFormat的底层原理。

响应

在响应数据的时候,如果不添加@RequestBody注解,会默认想要跳转页面。只有加入这个注解,才会转成json格式:加入注解后,文本/Pojo/集合都会被转换成json格式被响应回去,也就是通过json设置返回值作为响应体

内部同样使用了转换器,将对象/基本数据转换成json的工具就是类型转换器 :
HTTPMessageConvert接口 :

最终实现类是Mappingjackson2HTTPMeassageConverter,是Jackson在帮助我们转换json数据,前提是得设置依赖。

@RequestBody的作用就是把返回值转换成json传递出去。

相关推荐
雷一言说9 小时前
Spring AI 2.0 RAG:用 Metadata Filter 做多租户检索隔离
java·spring
摇滚侠10 小时前
《大模型应用开发实践:基于 Spring AI+DeepSeek 实现》第 11 章 大模型技术概览 阅读笔记 1
人工智能·笔记·spring
一枕槐安48715 小时前
大模型应用后端设计:上下文管理、缓存、降级策略的工程方案总结
java·spring·缓存
步行cgn16 小时前
@RequestMapping 注解详解
java·后端·spring
摇滚侠17 小时前
《大模型应用开发实践:基于 Spring AI+DeepSeek 实现》第 12 章 Spring AI 开发入门 阅读笔记 2
人工智能·笔记·spring
weixin_BYSJ198718 小时前
【计算机毕设】基于Spring_Boot_Vue的马拉松报名与选手成绩追踪系统05445
java·vue.js·spring boot·学习·spring·django·课程设计
小坏讲微服务1 天前
刚发布一个月的JDK 27,为什么我建议你立刻升级?
java·开发语言·spring boot·spring·架构·求职招聘·springboot4
snow@li1 天前
SpringBoot:核心注解全景梳理 / @xxx 叫“注解”(Annotation)
java·spring
Song_RsHt1 天前
Gateway(下):过滤器与统一鉴权
spring boot·spring·gateway
Knight_AL2 天前
别把 ThreadLocal 写进 Jackson Serializer
java·spring boot·spring