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
相关推荐
阿噜噜小栈11 分钟前
Cursor 无限续杯
经验分享·笔记
10km27 分钟前
java:Apache Commons Configuration2占位符解析异常的正确解法:${prefix:name:-default}
java·apache·configuration2·变量插值·interpolation
customer0827 分钟前
【开源免费】基于SpringBoot+Vue.JS个人博客系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
灰色人生qwer35 分钟前
SpringBoot 项目配置日志输出
java·spring boot·后端
2301_793069821 小时前
Spring Boot +SQL项目优化策略,GraphQL和SQL 区别,Spring JDBC 等原理辨析(万字长文+代码)
java·数据库·spring boot·sql·jdbc·orm
阿华的代码王国1 小时前
【从0做项目】Java搜索引擎(6)& 正则表达式鲨疯了&优化正文解析
java·后端·搜索引擎·正则表达式·java项目·从0到1做项目
服务端相声演员1 小时前
Oracle JDK、Open JDK zulu下载地址
java·开发语言
是姜姜啊!1 小时前
java连接redis
java·redis
hhw1991121 小时前
spring boot知识点5
java·数据库·spring boot
EQUINOX11 小时前
lab4 CSAPP:Cachelab
java·后端·spring