数据绑定是将用户输入绑定到领域模型的一种特性。
@controller 注解使类生效
@RequestMapping(value="",meithod = RequestMethod.GET) 指定请求和方法
@RequestParam(value="",required = true)value参数别名 required 是否必传默认为true
@RequestParam("age")括号里面是age,客户端传上来的也要是age,名称要一致
请求的参数是数组的处理(参数直接设置为数组形式)
@RequestMapping(“array.do”)
@ResponseBody
public String array(String[] name){
StringBuilder sb=new StringBuilder();
for(String item:name){
sb.append(item).append("");
}
return sb.toString();
}
1、简单对象:请求方式直接写“对象的属性=XXX”即可,不用加“对象名.”的前缀;
2、多层级对象:第二级以上对象必须加“对象名.”的前缀。
如:user类里有一个属性是联系方式这个对象,那么前端传参的时候就要联系方式.联系地址(属性【对象】.属性)
同属性的多对象参数绑定: 前端请求的时候要写成user.name=Tom&admin.name=lucy&age=10
就是区分开哪个对象的哪个属性叫什么
关于List的数据绑定:
springMVC 不支持list类型的直接转换,需包装成object。
public String list(List<User> uList)这种写法是不对的
需要自己写一个类,这个类里面的某个属性是一个List集合
如:
public class UserListForm(
private List<User> uList;
) 然后Controller里:
public String list(UserListForm userListForm)
Set我们一般用来排重
使用Set的时候需要先进行初始化
要使用Set的排重功能必须在对象中覆写hashcode和equals方法。
SpringMVC对Set支持并不太好,初始化进行排重时会导致size变小,致使无法接受更多的数据而抛出异常,所以我们开发一般优先使用List。
Map传参方式:users['X'].name=Tom&users['X'].age=10&users['Y'].name=Lucy。 实际工作中那个前端跟我说,你这个传参太麻烦了,我不会传。然后我就只能报告项目经理去了。。。。。。。。。。。。
1.在参数中加注解@RequestBody( @RequestBody User user)。@RequestBody是把传过来的Json数据反序列化绑定到控制器参数上
xml 数据绑定:必须在实体类里面加注解@XmlRootElement,在属性上添加XmlElement
ex:@XmlElement(name="age"):此时就会将xml 里面对应的age数据添加到实体类中的age属性中去。
2、xml数据绑定需要“spring-oxm”这个jar包提供支持
使用PropertyEditor实现绑定时的类型转换:(数据类型转换器)
请求参数string到参数类型(也可能是任意类型)的类型转换,都是使用PropertyEditor类实现的string到任意参数的转换的。但是PropertyEditor不能实现任意对象到任意对象之间的转换,比如我们常见的Long时间戳到Date类型的转换时办不到的。
在请求的Url中设置日期类型的字符串传递的时候,报400错,说明日期绑定失败,如何使得Url中的日期与controller方法中入参类型为Date的对象绑定呢?这时,我们就需要注册自定义属性编辑器。如图,@InitBinder("date1")限定参数为date1,通过Url请求时,先执行有此注解的方法,该方法,向数据绑定器注册了新的自定义的属性编辑器,将Date类型的value设置为SimpleDateFormat("yyyy-MM-dd"),假如Url传递的参数为date1=2020-02-20,那么就会将Date参数直接格式化为yyyy-MM-dd格式,并作为controller方法的参数。完成绑定,可见,通过注解实现自定义参数绑定只需要注意两点:①使用注解,绑定传递的参数,形如@InitBinder("date1"),绑定的参数为date1,②基于此注解的方法,必须有一个参数,且参数类型为WebDataBinder,通过调用该对象的registerCustomEdior(_,_)实现自定义属性转换的注册。 @InitBinder("datel")
public void initDatel(WebDataBinder binder){
binder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true))
}
true的意思是允许为空。。。
全局的自定义类型转换器需要在springmvc.xml中进行配置:
①添加一个bean类(FormattingConversionServiceFactory)并指明id="自定义",并在这个类中将自己写好的自定义类型转换器的类进行属性注入的配置,同时
②<mvc:annotation-driven conversion-service="自定义"></mvc:annotation>
如上两步,以及自定义类型转换器,将实现Url传入参数的自定义转换。
自己写的Converter类
RESTful表现层状态转化
RESTful在控制层的具体应用:
RESTful总结:
springMVC数据绑定入门的更多相关文章
-
《SpringMVC数据绑定入门》笔记
基本类型 最好使用封装类型 简单多数据&多层级对象 简单多数据 单个对象,直接使用属性名=值即可 多层级对象 属性.属性=值即可 同属性多对象 WebDataBinder只在当前类中生效,不是 ...
-
SpringMVC:数据绑定入门(-)
1.数据类型,可以绑定基本数据类型,如int age,或者包装类型如:Integer age; 两者的区别:int 类型时,必填该参数,Integer 可以为空. 2.绑定数组 , 3.绑定对象. 3 ...
-
SpringMVC:数据绑定入门(二)
1.为了实现所输入的数据格式与所需要的匹配该如何做到?例如:http://localhost:8080/date1.do?date1=2018-01-01,其中输入的date1的数据类型为一个格式为& ...
-
SpringMVC基础入门
一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...
-
SpringMVC基础入门,创建一个HelloWorld程序
ref:http://www.admin10000.com/document/6436.html 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要 ...
-
2.学习SpringMVC注解入门篇
一.SpringMVC执行流程 . 二.创建项目学习SpringMVC注解 按照我之前的SpringMVC创建项目,首先创建一个项目springmvc01,配置好pom.xml,web.xml,spr ...
-
SpringMVC从入门到精通之第四章
第一个知识点:@Controller注解,用于标识这个类是一个后端控制器(类似struts中的action),主要作用就是接受页面的参数,转发页面.中间的业务逻辑是调用业务类处理的这个就是MVC设计模 ...
-
SpringMVC简单入门
SpringMVC简单入门 与大家分享一下最近对SpringMVC的学习,希望本文章能对大家有所帮助. 首先什么是SpringMVC? Spring 为展现层提供的基于MVC设计理念的优秀的Web框架 ...
-
SpringMVC 快速入门
SpringMVC 快速入门 SpringMVC 简介 SpringMVC是 Spring为展示层提供的基于Web MVC设计模式的请求驱动类型的轻量级Web框架,它的功能和Struts2一样.但比S ...
随机推荐
- Android 笔记 day1
-
WPF Litbox样式和模板
1.在项目中使用ListBox时,经常会将ItemContainerStyle和ItemTemplate的作用搞混,ItemTemplate可以搞定一切好似ItemContainerStyle有点多余 ...
-
XtraReport 实例化 打印
// Create a report instance, assigned to a Print Tool. ReportPrintTool pt = new ReportPrintTool( ...
-
DWZ (JUI) 教程 DWZ中dialog层的刷新
在DWZ开发过程中经常会遇到的一种情况就是:在navTab页面中通过a标签打开一个dialog,在dialog层进行操作后,需要对该dialog层进行必要的刷新操作. 1.首先讲一下思路: 在非dia ...
-
杭电OJ—— 1084 What Is Your Grade?
What Is Your Grade? Problem Description “Point, point, life of student!” This is a ballad(歌谣)well kn ...
-
EasyUI - Tooltip 提示控件
第一种: 效果: html代码: 不需要js代码,显示的是title中的内容. <div> <a href=</a> </div> 第二种: 效果: html ...
-
oracle 非数字型转数字型
原文:oracle 非数字型转数字型 oracle中如果一个字段内容不全是数字型 可以通过以下方式过滤 to_number(substr(translate(a.vital_signs_cvalues ...
-
【UML 建模】在线UML建模工具 ProcessOn 使用详解
总结 : -- 推荐理由 : 最近从 Windows 操作系统 转到 MAC 上, 正在看设计模式 和 重构, 找不到好用的 UML 工具, 因此在网上找了一款可以在线使用的 UML 工具, 用起来发 ...
-
windows连接oracle数据库
本以为很简单,结果发现还是有些坑啊 1. 安装cx_oracle pip install cx_oracle 或者用whi文件,这样你能知道版本号那些https://www.lfd.uci.edu/~ ...
-
windows 服务的安装与卸载之bat脚本命令
在windows 平台下,服务的安装与卸载可通过bat 脚本命令来完成,同时可编辑服务的描述,具体代码如下: 1.服务的安装DynamicPlanService_installer.bat: @ech ...