请求与响应
请求映射路径
@RequestMapping注解注解可以写在哪?有什么作用?
@RequestMapping注解
名称:@RequestMapping
类型:==方法注解 类注解==
位置:SpringMVC控制器方法定义上方
作用:设置当前控制器方法请求访问路径,如果设置在类上统一设置当前控制器方法请求访问路径前缀
请求参数
发送普通类型参数【重点】
问题导入
如何解决POST请求中文乱码问题?
2.1.1 请求方式
GET请求
POST请求
2.1.2 GET请求传递普通参数
普通参数:url地址传参,地址参数名与形参变量名相同,定义形参即可接收参数

- 问题:如果同学们传递的参数是中文试试,你们会发现接收到的参数出现了中文乱码问题。
- 原因:tomcat 8.5版本之后GET请求就不再出现中文乱码问题,但是我们使用的是tomcat7插件,所以会出现GET请求中文乱码问题。
- 解决:在pom.xml添加tomcat7插件处配置UTF-8字符集,解决GET请求中文乱码问题。
POST请求传递普通参数
普通参数:form表单post请求传参,表单参数名与形参变量名相同,定义形参即可接收参数

问题:我们发现,POST请求传递的参数如果包含中文那么就会出现中文乱码问题,说明我们之前配置的tomcat插件uri路径编解码字符集无法解决POST请求中文乱码问题。那么如何解决呢?
POST请求中文乱码处理
在加载SpringMVC配置的配置类中指定字符过滤器。
五种类型参数传递
问题导入
当请求参数名与形参变量名不同,该如何接收请求参数?
五种类型参数介绍
普通参数
POJO类型参数
嵌套POJO类型参数
数组类型参数
集合类型参数
普通参数
普通参数:当请求参数名与形参变量名不同,使用@RequestParam绑定参数关系

名称:@RequestParam
类型:形参注解
位置:SpringMVC控制器方法形参定义前面
作用:绑定请求参数与处理器方法形参间的关系
参数:
required:是否为必传参数
defaultValue:参数默认值
POJO类型参数
POJO参数:请求参数名与形参对象属性名相同,定义POJO类型形参即可接收参数

==注意事项:请求参数key的名称要和POJO中属性的名称一致,否则无法封装。==
嵌套POJO类型参数
POJO对象中包含POJO对象
嵌套POJO参数:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数

注意事项:请求参数key的名称要和POJO中属性的名称一致,否则无法封装。
数组类型参数
数组参数:请求参数名与形参对象属性名相同且请求参数为多个,定义数组类型即可接收参数

集合类型参数
集合保存普通参数:请求参数名与形参集合对象名相同且请求参数为多个,@RequestParam绑定参数关系

json数据参数传递
问题导入
问题:@EnableWebMvc注解和@ResponseBody注解有什么用?
json数据参数介绍
json普通数组(["","","",...])
json对象({key:value,key:value,...})
json对象数组([{key:value,...},{key:value,...}])
传递json普通数组
代码演示
添加json数据转换相关坐标
设置发送json数据(请求body中添加json数据)

开启自动转换json数据的支持
注意事项:
@EnableWebMvc注解功能强大,该注解整合了多个功能,此处仅使用其中一部分功能,即json数据进行自动类型转换
在Controller中编写方法接收json参数
@EnableWebMvc注解介绍
名称:@EnableWebMvc
类型:==配置类注解==
位置:SpringMVC配置类定义上方
作用:开启SpringMVC多项辅助功能
@RequestBody注解介绍
名称:@RequestBody
类型:==形参注解==
位置:SpringMVC控制器方法形参定义前面
作用:将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次
传递json对象
POJO参数:json数据与形参对象属性名相同,定义POJO类型形参即可接收参数

传递json对象数组
POJO集合参数:json数组数据与集合泛型属性名相同,定义List类型形参即可接收参数

@RequestBody与@RequestParam区别
区别@RequestParam用于接收url地址传参,表单传参【application/x-www-form-urlencoded】@RequestBody用于接收json数据【application/json】
应用后期开发中,发送json格式数据为主,@RequestBody应用较广如果发送非json格式数据,选用@RequestParam接收请求参数
日期类型参数传递
日期类型数据基于系统不同格式也不尽相同2088-08-182088/08/1808/18/2088
接收形参时,根据不同的日期格式设置不同的接收方式

@DateTimeFormat注解介绍
名称:@DateTimeFormat
类型:==形参注解==
位置:SpringMVC控制器方法形参前面
作用:设定日期时间型数据格式
属性:pattern:指定日期时间格式字符串
工作原理
其内部依赖Converter接口
请求参数年龄数据(String→Integer)
json数据转对象(json → POJO)
日期格式转换(String → Date)
注意事项
传递日期类型参数必须在配置类上使用@EnableWebMvc注解。其功能之一:根据类型匹配对应的类型转换器。
响应
问题导入
需要添加jackson-databind依赖以及在SpringMvcConfig配置类上添加@EnableWebMvc注解
声明:材料来源上课笔记,禁止转载,如有侵权通知即删。