SpringMVC接收请求参数
(5)请求参数==》五种普通参数
-
1.普通参数
-
代码块
@RequestMapping("/commonParam") @ResponseBody public String commonParam(String name,int age){ System.out.println("普通参数传递 name ==> "+name); System.out.println("普通参数传递 age ==> "+age); return "{'module':'commonParam'}"; }
-
GET请求==》中文不会乱码
-
POST==》中文会发生乱码
-
在servlet配置类中配置过滤器,若过滤规则有多种以逗号分割
@Override protected Filter[] getServletFilters() { CharacterEncodingFilter filter = new CharacterEncodingFilter(); filter.setEncoding("UTF-8"); return new Filter[]{filter}; }
-
-
-
※※※请求参数命名和后台参数命名必须一致,否则导致接受参数失败
-
使用@RequestParam参数进行映射
-
2.POJO参数==》当请求参数较多时使用pojo参数作为请求参数
-
定义pojo类和对应的控制器
public class User { private String name; private int age; setter、getter... } @RequestMapping("/pojoParam") @ResponseBody public String pojoParam(User user) { System.out.println("pojo参数传递 user ==> " + user); return "{'module':'pojoParam'}"; }
-
发送请求
-
参数获取失败,这是由于pojo类未定义setter方法
-
※※※请求参数名必须和pojo类属性名一一对应,否则接收失败
-
-
3.嵌套pojo参数
-
pojo类+控制器
public class User { private String name; private int age; private Address address; setter、getter... } public class Address { private String city; private String province; setter、getter... } @RequestMapping("/pojoContainPojoParam") @ResponseBody public String pojoContainPojoParam(User user) { System.out.println("嵌套pojo参数传递 user ==> " + user); return "{'module':'pojoParam'}"; }
-
-
4.数组类型参数
-
5.集合参数
-
控制器
@RequestMapping("/listParam") @ResponseBody public String listParam(List<String> hobby) { System.out.println("集合类型参数传递 hobby ==> " + hobby); return "{'module':'listParam'}"; }
-
会发现会报错==》SpringMVC将List看做是一个POJO对象来处理,将其创建一个对象并准备把前端的数 据封装到对象中,但是List是一个接口无法创建对象,所以报错。
-
同名请求参数可以使用@RequestParam注解映射到对应名称的集合对象中作为数据
-
(6)JSON数据类型请求参数
-
1.JSON普通数组
-
添加Jackson依赖
<!--导入Jackson依赖--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.4</version> </dependency>
-
在SpringMVCConfig配置类中使用@EnableWebMvc开启json数据自动转换,里面就包含了将JSON转换成对象的功能。
@Configuration @ComponentScan({"requestParam.controller"}) @EnableWebMvc public class SpringMVCConfig {...}
-
编写控制器
@RequestMapping("/jsonParam") @ResponseBody public String commonParam(@RequestParam User user) { System.out.println("json数据类型参数传递 user ==> " + user); return "{'module':'jsonParam'}"; }
-
发送请求
-
请求参数接收失败==》由于现在不是直接传递的参数,而是通过请求的Body进行传递,故@RequestParam不能使用,应该使用@RequestBody
-
-
2.JSON对象
-
控制器
@RequestMapping("/jsonObjectParam") @ResponseBody public String commonParam(@RequestBody User user) { System.out.println("json数据类型参数传递 user ==> " + user); return "{'module':'jsonObjectParam'}"; }
-
发送请求
-
-
3.JSON对象数组+对象嵌套
-
控制器
@RequestMapping("/jsonObjectArrayAndContainJsonObjectParam") @ResponseBody public String jsonObjectArrayAndContainJsonObjectParam(@RequestBody List<User> userList) { System.out.println("json对象数组数据+嵌套数组类型参数传递 userList ==> " + userList); return "{'module':'jsonObjectArrayAndContainJsonObjectParam'}"; }
-
发送请求
-