1.基本类型

基本类型参数不可为空
正例:http://localhost:8080/demo/he?id=2
反例:http://localhost:8080/demo/he?id=(报400错误)
注意:String不是基本类型,具体参考>Java数据类型

@RestController //定义控制器返回字符串
public class HelloController {

    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String printHello(int id) {
        return "Response:"+id;
    }

    //添加@RequestParam(required=false)参数可为空
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String printHello(@RequestParam(required=false)int id) {
        return "Response:"+id;
    }

}

2.包装类和数组的处理

@RestController
public class HelloController {

    // http://localhost:8080/demo/hello?id=1
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String printHello(Integer id) {
        return "Response:"+id;
    }

    // http://localhost:8080/demo/hi?name=Tom&name=Jim
    @RequestMapping(value = "/hi", method = RequestMethod.GET)
    public String printHello(String[] name) {
        return "Response:"+anme;
    }

}

3.简单对象&多层级对象&同属性对象

    //简单对象
    //http://127.0.0.1:8080/Spring/hi?age=10&name=Tom
    @RequestMapping(value="/hi", method = RequestMethod.GET)
    @ResponseBody
    public String object(Student student){
        return student.toString();
    }

    //多层级对象
    //http://127.0.0.1:8080/Spring/hi2?age=10&name=Tom&student.age=18
    @RequestMapping(value="/hi2", method = RequestMethod.GET)
    @ResponseBody
    public String object2(Admin admin){
        return admin.toString();
    }

    //同属性的多对象
    //http://127.0.0.1:8080/Spring/hi3?name=Tom&student.age=18
    @RequestMapping(value="/hi3", method = RequestMethod.GET)
    @ResponseBody
    public String object3(Student student, Admin admin){
        return student.toString()+admin.toString();
    }

    //同属性的多对象赋值 需指定对象的前缀
    @InitBinder("student")
    public void initStudent(WebDataBinder binder){
        binder.setFieldDefaultPrefix("student.");
    }

    //同属性的多对象赋值 需指定对象的前缀
    @InitBinder("admin")
    public void initStudent2(WebDataBinder binder){
        binder.setFieldDefaultPrefix("admin.");
    }

4.List&Set&Map

public class ListFrom {
    private List<Student> users ;

    getter setter...

    @Override
    public String toString() {
        return "ListFrom [users=" + users + "]";
    }

}
public class MapFrom {
    private Map<String, Student> users ;

    getter setter...

    @Override
    public String toString() {
        return "MapFrom [users=" + users + "]";
    }   

}
@RestController
public class DataController {

    //List对象
    //http://127.0.0.1:8080/Spring/list?users[0].age=10&users[1].name=Tom
    @RequestMapping(value="/list", method = RequestMethod.GET, produces={"text/html;charset=UTF-8"})    //支持中文
    public String object2(ListFrom s){
        return s.toString();
    }

    //Map对象
    //http://127.0.0.1:8080/Spring/map?users["X"].age=10&users["Y"].name=Tom
    @RequestMapping(value="/map", method = RequestMethod.GET)
    public String object3(MapFrom s){
        return s.toString();
    }
}

5.Json或Xml 数据参数

@RequestBody 注解
    //发送json数据到该url即可实现数据绑定
    @RequestMapping(value="/json", method = RequestMethod.POST)
    public String object3(@RequestBody Student s){
        return s.toString();
    }

对于xml数据,需要在实体类中添加注释

@XmlRootElement(name = "admin")
public class Admin {
    private String name;
    private Integer age;

    @XmlElement(name = "name")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @XmlElement(name = "age")
    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

然后

    //发送xml数据到该url即可实现数据绑定
    @RequestMapping(value="/xml", method = RequestMethod.POST)
    public String object3(@RequestBody Admin s){
        return s.toString();
    }

6. PropertyEditor、Formatter、Converter

局部配置

    //PropertyEditor
    //http://127.0.0.1:8080/Spring_iMooc/date1?date1=2018-01-01
    @RequestMapping(value="/date1", method = RequestMethod.GET)
    public String date1(Date date1){
        return date1.toString();
    }
    @InitBinder("date1")
    public void initDate1(WebDataBinder binder){
        binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
    }

全局配置
1)自定义Formatter

2)注入

3)使用

也可以使用自定义Converter
1)自定义

2)配置

3)使用

7.RESTful扩展

简单来说,就是把参数移到URL上,比如下面。

   https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/pdf/spring-boot-reference.pdf  http://jbk.39.net/xebm/

使用方法

@RequestMapping("/subject/{name}")public String demo(@PathVariable("name") String name){  return name;}

路径URL也支持通配符匹配

通配符 描述
? 匹配任何单字符
* 匹配0或者任意数量的字符
** 匹配0或者更多的目录

Spring MVC数据绑定入门总结的更多相关文章

  1. spring mvc 数据绑定入门

    1:基本数据类型key 是必传的并且必须类型一致 // http://localhost:8080/bind/baseType.do?xage=10 @RequestMapping(value = & ...

  2. Spring Mvc的入门

    SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的. Spring Web MVC是什么: Sprin ...

  3. Spring MVC【入门】

    Spring MVC[入门]就这一篇! MVC 设计概述 在早期 Java Web 的开发中,统一把显示层.控制层.数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Mod ...

  4. spring mvc框架入门

    目录 1.web框架分层 2.什么是springmvc 3.springmvc的优势 4.springmvc和struct的区别 (spring mvc框架入门 1.web框架分层 一般web框架可以 ...

  5. Spring MVC—数据绑定机制,数据转换,数据格式化配置,数据校验

    Spring MVC数据绑定机制 数据转换 Spring MVC处理JSON 数据格式化配置使用 数据校验 数据校验 Spring MVC数据绑定机制 Spring MVC解析JSON格式的数据: 步 ...

  6. 挪过来的spring mvc 的入门 介绍

    目录  一.前言二.spring mvc 核心类与接口三.spring mvc 核心流程图 四.spring mvc DispatcherServlet说明 五.spring mvc 父子上下文的说明 ...

  7. spring mvc 数据绑定

    1.spring mvc 默认提供的数据绑定类 private List<HandlerMethodArgumentResolver> getDefaultArgumentResolver ...

  8. spring MVC框架入门(外加SSM整合)

    spring MVC框架 一.什么是sping MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 W ...

  9. spring+spring mvc+JdbcTemplate 入门小例子

    大家使用这个入门时候 最好能够去 搜一下 spring mvc 的 原理,我放一张图到这里,自己琢磨下,后面去学习就容易了 给个链接 (网上一把,千万不能懒)    https://www.cnblo ...

随机推荐

  1. WebStorm File Watchers配置将.less文件编译后的.css输出至指定目录

    Arguments:其实是命令行输入“lessc file.less file.css”后者指定路径 Output Paths to refresh:刷新changed后.css文件

  2. Android SDK manager里面什么是必须下载的?

    最近公司来了位新同事,由于需要配置Android环境,但是在配置的时候却发现sdk很大,很占用空间,想复制给同事也觉得不方便,于是根据下面的图删除了一些不必要的api. 根据官方文档的描述SDK To ...

  3. spark RDD,reduceByKey vs groupByKey

    Spark中有两个类似的api,分别是reduceByKey和groupByKey.这两个的功能类似,但底层实现却有些不同,那么为什么要这样设计呢?我们来从源码的角度分析一下. 先看两者的调用顺序(都 ...

  4. docker:版本变更

    在2017年之前的版本号: v1.4,  v1.5,  v1.6,  v1.7, v1.8, v1.9, v1.10, v1.11, v1.12, v1.13 从2017年开始版本后变更为:${yy} ...

  5. window.location.href刷新页面

    刷新当前页 window.location.href=window.location.href; 或者 window.location.href="当前URL",例如 window ...

  6. 回调函数的原理及PHP实例

    背景:在最近的一个开发项目中,用户要先调用服务才能开始进行一系列的查询活动,想了好久,经同事提醒, 用回调函数即可解决该问题.在这里,对PHP下回调函数的原理及实现分别做一下讲解. 1 什么是回调 软 ...

  7. LeetCode算法题-Linked List Cycle(Java实现)

    这是悦乐书的第176次更新,第178篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第35题(顺位题号是141).给定一个链表,确定它是否有一个循环. 本次解题使用的开发工 ...

  8. C++ 中operator用法:隐式类型转换

    [转]C++ operator两种用法 C++,有时它的确是个耐玩的东东,就比如operator,它有两种用法,一种是operator overloading(操作符重载),一种是operator c ...

  9. 【漫画解读】HDFS存储原理

    根据Maneesh Varshney的漫画改编,以简洁易懂的漫画形式讲解HDFS存储机制与运行原理,非常适合Hadoop/HDFS初学者理解. 一.角色出演 如上图所示,HDFS存储相关角色与功能如下 ...

  10. linux历史命令查找快捷方式

      一.回到上次操作的目录# cd -进入上次访问目录 二.历史命令搜索操作快捷键:[Ctrl + r], [Ctrl + p], [Ctrl + n] 在终端中按捉 [Ctrl] 键的同时 [r] ...