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
相关推荐
皮皮林55111 分钟前
IDEA 源码阅读利器,你居然还不会?
java·intellij idea
卡尔特斯4 小时前
Android Kotlin 项目代理配置【详细步骤(可选)】
android·java·kotlin
白鲸开源4 小时前
Ubuntu 22 下 DolphinScheduler 3.x 伪集群部署实录
java·ubuntu·开源
ytadpole4 小时前
Java 25 新特性 更简洁、更高效、更现代
java·后端
纪莫5 小时前
A公司一面:类加载的过程是怎么样的? 双亲委派的优点和缺点? 产生fullGC的情况有哪些? spring的动态代理有哪些?区别是什么? 如何排查CPU使用率过高?
java·java面试⑧股
JavaGuide6 小时前
JDK 25(长期支持版) 发布,新特性解读!
java·后端
用户3721574261356 小时前
Java 轻松批量替换 Word 文档文字内容
java
白鲸开源6 小时前
教你数分钟内创建并运行一个 DolphinScheduler Workflow!
java
Java中文社群6 小时前
有点意思!Java8后最有用新特性排行榜!
java·后端·面试
代码匠心6 小时前
从零开始学Flink:数据源
java·大数据·后端·flink