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. Android-垂直滑动的ViewPager

    该ViewPager和正常的ViewPager的使用方式是一样的,只不过是垂直滑动的. 下面是这个ViewPager的代码 /** * 垂直滑动的ViewPager */ public class V ...

  2. (网页)HTML中INPUT type="date"标签如何赋值注意问题(转)

    现在的html5 input标签支持type="date" 显示有日期的日历控件,一行简单的代码就能显示出一个日历控件,但是有的时候需要给它一个默认的日期值,这个时候可能就要用到v ...

  3. codeforces 2A Winner (好好学习英语)

    Winner 题目链接:http://codeforces.com/contest/2/problem/A ——每天在线,欢迎留言谈论. 题目大意: 最后结果的最高分 maxscore.在最后分数都为 ...

  4. Linux 网卡聚合

    Linux 网卡聚合的类型: 1.broadcast:传输来自所有端口的每个包 2.roundrobin:以轮播方式传输来自每个端口的包 3.activebackup:故障转移运行程序,监视更改并选择 ...

  5. openstack nova工作流程

    工作流程请求:nova boot --image ttylinux --flavor 1 i-01nova-api 接受请求,一个tcp REST请求.nova-api 发送一个创建虚拟机的请求到消息 ...

  6. [20190321]smem的显示缺陷.txt

    [20190321]smem的显示缺陷.txt1.smem 加入-m参数显示存在缺陷,map的信息不全:# smem -tk -m -U oracle -P "oraclepeis|ora_ ...

  7. 使用html+css+js实现简易计算器

    使用html+css+js实现简易计算器, 效果图如下: html代码如下: <!DOCTYPE html> <html lang="en"> <he ...

  8. 洗礼灵魂,修炼python(82)--全栈项目实战篇(10)—— 信用卡+商城项目(模拟京东淘宝)

    本次项目相当于对python基础做总结,常用语法,数组类型,函数,文本操作等等 本项目在博客园里其他开发者也做过,我是稍作修改来的,大体没变的 项目需求: 信用卡+商城: A.信用卡(类似白条/花呗) ...

  9. 后台登录(包含验证码)的php代码实现

    login.html文件 <html> <title>login in</title> <body> <form action="han ...

  10. 【PAT】B1004 成绩排名

    简单题 循环输入放入结构体数组,一个sort搞定 #include <stdio.h> #include<algorithm> using namespace std; str ...