请求参数类型
1、请求html文件
java
@RequestMapping("/")
public String index(){
return "index.jsp";
}
- 这个请求会从资源文件中找到index.jsp 并返回
2、Get请求字符串
java
@RequestMapping(value = "/save")
@ResponseBody
public String save(String name, int age){
System.out.println("user save ... name = "+ name);
System.out.println("user save ... age = "+ age );
return "{'module':'user save'}";
}
- @RequestMapping 请求路径
- @ResponseBody 表示返回是数据, 如果没有这个注解表示需要找到对应的文件返回
3、请求参数和控制器参数不一致
java
@RequestMapping(value = "/save")
@ResponseBody
public String save(@RequestParam("name") String username, int age){
System.out.println("user save ... username = "+ username );
System.out.println("user save ... age = "+ age );
return "{'module':'user save'}";
}
- 请求参数和控制器参数不一致, 需要使用@RequestParam("name") 来标记
4、POJO参数(也就是把参数组装成一个对象)
4.1、User和Address类
java
public class User {
private String name;
private int age;
private Address address;
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", address=" + address +
'}';
}
}
public class Address {
private String province;
private String city;
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
@Override
public String toString() {
return String.format("Address={province = %s, city = %s}",province, city);
}
}
4.2、控制器方法
java
@RequestMapping("/pojoContainPojoParam")
@ResponseBody
public String pojoContainPojoParam(User user){
System.out.println("pojo参数传递 user = " + user);
return "{'module':'pojo param'}";
}
- 控制器参数直接写一个对象即可
- 在请求的时候把对象属性直接作为参数传递
4.3、请求演示
/pojoContainPojoParam?name=admin&age=18&address.province=hebei&address.city=beijing/pojoContainPojoParam?name=admin&age=18&address.province=hebei&address.city=beijing
5、数组参数
java
@RequestMapping("/arrayParam")
@ResponseBody
public String arrayParam(String[] likes){
System.out.println("参数传递 = " + Arrays.toString(likes));
return "{'module':'pojo param'}";
}
5.1、请求演示
/arrayParam?likes=abc&likes=def&likes=ghi
6、集合参数
java
//集合参数 必须加上@RequestParam注解
@RequestMapping("/listParam")
@ResponseBody
public String listParam(@RequestParam List<String> likes){
System.out.println("参数传递 = " + likes);
return "{'module':'pojo param'}";
}
6.1、请求演示
/listParam?likes=abc&likes=def&likes=ghi
6.2、总结
- 如果是List等集合参数 ,必须在参数前加上@RequestParam注解
7、集合参数Json类型
7.1、使用JSON数据,必须在配置类开启支持
java
@Configuration
@ComponentScan("com.itheima.controller")
@EnableWebMvc //使用json需要加上这个注解开启json序列化
public class SpringMvcConfig {
}
- @EnableWebMvc 开启支持,就支持json序列化
java
@RequestMapping("/listParamForJson")
@ResponseBody
public String listParamForJson(@RequestBody List<String> likes){
System.out.println("参数传递 = " + likes);
return "{'module':'pojo param'}";
}
7.2、请求演示
7.2.1、 json请求使用postman , Body - raw - json 使用下面数据请求
["abc","def","gjhi"]
8、 POJO参数 json格式数据
8.1、控制器方法
java
// POJO参数 json格式
@RequestMapping("/pojoParamForJson")
@ResponseBody
public String pojoParamForJson(@RequestBody User user){
System.out.println("参数传递 = " + user);
return "{'module':'pojo param'}";
}
- 参数前必须加上@ReqeustBody注解
8.2、请求演示
java
{
"name":"admin",
"age":18,
"address":{
"province":"henan",
"city":"zhengzhou"
}
}
9、日期格式 json数据
java
@RequestMapping("/dateParam")
@ResponseBody
public String dateParam(Date date,
@DateTimeFormat(pattern = "yyyy-MM-dd") Date date1,
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date date2){
System.out.println("参数传递 = " + date);
System.out.println("参数传递 = " + date1);
System.out.println("参数传递 = " + date2);
return "{'module':'pojo param'}";
}
- 日期格式默认格式是 yyyy/MM/dd
- 如果需要其他格式,请设置@DateTimeFormat注解
9.1、请求演示
/dateParam?date=2020/05/01&date1=2020-05-05&date2=2020-05-05 08:01:02
10、总结
- 如果是json数据配置类必须开启@EnableWebMvc
- 非文件类型 必须加上@ResponseBody
- 前后端参数不一致,参数前必须加上@ReqeustParam
- Json数据 ,参数前必须加上@ReqeustBody
- 请求Param集合参数类型前参数必须加上@ReqeustParam