java关联的含义_SpringMVC 参数绑定意义及实现过程解析

参数绑定的定义

所谓参数绑定,简单来说就是客户端发送请求,而请求中包含一些数据,那么这些数据怎么到达 Controller。从客户端请求key/value数据(比如get请求中包含的数据),经过参数绑定,将key/value数据绑定到controller方法的形参上。springmvc中,接收页面提交的数据是通过方法形参来接收。而不是在controller类定义成员变量接收。

7f9f1c4463b9b87d03075c63f87056c6.png

SpringMVC中默认支持的类型

eb73a4da063160b207221ab3cd325afc.png

自定义参数类型进行绑定

对于有些参数类型,由于我们输入的参数的类型与实体类中的参数类型不同,因此导致传值不能成功,此时,需要进行参数类型绑定。下面以Date类型为例介绍怎样进行自定义参数类型绑定。

User.java

import java.util.Date;

public class User {

private Integer id;

private String username;

private String sex;

private Date birthday;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username == null ? null : username.trim();

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex == null ? null : sex.trim();

}

public Date getBirthday() {

return birthday;

}

public void setBirthday(Date birthday) {

this.birthday = birthday;

}

}

JSP页面:注意输入框的 name 属性值和上面 POJO 实体类的属性保持一致即可映射成功。

用户id:

用户名:

性别:

出生日期:

因为我们输入的birthday是String类型,但是实体类中的birthday是Date类型,此时,就不会绑定成功,请求相应的controller会出现如下错误:

dfab7cc88ec7eaeea5342daf4d221f95.png

因此我们需要进行参数绑定。

参数绑定主要包括两步:

1. 新建一个类实现Converter接口

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

import org.springframework.core.convert.converter.Converter;

//需要实现Converter接口,这里是将String类型转换成Date类型

public class DateConverter implements Converter {

@Override

public Date convert(String source) {

//实现将字符串转成日期类型(格式是yyyy-MM-dd HH:mm:ss)

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

try {

return dateFormat.parse(source);

} catch (ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//如果参数绑定失败返回null

return null;

}

}

2. 在配置文件中进行配置

这样就完成了自定义参数类型的绑定。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值