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
相关推荐
骄马之死7 小时前
SpringMVC + SpringBoot 核心知识点总结
java·spring boot·后端
逸模7 小时前
告别熬夜手工整理台账,逸模智能归集实现项目数据自动化存档
大数据·运维·人工智能·笔记·其他·信息可视化·自动化
Frostnova丶7 小时前
【算法笔记】数学知识
笔记·算法
xqqxqxxq7 小时前
哈希表(HashMap)技术学习笔记
笔记·学习·散列表
生而为虫8 小时前
[学习记录] 幼儿学习拼音html游戏
学习·游戏
AOwhisky8 小时前
MySQL 学习笔记(第四期):SQL 语言之多表查询
linux·运维·网络·数据库·笔记·学习·mysql
郑洁文8 小时前
基于Spring Boot的流浪动物救助网站
java·spring boot·后端·毕设·流浪动物救助
xian_wwq8 小时前
【学习笔记】「大模型安全:攻击面演化史」第 07 篇-安全左移
人工智能·笔记·学习
秋雨梧桐叶落莳8 小时前
iOS——NSUserDefaults学习
学习·macos·ios·objective-c·cocoa
螺丝钉code9 小时前
JAVA项目 Claude code CLAUDE.md 到底应该怎么写
java·人工智能·claude code