参数绑定

将客户端传来的 key/value 数据,绑定到 Controller 参数的过程 ;

这一过程发生在调用 处理器适配器 的时候,spring 会去调用 参数绑定 组件,我使用的版本(4.5),是使用 converter 进行任意支持类型的转换的,除去一些 时间 不能进行转换 ;

其实 spring 中内置了许多的 converter ,可以看做是转换器,帮我们进行参数绑定 ;

  1. 默认支持类型

    默认支持的类型:HtppServletRequestHtppServletResponseHttpSessionModel或ModelMap ;当 springMvc 发现 Controller 方法的形参是上面的类型时,就会调用响应的 converter 进行参数绑定 ;

  2. 对简单类型的支持

    controller 方法形参是简单类型的时候,SpringMvc 也会进行参数绑定,不过有个限制,形参的名字和 key 的名字要一样 ;

    对于,这样的限制,我们当然不能忍受了,我们才是 code world 的掌控者,怎么能受限于一个参数绑定,这时候可以使用 @RequestParam来破掉这一限制 ;

    @RequestParam 参数讲解:

    name :当形参名字和 key 不一样的时候 ,使用 name 来告诉 springMvc 给我进行参数绑定,按照和 name 相同的 key

    required : 表示形参是否是必须的 ,如果 不是必须的,则可以不传参数进来 ;

    defaultValue :默认值 ,如果形参没有参数传进来,则使用该默认值 ;

  3. pojo类型

    页面中提交的数据的名字,必须和 pojo 的属性名一致 ;页面中提交的数据的名字,必须和 pojo 的属性名一致 ;

    比如,pojo 中有个 name 属性,那么页面中的对应数据想要参数绑定到 pojo 对象中,则 key 必须也是 name ;比如,pojo 中有个 name 属性,那么页面中的对应数据想要参数绑定到 pojo 对象中,则 key 必须也是 name ;比如,pojo 中有个 name 属性,那么页面中的对应数据想要参数绑定到 pojo 对象中,则 key 必须也是 name ;比如,pojo 中有个 name 属性,那么页面中的对应数据想要参数绑定到 pojo 对象中,则 key 必须也是 name

  4. 自定义参数绑定

    对于一些情况下 , springMvc 内置的 converter 总是不能满足的我们需求,我们需要自定义参数绑定 ,比如时间类型的参数绑定 ;

    实现 org.springframework.core.convert.converter.Converter ,注意不要导错包 ;

    /**
    * 完成日期 的参数绑定
    * @author An
    * @date 2018年9月17日20:11:59
    */
    public class DateConverter implements Converter<String,Date> { /**
    * 日期转换类
    */
    private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yy-MM-dd") ; @Override
    public Date convert(String source) {
    try {
    return simpleDateFormat.parse(source) ;
    } catch (ParseException e) {
    e.printStackTrace();
    }
    // 转换失败,就返回 null ;
    return null ;
    }
    }

    springMvc.xml 中进行配置

    <!--使用注解的映射器、适配器-->
    <!-- 添加 conversion-service 配上下面的id -->
    <mvc:annotation-driven conversion-service="conversionService"/> <!--配置 自定义 参数绑定-->
    <bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean" id="conversionService">
    <!--写上自定义的转换器-->
    <property name="converters">
    <list>
    <!--日期 转换 -->
    <bean class="xin.ijava.ssm.converter.DateConverter"/>
    </list>
    </property>
    </bean>
  5. 包装类型 pojo 参数绑定

    其实和 pojo 类型一样 ;

    只是包装类型的 pojo 中嵌套着 pojo ,此时赋值,使用 嵌套的pojo.属性名 ,作为网页的 name 属性的值 ;

    <input id="itemName" type="text" name="itemCustomer.name"/>

    尽量使用包装类型,便于扩展,解决不同类之间属性重名问题 ,比如形参有 userbook ,它们都有属性 name,此时页面中就可以使用pojo.name 为它们赋值;

  6. 数组绑定

    形参是数组的时候,跟基本数据类型一样,形参的名字 和 网页 name 值一样;

  7. list 绑定

    list 绑定,将 list 放在 pojo 中进行绑定,也就是 pojo 中属性为 list,此时形参还是一个包装的 pojo

    要将数据提交到 list 中的对象的属性上,只需要将网页的 name 的值,设为 list[下标].属性

  8. map 绑定

    还是将 map 放在 pojo 中进行绑定,网页上的 name 属性的值为 map['key']

(八)springMvc 的参数绑定的更多相关文章

  1. springmvc(2)--参数绑定

    一.以实例来看springmvc各种参数绑定方式   先定义个dto类: public class RestInDto implements Serializable { private static ...

  2. (转)SpringMVC学习(六)——SpringMVC高级参数绑定与@RequestMapping注解

    http://blog.csdn.net/yerenyuan_pku/article/details/72511749 高级参数绑定 现在进入SpringMVC高级参数绑定的学习,本文所有案例代码的编 ...

  3. SpringMVC学习笔记之二(SpringMVC高级参数绑定)

    一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...

  4. SpringMVC学习--参数绑定

    spring参数绑定过程 从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上.springmvc中,接收页面提交的数据是通过方法形参来接收 ...

  5. SpringMVC(三) —— 参数绑定和数据回显

    参数绑定的过程:就是页面向后台传递参数,后台接受的一个过程. 默认支持的参数类型:(就是你在方法上以形参的形式去定义一下的类型,就可以直接使用它) HttpServletRequest HttpSer ...

  6. springmvc(三) 参数绑定、

    前面两章就介绍了什么是springmvc,springmvc的框架原理,并且会简单的使用springmvc以及ssm的整合,从这一章节来看,就开始讲解springmvc的各种功能实现,慢慢消化 --W ...

  7. SpringMVC【参数绑定、数据回显、文件上传】

    前言 本文主要讲解的知识点如下: 参数绑定 数据回显 文件上传 参数绑定 我们在Controller使用方法参数接收值,就是把web端的值给接收到Controller中处理,这个过程就叫做参数绑定.. ...

  8. SpringMVC中参数绑定

    SpringMVC中请求参数的接收主要有两种方式, 一种是基于HttpServletRequest对象获取, 另外一种是通过Controller中的形参获取 一  通过HttpServletReque ...

  9. SpringMVC高级参数绑定(数组和List)

    本节内容: 参数绑定之数组 将表单的数据绑定到List 复制下上篇博客中的工程,作为今天开发的工程. 一.参数绑定之数组 1. 需求 在商品列表页面选中多个商品,然后删除. 2. 需求分析 功能要求商 ...

随机推荐

  1. 《视觉SLAM十四讲》学习日志(二)——初识SLAM

    小萝卜机器人的例子: 就像这种机器人,它的下面有一组轮子,脑袋上有相机(眼睛),为了让它能够探索一个房间,它需要知道: 1.我在哪——定位 2.周围环境怎么样——建图 定位和建图可以理解成感知的 &q ...

  2. maven-jetty插件配置时,webdefault.xml的取得和修改

    取得 没必要去下载一个jetty客户端去找webdefault.xml了. 可以去maven的本地仓库找到 \org\eclipse\jetty\jetty-webapp\版本号\ 里面的jar文件, ...

  3. json 文件读写

    #coding=utf- import json data ={","version":"0.0.0","desc":{" ...

  4. JAVA基础知识|类设计技巧

    1.一定要保证数据私有 2.一定要对数据初始化 3.不要再类中使用过多的基本类型 4.不是所有的域都需要独立的域访问器和域更改器 5.将职责过多的类进行分解 6.类名和方法名要能够体现它们的职责 7. ...

  5. 【java】Java.math.BigDecimal.subtract()方法实例

    java.math.BigDecimal.subtract(BigDecimal subtrahend) 返回一个BigDecimal,其值为 (this - subtrahend), 精度为 max ...

  6. Mysql 原理以及常见mysql 索引等

    ## 主键 超键 候选键 外键 (mysql数据库常见面试题) 数据库之互联网常用架构方案 数据库之互联网常用分库分表方案 分布式事务一致性解决方案 MySQL Explain详解 ## 数据库事务的 ...

  7. 一、Linux的基础使用--登录、开关机与在线、命令的查询帮助

    目录 一.Linux的基础使用 1.1 X Window 与命令行模式的切换 1.2 命令行模式下命令的执行 1.3 修改支持语系 1.4 基础命令的操作 1.5 几个重要的热键[Tab].[Ctrl ...

  8. poj1734

    Sightseeing trip Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9078   Accepted: 3380 ...

  9. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_17-CMS前端工程创建-单页面应用介绍

    查看运行起来的页面的源代码 这个webpck打包生成的文件. 单页面应用的优缺点: 优点: 1.用户操作体验好,用户不用刷新页面,整个交互过程都是通过Ajax来操作. 2.适合前后端分离开发,服务端提 ...

  10. python 时间对比

    import datetimed1 = datetime.datetime.strptime('2015-03-05  17:41:20', '%Y-%m-%d %H:%M:%S')d2 = date ...