Spring MVC数据绑定入门总结
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数据绑定入门总结的更多相关文章
- spring mvc 数据绑定入门
1:基本数据类型key 是必传的并且必须类型一致 // http://localhost:8080/bind/baseType.do?xage=10 @RequestMapping(value = & ...
- Spring Mvc的入门
SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的. Spring Web MVC是什么: Sprin ...
- Spring MVC【入门】
Spring MVC[入门]就这一篇! MVC 设计概述 在早期 Java Web 的开发中,统一把显示层.控制层.数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Mod ...
- spring mvc框架入门
目录 1.web框架分层 2.什么是springmvc 3.springmvc的优势 4.springmvc和struct的区别 (spring mvc框架入门 1.web框架分层 一般web框架可以 ...
- Spring MVC—数据绑定机制,数据转换,数据格式化配置,数据校验
Spring MVC数据绑定机制 数据转换 Spring MVC处理JSON 数据格式化配置使用 数据校验 数据校验 Spring MVC数据绑定机制 Spring MVC解析JSON格式的数据: 步 ...
- 挪过来的spring mvc 的入门 介绍
目录 一.前言二.spring mvc 核心类与接口三.spring mvc 核心流程图 四.spring mvc DispatcherServlet说明 五.spring mvc 父子上下文的说明 ...
- spring mvc 数据绑定
1.spring mvc 默认提供的数据绑定类 private List<HandlerMethodArgumentResolver> getDefaultArgumentResolver ...
- spring MVC框架入门(外加SSM整合)
spring MVC框架 一.什么是sping MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 W ...
- spring+spring mvc+JdbcTemplate 入门小例子
大家使用这个入门时候 最好能够去 搜一下 spring mvc 的 原理,我放一张图到这里,自己琢磨下,后面去学习就容易了 给个链接 (网上一把,千万不能懒) https://www.cnblo ...
随机推荐
- 转载:量化投资中常用python代码分析(一)
pandas的IO 量化投资逃不过数据处理,数据处理逃不过数据的读取和存储.一般,最常用的交易数据存储格式是csv,但是csv有一个很大的缺点,就是无论如何,存储起来都是一个文本的格式,例如日期‘20 ...
- 第1章 HTTP协议基本介绍了解
一.常见接口协议: HTTP 超文本传输协议 HTTPS 安全超文本传输协议 FTP 文件传输协议 TCP 网络控制协议 IP 互联网协议 UDP ...
- 使用Visual Studio Team Services敏捷规划和项目组合管理(六)——VSTS仪表盘的使用
使用Visual Studio Team Services敏捷规划和项目组合管理(六)--VSTS仪表盘的使用 仪表盘使团队能够看到项目的状态和监控项目的进展.简单来说,不必深入到团队项目站点的其他部 ...
- Cas 服务器 Service(Cas客户端)注册信息维护
作为Cas服务器,允许哪些客户端接入与否是通过配置来定义的.对Cas服务器来说,每一个接入的客户端与一个Service配置对应:在Cas服务器启动时加载并注册上这些Service,与之对应的客户端才能 ...
- [20181031]12c 在线移动数据文件.txt
[20181031]12c 在线移动数据文件.txt --//12c以前,移动或者改名数据文件是一项比较麻烦的事情,至少要停一下业务.而12c支持在线移动或者改名数据文件,并且有点不可思议--//的是 ...
- Process 0:0:0 (0x1ffc) Worker 0x00000001E580A1A0 appears to be non-yielding on Scheduler 3. Thread creation time: 13153975602106.
现场报错如下: Process 0:0:0 (0x1ffc) Worker 0x00000001E580A1A0 appears to be non-yielding on Scheduler 3. ...
- SQL 一列拆分多行
select a.col1,b.col2 from (select col1,col2=convert(xml,' <root> <v>'+replace(col2,',',' ...
- ELK 处理 Percona 审计日志(填坑)
前提 1.有强烈的审计需求. 2.能允许10%-15%左右的性能损失. 3.有强烈的对数据库操作实时查看需求(一般都是为了领导要求). Logstash 比较坑的配置 1 2 3 4 5 6 7 ...
- c/c++ 函数模板初探
函数模板初探 1,由来:有时候,函数的逻辑是一样的,只是参数的类型不同,比如下面 int Max(int a, int b){ return a > b ? a : b; } double Ma ...
- Django中间件的使用
Django中间件的使用 中间件(middleware) 中间件应用于request与服务端之间和服务端与response之间,客户端发起请求到服务端接收可以通过中间件,服务端返回响应与客户端接收响应 ...