为了账号安全,请及时绑定邮箱和手机立即绑定
  • SpringMVC——Map的数据绑定

    案例:同样需要一个类UserMapForm,声明一个私有的Map<String,User> users,并提供set/get方法和toString方法,Controller中,如下图二。


    https://img2.sycdn.imooc.com/5d1357660001e39507670533.jpg

    https://img3.sycdn.imooc.com/5d135767000179a208320197.jpg


    参数的传递方式:

    https://img1.sycdn.imooc.com//5d135fb70001ad9c11850098.jpg

    查看全部
  • SpringMVC——Set的数据绑定

    案例:Set应用场景,抽象一个Student对象,有一个name属性和一个Email属性,提交信息时候,需要把学生1和学生2的name和Email同时绑定到后台,Set和List还是有一些区别的,它需要先初始化Set(也就是Set集合的长度要大于0,这里在提供集合的类里对Set初始化,添加若干元素),而List是不需要的,而且Set数据绑定在实际应用中,经常用作对象的重复判断,或者排除重复,例如:Student对象有一个name和Email,如果name和Email都相等时,那么这个对象是重复的,会重写hashcode方法和equals方法,然后在里面写重复判断的逻辑,SpringMVC对于Set集合的绑定,如果学生1和学生2传来的name和Email是一样的就会绑定到一个对象上。


    https://img1.sycdn.imooc.com/5d12d81c00014d9106830536.jpg

    https://img4.sycdn.imooc.com/5d12d5c400018d4010520250.jpg

    访问地址:https://img1.sycdn.imooc.com/5d12d8e30001cf1309040193.jpg

    SpringMVC对Set类型数据绑定支持不够好

    如果实体类Student重写了equals和hashcode方法,那么再次绑定就会绑定一个对象,也就是集合中只有一个对象,如图一,当我我们在url中通过http://localhost:8080/setParam?set[0].name=Tom&set[1].name=Tom传参数时,会报错,对于集合绑定优先使用List进行绑定。


    查看全部
  • 本章主要介绍List、Set、Map结构的数据绑定以及坑

    知识点1:List的数据绑定

    案例:后台抽象一个Student对象,有一个name属性和一个Email属性,提交信息时候,需要把学生1和学生2的name和Email同时绑定到后台,List就应用到这种场景,SpringMVC对于集合绑定,需要专门创建一个类提供一个集合,并且集合的泛型为User,如图二,也就是Controller的方法里使用提供集合的类作为参数,如图3,这里访问的是下一级,也就是使用提供集合类的属性users传入参数,list.do?users[0].name=Tom&users[1].name=Lucy,如果url中下标直接写20,则这个数组的长度为21,也就是数组中有很多空对象,请求的索引一定是连续的,否则浪费内存资源,如最后一张图。https://img1.sycdn.imooc.com//5d121727000101eb04100229.jpg

    https://img1.sycdn.imooc.com//5d1219af0001380a08250207.jpghttps://img1.sycdn.imooc.com//5d1219ef0001d62812030334.jpg

    查看全部
  • SpringMVC绑定数据——同属性的多对象(两个类具有相同的属性)

    @InitBinder注解:访问Controller时,执行相应方法前,会首先执行该注解下的方法进行一个初始化,然后再执行相应的方法。

    案例:User类和Admin类具有相同的属性name和age,如果直接在请求中传入name=?&age=?,那么User类和Admin类的属性都会被赋值为相同的值,如果想区分并赋值,如下图。

    https://img1.sycdn.imooc.com//5d10b469000114e004820295.jpg

    https://img1.sycdn.imooc.com//5d10b5e300011ca310790186.jpg

    查看全部
  • 本章主要介绍简单对象、复杂对象的数据绑定以及常遇到的问题

    SpringMVC数据绑定——简单对象、多层级对象、同属性对象。

    简单对象:首先需要创建一个对象类,然后在Controller的方法里引用该对象。

    https://img1.sycdn.imooc.com//5d10aebb00016a0203930139.jpg

    https://img1.sycdn.imooc.com//5d10aef20001e91506640067.jpg

    多层级对象:方法参数里的对象里面有一个依赖其它类的属性

    https://img1.sycdn.imooc.com//5d10b0d50001b16104720150.jpghttps://img1.sycdn.imooc.com//5d10b1830001be8307480210.jpg

    查看全部
  • 包装类和数组的处理

    SpringMVC绑定数据——包装类:可以不传key,可以不给方法参数传值,但是如果使用@RequestParam修饰了就必须给数据传值。

    https://img1.sycdn.imooc.com//5d10825000016fb104110161.jpg

    SpringMVC绑定数据——数组

    https://img1.sycdn.imooc.com//5d10837100015dc904380189.jpghttps://img1.sycdn.imooc.com//5d1085c6000148a309210146.jpg

    查看全部
  • SpringMVC数据绑定——基本类型处理

    @ResponseBody:方法的返回值,会放到Response的body的数据区里。

    @RequestParam:有三个属性value、required、defaultValue,value是给传入的参数起别名,required是必须要传入的参数,默认为true,defaultValue代表如果不传会赋予默认值。

    https://img1.sycdn.imooc.com//5d104698000118e306450221.jpg

    查看全部
    0 采集 收起 来源:基本类型处理

    2019-06-24

  • SpringMVC数据绑定——基本类型、包装类型、数组类型绑定

    例如:age属性可以使用int和Integer进行修饰。

    【a】使用基本类型int修饰age属性:key是必须传的(并且必须传入value),并且age的value范围和类型必须是int类型范围,如果传入的参数是字符串则会报400错误异常,如果没有传age,则会报500错误。

    https://img1.sycdn.imooc.com//5d102e480001ce2006610369.jpghttps://img1.sycdn.imooc.com//5d102ead0001a38606860391.jpg

    【b】使用包装类型Integer修饰age属性:可以不用传入key,Integer类型的age可以为null,所以开发过程中对于可能为空的数据设置为包装类型,当然也需要@RequestParam注解对其进行配置。

    https://img1.sycdn.imooc.com//5d102f0d000182ec05410183.jpg

    使用数组进行数据绑定:一次可以传多个,可以是基本类型、包装类型、String的对象类型。

    查看全部
    1 采集 收起 来源:简介

    2019-06-24

  • Intellij IDEA简介以及创建SpirngMVC项目

    eclipse————intellij idea

    workspace                 project

     project                      module

    查看全部
  • SpringMVC数据绑定课程概述

    【一】数据绑定概念:简单绑定是将一个用户界面元素(控件)的属性绑定到一个类型(对象)实例上的某个属性的方法。

    【二】IDE——intellij idea简介以及intellij idea创建springMVC项目。

    【三】基本类型、包装类型(例如:年龄是使用int还是Integer)、数组类型的数据绑定。

    【四】简单对象、多层级对象、同属性多对象的数据绑定。

    【五】List、Set、Map数据结构的数据绑定。

    【六】Json和Xml数据结构的数据绑定(Json和Xml的数据传输在实际应用经常使用,因为某些对象数据结构比较复杂)。

    【七】PropertyEditor、Formatter、Converter,创建局部类型转换器和全局类型转换器。

    【八】RESTful扩展及应用场景

    【九】课程总结(总结重点知识点和碰到的问题以及避免的问题)



    查看全部
  • 自定义一个converter

    /**
     *  A converter converts a source object of type {@code String} to a target of type {@code Date}.
     */
    public class MyConverter implements Converter<String,Date>{
        @Override
        public Date convert(String s) {
            try {
                return DateUtil.S_DAY_DATEFORMAT.parse(s);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return null;
        }
    }

    配置自定义converter

    @Configuration
    public class WebMvcConfig extends WebMvcConfigurerAdapter {
    
    //    @Bean
    //    public Formatter<Date> myDateFormatter(){
    //        return new MyDateFormatter();
    //    }
    //
    //    @Override
    //    public void addFormatters(FormatterRegistry registry) {
    //        registry.addFormatter(myDateFormatter());
    //        super.addFormatters(registry);
    //    }
    
        @Bean
        public Converter myConverter(){
            return new MyConverter();
        }
    
    }

    使用

    /**
     *date:2018-05-24
     * @param date
     */
    @PostMapping("date")
    public void dateType(Date date){
        System.out.println(date);
    }


    查看全部
    1 采集 收起 来源:Converter的应用

    2019-04-27

  • 定义一个日期格式化工具类

    public class DateUtil {
    
        public static SimpleDateFormat S_STANDARD_DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
        public static SimpleDateFormat S_DAY_DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd");

    自定义Formatter

    public class MyDateFormatter implements Formatter<Date>{
        @Override
        public Date parse(String text, Locale locale) throws ParseException {
    
            return DateUtil.S_DAY_DATEFORMAT.parse(text);
        }
    
        @Override
        public String print(Date object, Locale locale) {
    
            return DateUtil.S_DAY_DATEFORMAT.format(object);
        }
    }

    注册自定义的formatter

    @Configuration
    public class WebMvcConfig extends WebMvcConfigurerAdapter {
    
        @Bean
        public Formatter<Date> myDateFormatter(){
            return new MyDateFormatter();
        }
    
        @Override
        public void addFormatters(FormatterRegistry registry) {
            registry.addFormatter(myDateFormatter());
            super.addFormatters(registry);
        }
    }

    测试使用

        /**
         *date:2018-05-24
         * @param date
         */
        @PostMapping("date")
        public void dateType(Date date){
            System.out.println(date);
        }
        /**
         *date2:2018-05-24
         * @param date2
         */
        @PostMapping("date2")
        public void dateType2(Date date2){
            System.out.println(date2);
        }
    
    //    /**
    //     * InitBinder注解的value为指定requestParam的name
    //     * 此注解的作用范围在自身所在controller内
    //     * @param binder
    //     */
    //    @InitBinder({"date"})
    //    public void initDate(WebDataBinder binder){
    //        //指定处理类型,自定义数据处理器,处理器允许requestParam值为空
    //        binder.registerCustomEditor(Date.class,new CustomDateEditor(DateUtil.S_DAY_DATEFORMAT,true));
    //    }


    查看全部
    1 采集 收起 来源:Formatter的应用

    2019-04-27

  • /**
     *date:2018-05-24
     * @param date
     */
    @PostMapping("date")
    public void dateType(Date date){
        System.out.println(date);
    }
    /**
     *date:2018-05-24
     * @param date2
     */
    @PostMapping("date2")
    public void dateType2(@RequestParam("date") Date date2){
        System.out.println(date2);
    }
    
    /**
     * InitBinder注解的value为指定requestParam的name
     * 此注解的作用范围在自身所在controller内
     * @param binder
     */
    @InitBinder({"date"})
    public void initDate(WebDataBinder binder){
        //指定处理类型,自定义日期数据处理器,处理器允许requestParam值为空
        binder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
    }



    查看全部
  • 老师的方式,请求参数为item[n]:name=xx&item[m]:name=xxx,也可以传递json字符串

    一、封装list的类

    import lombok.Data;
    
    import java.util.List;
    
    @Data
    public class FromAdminList {
        List<Admin> admins;
    
    }


    二、使用封装了list的类接受


    /**
     *
     [
     {
     "username": "John",
     "password": "Doe",
     "age":"11"
     },
     {
     "username": "Anna",
     "password": "Smith",
     "age":"11"
     },
     {
     "username": "Peter",
     "password": "Jones",
     "age":"11"
     }
     ]
     * @param admins
     */
    
    @PostMapping("admins")
    public void listTypeObj(FromAdminList admins){
        System.out.println(admins);
    }


    另一种方式,使用@RequestBody,请求参数为json字符串格式,前提是有json的转换器

    一、向list类型参数加上注解@RequestBody

    /**
     [
     {
     "username": "John",
     "password": "Doe",
     "age":"11"
     },
     {
     "username": "Anna",
     "password": "Smith",
     "age":"11"
     },
     {
     "username": "Peter",
     "password": "Jones",
     "age":"11"
     }
     ]
     * @param admins
     */
    @PostMapping("adminlist")
    public void listTypeObj(@RequestBody List<Admin> admins){
        System.out.println(admins);
    }


    对于基本类型,string都有效

    /**
     *
     [
     "adb",
     "xixi",
     "多久啊送到家"
     ]
     * @param info
     */
    @PostMapping("strs")
    public void listTypeStr(@RequestBody List<String> info){
        System.out.println(info);
    }
    
    /**
     [
     1,
     2,
     3
     ]
    
     * @param info
     */
    @PostMapping("Ints")
    public void listTypeBase(@RequestBody List<Integer> info){
    
    }


    查看全部
  • 包装类可以为空

    查看全部
    0 采集 收起 来源:简介

    2019-03-17

举报

0/150
提交
取消
课程须知
学习本门课程前需要具备SpringMVC的基础知识,可以观看慕课网的《Spring MVC起步》课程;同时小伙伴们需要对Servlet相关知识要有一定掌握;本课程选用SpringMVC4.0版本。
老师告诉你能学到什么?
1、SpringMVC常用数据结构的绑定 2、SpringMVC数据绑定实际工作中容易踩到的坑 3、注解@InitBinder、@RequestParam、@RequestBody、@ResponseBody、@PathVariable注解的使用 4、PropertyEditor、Formatter、Converter。自定义格式化工具和类型转换器 5、RESTful扩展

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!