SpringMVC-请求参数的绑定

SpringMVC请求参数的绑定

1.参数绑定

1.1 绑定的机制

表单中请求参数都是key=value的,SpringMVC绑定请求参数的过程是通过把表单请求参数,作为控制器中方法参数进行绑定的。

例如:

查询账户

中的参数是:accountId=10   控制器所对应的参数为:

    @RequestMapping("/findAccount")
  public String findAccount(Integer accountId) {
    System.out.println("查询了账户。。。。"+accountId);
    return "success";   }

1.2 支持的数据类型:

基本数据类型的参数:

    包括基本类型和String类型。(注:Spring不属于八大基本类型)

Pojo类 型的参数:

    包括实体类,以及关联的实体类

数组和集合类型参数:

    包括List结构和Map结构的集合(包括数组)

    SpringMVC绑定请求参数时自动实现的,但是要想使用,必须遵循使用要求。

1.3 使用要求

如果是基本类型和String类型:

    要求我们的参数名称必须和控制器中方法的形参名称一致。(严格区分大小写)

如果是pojo类型,或者它的关联对象:

    要求表单中参数名称和Pojo类的属性名称保持一致。并且控制器方法的参数类型是Pojo类型

如果是集合类型,有两种方式:

    第一种:要求集合类型的请求参数必须在Pojo中。在表单中请求参数名称必须要和Pojo中属性名称相同。

      给List集合中的元素赋值,使用下标。

      给Mpa集合中的元素赋值,使用键值对

    第二种:接收的请求参数是json格式数据。需要借助一个注解实现。(@RequestBody)

2.使用示例

2.1 基本类型和String类型作为参数  
  Jsp代码:

请求参数绑定

控制器代码:

 /**
     * 参数绑定
     * @param username
     * @param title
     * @return
     */
    @RequestMapping(value = "/requestMappering")
    public String paramsRequest(String username, String title){
        System.out.println(username + "========" +title);
        return "success";
    }

运行结果:

在这里插入图片描述

2.2 Pojo类型作为参数

User实体类:

public class User implements Serializable{

    private String username;
    private Integer age;

    private Date birthday;
}

Account实体类:

public class Account implements Serializable {

    private String accountname;
    private String password;
    private Double salary;
    private User user;
}

jsp代码:

账户名:
密码:
金额:
姓名:
年龄:

控制器代码:

/**
     * 参数绑定—javabean
     * @return
     */
    @RequestMapping(value = "/account")
    public String findAccount(Account account){
        System.out.println(account);
        return "success";
    }
 

运行结果:

在这里插入图片描述

2.3 Pojo类中包含集合类型参数
    实体类代码:

Account实体类:

public class Account implements Serializable {

    private String accountname;
    private String password;
    private Double salary;

//    private User user;

    private List lists;
    private Map maps;
}

User实体类:

public class User implements Serializable{

    private String username;
    private Integer age;

    private Date birthday;
}

Jsp代码:

账户名:
密码:
金额:
<%--封装List--%> 姓名:
年龄:
<%--map--%> 姓名:
年龄:

控制器代码:

/**
     * 参数绑定—javabean
     * @return
     */
    @RequestMapping(value = "/account")
    public String findAccount(Account account){
        System.out.println(account);
        return "success";
    }

运行结果:   


在这里插入图片描述

2.4 自定义类型转换器
    自定义date转换器,将字符串转换为日期:

package com.llb.util;
/**
 * 自定义类型转换器
 * 将字符串转换成日期
 * Ceate By llb on 2019/8/13
 */
public class StringToDateConverter implements Converter {

    @Override
    public Date convert(String str) {

        if(str == null){
            throw new RuntimeException("请您传入数据!");
        }

        DateFormat df ;

        try {
            if(str.contains("-")){
                df = new SimpleDateFormat("yyyy-MM-dd");
            }else {
                df = new SimpleDateFormat("yyyy/MM/dd");
            }

            //把字符串转换成日期
            return df.parse(str);
        } catch (ParseException e) {
           throw new RuntimeException("日期类型转换失败!");
        }
    }
}

springmvc.xml配置:

在 spring 配置文件中配置类型转换器,
在 annotation-driven 标签中引用配置的类型转换服务 。


        
            
                
                    
                
            
        

    
 

jsp代码:


姓名:
年龄:
生日:

控制器代码:

 /**
     * 自定义格式转换器
     * @return
     */
    @RequestMapping(value = "/saveUser")
    public String saveUser(User user){
        System.out.println(user);
        return "success";
    }

运行结果:

在这里插入图片描述

SpringMVC项目搭建

github:https://github.com/PopsiCola/SSM-SpringMVC/tree/springmvc_response

你可能感兴趣的:(SpringMVC-请求参数的绑定)