动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

Spring MVC数据绑定详解

08-25 17:37 64浏览
举报 T字号
  • 大字
  • 中字
  • 小字

Spring MVC框架中,针对不同的数据类型,Spring MVC数据绑定的方法也有所不同。下面就总结一下各种数据在Spring MVC如何绑定到方法形参中。

实际开发中前后台交互的数据无非是下面几种:

1.基本类型(int、double、Integer、String 等)

2.对象(类)类型(自定义的实体类)

3.日期类型(java.util.Date)

4.复杂类型(对象数组、List、Set、Map 等)

5.特殊文本类型(JSON、XML 等)

在给方法加上 @ResponseBody 注解后,直接将处理好的数据输出到响应流中,没有了试图解析过程,也就是返回的是 JSON 类型。SpringMVC 这里使用了适配器模式来处理数据转换,当我们使用 Jackson 作为解析 JSON 工具,这里注意一个大坑,Jackson 内默认的编码为 ISO-8859-1,这就会导致在输出中文时乱码,这点可以通过浏览器的控制台查看,解决方法有以下几种。

1、在每个方法上加上编码设置@RequestMapping(value = "basetype3.do", produces = "application/json; charset=utf-8")

2、在 SpringMVC 配置文件中修改 Jackson 的默认编码为 UTF-8,注意要放在 前面,放在内部是不生效的。

3、更改 JSON 解析工具,推荐使用阿里的  fastjson,默认编码就是 UTF-8,解析速度也比 Jackson 快。

一、基本类型

在传参时方法中的形参名称默认要和 url 中的参数名称保持一致,也可以在方法中加 @RequestParam 注解修改 url 中的参数名称。

基本类型中的基本数据类型(int,double)设置为参数是不能为空,否则将会报错,而基本数据类型的包装类型是可以为 null,也即是没有传入时默认值为 null,这里也要注意上面提到的中文乱码哦。

二、对象类型(自定义的实体类)

实体类说明:

User 类中只有两个属性,一个是 String 类型的 name,一个是 Integer 类型的 age。

Order 类中也只有两个属性,一个是 String 类型的 id,一个是 User 类型的 user。

People 类中的属性和 User 类中的完全一样。

类中生成属性的 getter 和 setter 方法以及 toString 方法。

在传对象类型的属性时,url 中参数名称为对象的属性名称,不加对象名。

如果一个类中的属性是另一个类,在传参时,url 中参数名称为属性对象名称加属性,如下面的第二个方法。

当传入的对象类型参数相同时,如果不加以区分,会给同名的属性都赋值,如下面的第三个方法,这里的数据绑定就需要我们自定义,@InitBinder("对象名"),在自定义的方法(方法名任意)中设置属性默认的前缀值,这样就可以区分不同对象的属性了。

 

三、日期类型

大多数情况下,SpringMVC 的数据绑定以及可以满足我们的使用了,但是对于一些特殊数据类型,如 java.util.Date 类型。字符串转 Date 类型,需要我们自定义转换器(Converter)或格式化(Formatter)来进行数据绑定。

下面的方法一使用绑定数据时会按照用户设置的格式初始化,但这种方法只对单个方法生效,我们可以自定义类型转换类,转换类需要实现 Converter 或者 Formatter 接口,具体的代码如下。

实现 Converter 接口需要指定接口的两个泛型,前者为要转换的类型,后者为转换后的类型,并且需要实现接口中的 convert() 方法,方法中的参数为要转换的类型,返回值为转换后的类型。

实现 Formatter 接口只需要指定接口的一个泛型,即转换后的类型,但是要实现接口中的 parse() 方法和 print() 方法,前一个方法是将要转换的类型转换为我们指定的类型,后一个方法是规定如何输出转换后的类型。

四、复杂类型

复杂类型包括数组和集合类型,像 List、Set、Map。

数组类型用于传入多个参数名称相同的值,如接收页面上的复选框参数时。

SpringMVC 对于复杂类型的支持并不是很好,因为对于复杂类型,我们更多都是使用 JSON、XML等数据格式来传参。对于 List、Set、Map 这些类型,还需要单独设置一个包装类,属性设置为对应的集合类型,方法的参数为包装类型,比较繁琐。SpringMVC 对复杂类型的数据绑定的功能,基本上就是鸡肋。

五、特殊类型

SpringMVC 更适合现今前后端分离的数据传输,对于现在流行的格式化数据类型 JSON,支持很好,只需要 @RequestBody(传参)和 @ResponseBody(输出)两个注解,使用起来很方便。

基本上上面就是Spring MVC数据绑定的全部类型,掌握了Spring MVC数据绑定的方法对于数据的处理起到了至关重要的作用。想更全面地学习Spring MVC数据绑定的小伙伴可以观看本站的Spring MVC视频教程,里面讲的更细更全,让你学得更快更好!

0人推荐
共同学习,写下你的评论
0条评论
上善若水
程序员上善若水

16篇文章贡献85593字

作者相关文章更多>

推荐相关文章更多>

DOM渲染的详细过程

QCode09-04 14:38

CSS水平和垂直居中技巧大梳理

Code大师09-04 14:50

mui的input框在IOS系统下无法聚焦或点击多次才能聚焦

不写代码你养我啊08-23 11:14

推荐的-视.频播放器以及在线客服

不写代码你养我啊09-17 18:02

谈谈java多线程的三大特性

要学习了06-18 18:13

发评论

举报

0/150

取消