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. ngx-moment汉化

    1.导入汉化文件 import '../../../node_modules/moment/locale/zh-cn.js' 2.使用汉化 <span>{{item.time|amLoca ...

  2. SSL与TLS 区别 以及介绍

    SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层.SSL通过互相认证.使用数字签名确保完整性.使用加密确保私密性,以实现客户 ...

  3. ELk(Elasticsearch, Logstash, Kibana)的安装配置

    目录 ELk(Elasticsearch, Logstash, Kibana)的安装配置 1. Elasticsearch的安装-官网 2. Kibana的安装配置-官网 3. Logstash的安装 ...

  4. 智能ERP 交接班统计异常的解决方法

    请注意,有交接班统计数据不准确的需开启离线统计即可解决,交接班统计是按照结账时间来进行统计的 1.点击左侧导航栏中‘更多’-进入系统设置 2.进入营业设置后-开启离线统计-点击保存

  5. python的datetime模块处理时间

    python的datetime模块主要用来处理时间,里面包含很多类,包括timedelay,date,time,datetime等 开发中经常会用到模块里面的datetime类,这是一个表示日期时间的 ...

  6. Docker & pure-ftpd 快速加建 FTP 服务器

    项目需要进行升级服务,现在需要基于centos 7使用docker来快速打架一个FTP环境来方便本地文件上传. 本次使用的是 pure-ftpd docker镜像,有关镜像使用的详细信息,本人是从 h ...

  7. [20180828]exadata--豆腐渣系统的保护神.txt

    [20180828]exadata--豆腐渣系统的保护神.txt --//昨天看awr报表发现如下,时间8-9点报表,这个时间病房业务很少,主要门诊的业务: 1.awr报表情况:Top 10 Fore ...

  8. c/c++ 标准库 map multimap元素访问

    标准库 map multimap元素访问 一,map,unordered_map下标操作 下标操作种类 功能描述 c[k] 返回关键字为k的元素:如果k不在c中,添加一个关键字为k的元素,并对其初始化 ...

  9. c/c++ 标准库 插入迭代器 详解

    标准库 插入迭代器 详解 插入迭代器作用:copy等函数不能改变容器的大小,所以有时copy先容器是个空的容器,如果不使用插入迭代器,是无法使用copy等函数的. 例如下面的代码就是错误的: list ...

  10. 6. svg学习笔记-路径

    路径相比于多边形<polygon>元素具有更强绘图能力,<polygon>元素可以绘制任意的多边形,而路径可以绘制任意的轮廓线,是线段,曲线,圆弧的组合形式.svg中可以使用& ...