前言

  我相信很多程序员都会在自己的项目中使用到Restful风格来安全便捷地进行接口的编写,因此本文这篇博客来简要介绍一下controller方法中的两个注解:@RequestParma和@PathVariable的使用和不同点

1.两个注解的用法

  1.1 注解的位置

    两个注解都是作为形参的别名注解在方法括号中形参的前面

@RequestMapping("/user/{uerId}}")
public JsonResuilt<Void> getUserByUid(@PathVariable("userId") Integer uid)
@RequestMapping("/user/{uerId}}")
public JsonResuilt<Void> getUserByUid(@RequestParam("userId") Integer uid)

  1.2 注解的使用

  • 给方法中的形参取别名,例如userId就是形参uid的别名
  • @PathVariable("userId") Integer uid
  • 安全地传值,将uid的值在URL中使用别名userId传递
  • @RequestMapping("/user/{uerId}}")
    public JsonResuilt<Void> getUserByUid(@RequestParam("userId") Integer uid)

2.两个注解的相同点和区别

  2.1 相同点

  • 两者都是Restful风格的注解,都可以在URL上面动态地传值
  • 两者都可以为方法中的形参取别名,安全地传递参数

  2.2 不同点

  • @RequestParam 更适用于增删改等方法的形参传值,显示优雅
  • http://localhost:8080/user/login?name=小文&pwd=123456
  • @PostMapping("/change_password")
    public JsonResult<String> changePassword(@RequestParam(value = "oPwd", required = false) String oldPassword,
    @RequestParam(value = "nPwd", required = false) String newPassword,
    HttpSession session)
  • @PathVariable 常用与查询方法的形参传值:
    http://localhost:8080/wo/get_by_uid/1
  • @GetMapping("/get_by_uid/{userId}") 
    public JsonResult<SysUser> getByUid(@Pathvariable("userId") Integer uid, String username
    ){
    Integer uid = getUidFromSession(session);
    SysUser data = userDetailsService.getByUid(uid);
    return new JsonResult<SysUser>(OK, data);
    }

    

3.@RequestParma和@PathVariable的用法和区别的更多相关文章

  1. set和enum类型的用法和区别

    mysql中的set和enum类型的用法和区别 mysql中的enum和set其实都是string类型的而且只能在指定的集合里取值, 不同的是set可以取多个值,enum只能取一个值.   1 2 3 ...

  2. OC #import和@class的用法和区别

    OC #import和@class的用法和区别 import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑, ...

  3. HashMap、HashTable、LinkedHashMap和TreeMap用法和区别

    Java为数据结构中的映射定义了一个接口java.util.Map,它有四个实现类,分别是HashMap.HashTable.LinkedHashMap和TreeMap.本节实例主要介绍这4中实例的用 ...

  4. 脚本引用中的defer和async的用法和区别

    之前的博客漫谈前端优化中的引用资源优化曾经提到过脚本引用异步设置defer.async,没有细说,这里展开一下,谈谈它们的作用和区别,先上张图来个针对没用过的小伙伴有个初始印象: 是的,就是在页面脚本 ...

  5. spring 后置处理器BeanFactoryPostProcessor和BeanPostProcessor的用法和区别

    主要区别就是: BeanFactoryPostProcessor可以修改BEAN的配置信息而BeanPostProcessor不能,下面举个例子说明 BEAN类: package com.spring ...

  6. $.extend()和$.fn.extend()用法和区别

    $.extend()和$.fn.extend()用法和区别: 在自己制作插件的时候会经常用到$.extend()和$.fn.extend()两个函数,无论从外观还是作用都非常的类似,但是实际上它们的区 ...

  7. kmalloc/kfree,vmalloc/vfree函数用法和区别

    http://blog.csdn.net/tigerjibo/article/details/6412881 kmalloc/kfree,vmalloc/vfree函数用法和区别 1.kmalloc ...

  8. for,foreach,iterator的用法和区别

    for,foreach,iterator的用法和区别 相同点:   三个都可以用来遍历数组和集合不同点:1.形式差别 for的形式是for(int i=0;i<arr.size();i++){. ...

  9. ASP.NET Application,Session,Cookie和ViewState等对象用法和区别 (转)

    在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保 ...

  10. JS中的== 、===的用法和区别。

    JS中的== .===的用法和区别.[转] == 和 != 比较若类型不同,先偿试转换类型,再作值比较,最后返回值比较结果 . 而  === 和 !== 只有在相同类型下,才会比较其值 ======= ...

随机推荐

  1. 字典:求和计数(return知识巩固)

    野餐用品计数 之前写过一段,字符在字符串中出现次数的代码 import pprint message = 'It was a bright cold day in April, ' \ 'and th ...

  2. 禁止的回文子串 Dyslexic Gollum

    UVA1633 一个长的回文串都可以由短的回文串拓展而来,只要短的回文在左右两端增加相同的字符即可.因此,在考虑长度为NNN的01串时,只要在从长度为1向NNN拓展的过程中,保证后KKK个字符不是回文 ...

  3. 一起学JAVA:做一个简单的API项目吧(一)

    由于一些特殊原因,最近想要去学习JAVA,了解JAVA ,然后在此之前对JAVA只停留在能读懂代码,但是写不懂的状态,那么最近又很闲,所以打算重新进行一波自己的学习计划,又因为是三分钟的热情,所以特意 ...

  4. Linux系列(8)-添加用户并设置密码

    #添加用户[root@iZm5ehnt0e8indgne1hibuZ ~]# useradd -m linsiyu #设置用户密码[root@iZm5ehnt0e8indgne1hibuZ ~]# p ...

  5. 【内存管理】ION内存管理器浅析(system contig heap)

    system contig heap与system heap 从代码中我们看到system contig heap与system heap同属一个文件中,ion_system_heap.c 相同点:它 ...

  6. DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC SHRINKDATABASE收缩指定数据库中的数据文件和日志文件的大小

    收缩指定数据库中的数据文件和日志文件的大小.  Transact-SQL 语法约定 语法 DBCC SHRINKDATABASE ( database_name | database_id | 0 [ ...

  7. Vue-router 中hash模式和history模式的关系

    Vue-router 中hash模式和history模式的关系 众所周知,vue+vue-router能够构建一个SPA单页面应用, 打包后只会生成一个index.html文件,而项目内页面的切换其实 ...

  8. 《Unix/Linux系统编程》第十一周学习笔记

    <Unix/Linux系统编程>第十一周学习笔记 TCP/IP协议 TCP/IP 是互联网的基础.TCP代表传输控制协议.IP代表互联网协议.目前有两个版本的IP,即IPv4和IPv6.I ...

  9. 搭建简单nfs共享

    1.查看是否安装nfs,rpcbind包 rpm -q nfs-utils rpm -q rpcbind   2.安装包 服务端和客户端 yum -y install nfs-utils 3.修改配置 ...

  10. Repeater 绑定数据如何根据数据列的内容排序

    可指定Repeater的数据源 从数据库查询时直接排序,而后绑定数据这样