controller 之@...
@InitBinder
@InitBinder,这个注解相当于输入输出参数的一个转换,把下面的方法放在spring的bean中就可以生效了,下面的例子是把前端传递的时间戳转换为date,之后响应的时候吧date转换为时间戳。
@InitBinderprotected void initBinder(WebDataBinder binder) {binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {public void setAsText(String value) {setValue(new Date(Long.valueOf(value)));}public String getAsText() {return String.valueOf(((Date) getValue()).getTime());}});}
@RestController
1. 概述
@RestController=@Controller + @ResponseBody。
1.1 @Controller
在一个类上加上这个注解,表示这个类是一个控制器。
1.2 @ResponseBody
在请求方法上加上这个注解,控制器就会将请求响应的数据以指定的格式写入到Response的body中去。
1.3 所以说@RestController就是注册一个控制器,并且将响应的数据以指定的格式写入到Response的body中。
2. 附加
2.1 @RestController注解可以使用在类或者方法上。
@RestController
public class HelloController {@RequestMapping(value="/hello",method= RequestMethod.GET)public String sayHello(){return "hello";}
}
上面代码部分等同于下面:
@Controller
@ResponseBody
public class HelloController {@RequestMapping(value="/hello",method= RequestMethod.GET)public String sayHello(){return "hello";}
}
@RequestMapping
@RequestMapping此注解即可以作用在控制器的某个方法上,也可以作用在此控制器类上。
当控制器在类级别上添加@RequestMapping注解时,这个注解会应用到控制器的所有处理器方法上。处理器方法上的@RequestMapping注解会对类级别上的@RequestMapping的声明进行补充。
- @RequestMapping可以指定GET、POST请求方式
- @GetMapping等价于@RequestMapping的GET请求方式
例子一:@RequestMapping仅作用在处理器方法上
@RestController
public class HelloController {@RequestMapping(value="/hello",method= RequestMethod.GET)public String sayHello(){return "hello";}
}
以上代码sayHello所响应的url=localhost:8080/hello。
例子二:@RequestMapping仅作用在类级别上
/*** Created by wuranghao on 2017/4/7.*/
@Controller
@RequestMapping("/hello")
public class HelloController {@RequestMapping(method= RequestMethod.GET)public String sayHello(){return "hello";}
}
以上代码sayHello所响应的url=localhost:8080/hello,效果与例子一一样,没有改变任何功能。
例子三:@RequestMapping作用在类级别和处理器方法上
/*** Created by wuranghao on 2017/4/7.*/
@RestController
@RequestMapping("/hello")
public class HelloController {@RequestMapping(value="/sayHello",method= RequestMethod.GET)public String sayHello(){return "hello";}@RequestMapping(value="/sayHi",method= RequestMethod.GET)public String sayHi(){return "hi";}
}
这样,以上代码中的sayHello所响应的url=localhost:8080/hello/sayHello。
sayHi所响应的url=localhost:8080/hello/sayHi。
从这两个方法所响应的url可以回过头来看这两句话:当控制器在类级别上添加@RequestMapping注解时,这个注解会应用到控制器的所有处理器方法上。处理器方法上的@RequestMapping注解会对类级别上的@RequestMapping的声明进行补充。
最后说一点的是@RequestMapping中的method参数有很多中选择,一般使用get/post.
其中,各注解的作用为:
@PathVaribale 获取url中的数据
@RequestParam 获取请求参数的值
@GetMapping 组合注解
1.@RequestBody(POST专用):用的最多的注解,该注解与@RequestParam作用类似,区别在于将①传来的多个参数用Map或Entity统一接收,而不用对每个参数分别写注解;②application/json传来的Json字符串的处理;
2.@RequestHeader:获取Header信息;
3.@CookieValue:获取Cookie值。
参考: RestController注解学习_一品_人生的博客-CSDN博客_restcontroller注解
前后端传递参数类型的转换_技术武器库的博客-CSDN博客
SpringBoot 中常用注解@Controller/@RestController/@RequestMapping介绍_HelloWorld_EE-DevPress官方社区
controller 之@...相关推荐
- go系列(5)- beego自己写controller
前边的系列文章已经讲述了如何安装环境, beego的处理逻辑都是在Controller里面完成的,下面就写一个最简单的Controller. 我们在写自己的controller的时候,一定要继承bee ...
- @Controller和@RestController的区别?
@RestController注解相当于@ResponseBody + @Controller合在一起的作用 1) 如果只是使用@RestController注解Controller,则Control ...
- 关于Page翻页效果--Page View Controller
Page View Controllers 你使用一个page view controller用page by page的方式来展示内容.一个page view controller管理一个self- ...
- mvc ajax提交html标签,asp.net-mvc – 如何使用ajax get或post在带有参数的mvc中将数据从View传递到Controller...
我试图使用ajax将数据从View传递到Controller Action Method,如下所示: – 我有一个用户的Membership实例,我从另一个控制器传入这个视图,使用的视图有点像这个Vi ...
- spring 两次进入拦截器_4.SpringBoot 拦截器Fliter,Interceptor,Controller……
在项目的开发中,在某些情况下,我们需要对客户端发出的请求进行拦截,常用的API拦截方式有Fliter,Interceptor,ControllerAdvice以及Aspect. 上面的图是Spring ...
- gvgai框架搭建及controller编写
gvgai框架搭建及controller编写 gvgai框架搭建 controller编写 gvgai框架搭建 gvgai官网:http://www.gvgai.net/ 框架下载:http://ww ...
- Animation Override Controller动画重载器
假设游戏有很多个小人, 每一个人有2种动画站立,跑. 在通常情况下每一个人物都需要一个动画控制器. 有没有想过定义一个动画控制器 无须在定义全新的动画充值器实现每一个小人都播放自己的动画呢?没错An ...
- Ext.app.controller的refs
简 单来说,就是4.0建议的MVC中controller引用组件的一种方式,selector中设置组件,可以用id.classname,但推荐用 ComponentQuery("组件检索&q ...
- java注解返回不同消息,Spring MVC Controller中的一个读入和返回都是JSON的方法如何获取javax.validation注解的异常信息...
Spring MVC Controller中的一个读入和返回都是JSON的方法怎么获取javax.validation注解的错误信息? 本帖最后由 LonelyCoder2012 于 2014-03- ...
- controller不跳转页面的几个原因_光知道SpringBoot,不用thymeleaf就太不对了
之前的时候,我为了演示Linux配置提交项目执行环境,简单的整理了一下springboot得相关内容,但是在实际的开发过程中,SpringBoot得使用可不仅仅就是这一点点遍历而已,在SpringBo ...
最新文章
- javascript html 生成 pdf
- JAVA框架--hibernate、struts2、spring
- 如何进行自动化PDF测试?这里有真正简单明了的方法
- 《python自动化》学习笔记:电话地址和E-mail地址提取程序
- 【shell基础】条件测试
- 目录2. 计算机 13. 计算机智能 24. 软件 25. 操作系统 36. 互联网 37. 软件产业 38. 软件演示 49. 软件专利 410. 复杂性 411. 易用性
- Lucene Automaton(三)
- 网课答案查询单页源码+免费题库API接口
- 我的世界 服务器文件ess,求助服务器ess插件报错怎么解
- 谷歌语音合成_如何修改Google语音合成语音
- 谈谈如何写好一份简历
- 耳朵大寿命长 由耳可辨疾病
- 人工客服真的是真人吗?
- [Java学习] 最小生成树——Prim算法
- 联想服务器TS130主板芯片组,【ThinkServer TS130参数】ThinkServer TS130系列服务器参数-ZOL中关村在线...
- PowerPoint Quick Tips PowerPoint快速提示 Lynda课程中文字幕
- 【Get深一度】dB、dBm、dBW和W换分别代表的含义及换算关系
- Python 创建能根据输入计算BMI指数的函数
- oracle原理视频,[Oracle] 甲骨论 价值1.67万的Oracle视频课程 共46节课
- MQL4课程-市场信息函数
热门文章
- 疫情下的安全区,ICC算一个吗?
- [转]PROE传动链条的装配教程
- 1000!末尾 有几个0
- 从代码层面分析STM32 标准库和HAL库的差异
- 从零开始学微信小程序开发:1
- 使用DevExpress的PdfViewer控件加载http传输文件
- Markdown 编辑公式
- HP笔记本功能键(f1-f12)与fn键的使用
- python的日志模块:logging;django的日志系统;django日志输出时间修改
- 数据库SQL实战 --42.将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005