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
相关推荐
pianmian12 小时前
类(JavaBean类)和对象
java
我叫小白菜2 小时前
【Java_EE】单例模式、阻塞队列、线程池、定时器
java·开发语言
天水幼麟2 小时前
动手学深度学习-学习笔记(总)
笔记·深度学习·学习
Albert Edison3 小时前
【最新版】IntelliJ IDEA 2025 创建 SpringBoot 项目
java·spring boot·intellij-idea
超级小忍3 小时前
JVM 中的垃圾回收算法及垃圾回收器详解
java·jvm
weixin_446122463 小时前
JAVA内存区域划分
java·开发语言·redis
勤奋的小王同学~4 小时前
(javaEE初阶)计算机是如何组成的:CPU基本工作流程 CPU介绍 CPU执行指令的流程 寄存器 程序 进程 进程控制块 线程 线程的执行
java·java-ee
TT哇4 小时前
JavaEE==网站开发
java·redis·java-ee
2401_826097624 小时前
JavaEE-Linux环境部署
java·linux·java-ee
缘来是庄4 小时前
设计模式之访问者模式
java·设计模式·访问者模式