注解之@RequestParam和@GetMapping
@RequestParam用来处理Content-Type 为 application/x-www-form-urlencoded编码的内容,将请求参数名映射到方法参数名。在Http协议中,如果不指定Content-Type,则默认传递的参数就是application/x-www-form-urlencoded类型。接下来我们结合测试用例看一下@RequestParam注解的三个主要参数。
@RestController
@RequestMapping("/user")
public class UserController {
private static Logger logger = LoggerFactory.getLogger(UserController.class); @GetMapping("/viewUserByBean")
public User viewUserByBean(User user) {
logger.info("@GetMapping中请求参数 ownerId = " + user.getId());
user.setName(user.getName() + " --> lucy");
return user;
} @RequestMapping(value ="/viewUserByEachEle",method = RequestMethod.GET)
public User viewUserByEachEle(@RequestParam(value = "id", required = false, defaultValue = "1") Long ownerId,
@RequestParam("userName") String name) {
logger.info("请求参数 ownerId = " + ownerId);
User user = new User();
user.setId(ownerId);
user.setName(name + " --> lucy");
return user;
} @GetMapping("/testRequestParam")
public String testRequestParam(@RequestParam(value = "id", required = false, defaultValue = "1") Long ownerId,
@RequestParam("userName") String name) {
logger.info("testRequestParam, userName: " + name + ", id: "
+ ownerId);
return "SUCCESS";
} }
// 定义User Bean
public class User implements Serializable { private static final long serialVersionUID = 7797704227043955944L; private Long id;
private String name; // omit getter、setter and toString
}
使用postman模拟ajax请求,URL为http://localhost:8080/user/viewUserByEachEle?userName=licy&id=1002:

@RequestParam
@RequestParam可以接受简单类型的属性,也可以接受对象类型(如viewUserByBean方法)。创建一个实体类对象作为参数承载体,Spring MVC会根据参数名称自动将参数绑定到实体类对象的属性上,viewUserByBean就是这么处理的。
value:String 类型,请求参数名,如viewUserByEachEle 方法中的userName表示请求参数名,它的值将被绑定到方法参数name。
required:是否必须,默认值为true,表示请求参数中必须包含对应的参数,否则,将抛出400错误码;异常信息是org.springframework.web.bind.MissingServletRequestParameterException,提示“Required String parameter 'userName' is not present”。
defaultValue:String 类型,表示如果请求中没有同名参数时的默认值,默认值可以是SpEL表达式,如“#{systemProperties['java.vm.version']}”。
其实如果不使用@RequestParam,Spring MVC也会将request的parameter自动绑定到method的parameter中,使用@RequestParam只不过是对parameter进行配置和对URL更精确化的配置。例如,在请求参数名和方法参数名相同时,则可以省略@RequestParam注解。
@GetMapping
@GetMapping是一个组合注解,等价于@RequestMapping(method = RequestMethod.GET),它将HTTP Get请求映射到特定的处理方法上。例如,在测试用例中,使用@GetMapping("/testRequestParam")代替了@RequestMapping(value ="/viewUserByEachEle",method = RequestMethod.GET),显然,这可以精简我们的代码。
注解之@RequestParam和@GetMapping的更多相关文章
- SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍
SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍 本篇博文将介绍几种如何处理url中的参数的注解@PathVaribale/@Requ ...
- SpringMVC注解@RequestMapping @RequestParam @ResponseBody 和 @RequestBody 解析
SpringMVC Controller层获取参数及返回数据的方式: @RequestMapping @RequestMapping(“url”),这里的 url写的是请求路径的一部分,一般作用在 C ...
- 阶段3 3.SpringMVC·_03.SpringMVC常用注解_1 RequestParam注解
新建param.jsp页面.里面一个a标签. 新建Controller 输出字符串 重新部署 传参数 接收这个username并输出 把username换成name 接收不到. 使用RequestPa ...
- @RequestParam注解
SpringMVC的参数指定注解:@RequestParam,有下面四个方法: value 参数绑定,value里写的是URL里参数名称 name 同上 required 是否必需参数,默认为tr ...
- @RequestParam,@RequestBody,@ResponseBody,@PathVariable注解的一点小总结
一.前提知识: http协议规定一次请求对应一次响应,根据不同的请求方式,请求的内容会有所不同: 发送GET请求是没有请求体的,参数会直接拼接保留到url后一并发送: 而POST请求是带有请求体的,带 ...
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
文章主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用. 简介: handler method 参数绑定常用的注解,我们根据他们处理的Request ...
- 11.@RequestParam @RequestBody @PathVariable 等参数绑定注解详解
对@RequestMapping进行地址映射讲解之后,该篇主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用: 简介: handler method ...
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解(转)
引言: 接上一篇文章,对@RequestMapping进行地址映射讲解之后,该篇主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用: 简介: han ...
- (转)@RequestParam @RequestBody @PathVariable 等参数绑定注解详解
引言: 接上一篇文章,对@RequestMapping进行地址映射讲解之后,该篇主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用: 简介: han ...
随机推荐
- (二十四)JSP标签之基本标签(<jsp:标签名>)
一.常用标签 1.1 jsp中标签一共有8中,其中常用的有6中,本文将介绍这6种常用的标签. 1.2 6种标签 1. <jsp:include> <jsp:include>标签 ...
- ASP.NET WEB应用程序(.network4.5)MVC Razor视图引擎2 HtmlHelper-超链接方法
一.@Html.ActionLink()概述 在MVC的Rasor视图引擎中,微软采用一种全新的方式来表示从前的超链接方式,它代替了从前的繁杂的超链接标签,让代码看起来更加简洁.通过浏览器依然会解析成 ...
- mini.DataGrid使用说明
mini.DataGrid表格.实现分页加载.自定义列.单元格渲染.行编辑器.锁定列.过滤行.汇总行等功能.Extend mini.PanelUsage <div id="dat ...
- Python练习_Python初识_day2
题目 1.作业 1.判断下列逻辑语句的True,False. 1)1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < ...
- python - pyxel 制作游戏
之前看了一个项目,觉得还挺有意思的,是关于做一个像素风的游戏,现在,虚幻4,u3d,已经让游戏愈发的好看,好玩,曾经我们童年的像素风游戏,愈来愈少.所以,这里我们就回味下. Pyxel是一个pytho ...
- 如何判断 Session是否存在
相信很多人都跟我一样,在写网页中有些位置通过其他网页设置了 Session然后跳转到目标页面就需要要用 Session,但是那个位置如果是直接打开的就用不到 Session,那么问题就来了,例如:系统 ...
- element的Dialog组件踩坑
在一个组件页面中需要有一个弹窗,为了代码简洁我把弹窗封装成一个组件方便重复调用 描述大致是一个父组件,里面有一个按钮还有一个子组件(弹窗),点击按钮让弹窗出来,弹窗自带的有关闭功能,点击关闭以后再点击 ...
- 11.ForkJoinPool 分支/合并框架 (工作窃取)
/*ForkJoinPool 分支/合并框架 (工作窃取)*/ Fork/Join 框架:就是在必要的情况下,将一个大任务,进行拆分(fork) 成若干个小任务(拆到给出的临界值为止),再将一个个的小 ...
- [LeetCode] 46. Int数组全排列 ☆☆☆(回溯)
描述 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2, ...
- zookeeper:2
单机环境下安装: 下载地址:http://apache.fayea.com/zookeeper/stable/ 解压zookeeper :tar -zxvf zookeeper-3.4.10.tar. ...