当前位置: 首页 >服务端 > Spring 注解之@RequestParam和@GetMapping

Spring 注解之@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");retu 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");retu 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);retu "SUCCESS";}}// 定义User Beanpublic 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:

Spring 注解之@RequestParam和@GetMapping _ JavaClub全栈架构师技术笔记

@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),显然,这可以精简我们的代码。

 

作者:楼兰胡杨
来源链接:https://www.cnblogs.com/east7/p/10807668.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/server/113497.html

标签:Spring注解
分享给朋友: