SpringMvc学习笔记三

请求参数类型

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
相关推荐
yinke小琪5 分钟前
面试官:谈谈为什么要拆分数据库?有哪些方法?
java·后端·面试
自由的疯7 分钟前
java DWG文件转图片
java·后端·架构
小兔崽子去哪了9 分钟前
EasyExcel 使用
java·excel
青云交11 分钟前
Java 大视界 -- Java 大数据机器学习模型的对抗攻击与防御技术研究
java·机器学习模型·对抗攻击·java 大数据·防御技术·对抗训练·i - fgsm
Cathy Bryant11 分钟前
球极平面投影
经验分享·笔记·数学建模
程序员小假15 分钟前
请介绍类加载过程,什么是双亲委派模型?
java·后端
汤姆yu29 分钟前
基于springboot的家具商城销售系统
java·spring boot·后端
红尘客栈235 分钟前
K8s-kubeadmin 1.28安装
java·网络·kubernetes
Larry_Yanan1 小时前
QML学习笔记(三十一)QML的Flow定位器
java·前端·javascript·笔记·qt·学习·ui
灰灰老师1 小时前
七种排序算法比较与选择[Python ]
java·算法·排序算法