Spring中三个注解@PathVariable、@Param和@RequestParam间的区别

摘要:
@PathVariable代码示例:@ResponseBody@RequestMapping(“/user/{uid}”)publicUsergetUserById(@PathVariable(“uid”)Longuid)

@PathVariable

代码示例:

@ResponseBody
@RequestMapping("/user/{uid}")
public User getUserById(@PathVariable("uid") Long uid) {
}

特点:

  1) 应用在Controller层

  2) @PathVariable是spring3.0的一个新功能:可接收请求路径中占位符的值,通过 @PathVariable 可以将URL中占位符参数{uid}绑定到处理器类的方法形参uid中 —— @PathVariable(“uid“)

  3) 请求路径中占位符的名字可与方法参数名不一样

@RequestParam

代码示例:

@ResponseBody
@RequestMapping(value = "/user/get", method = RequestMethod.POST)
public List<User> getUserList(@RequestParam("uid") Integer id, @RequestParam("uname") String name) {
}

特点:

  1) @RequestParam主要应用在Controller层

  2) 前端提交的form表单数据中的属性名和方法中的参数名不一致时 ,springMVC就无法自动封装参数,所以需要 @RequestParam("前端所传属性名") 来指定前端提交的表单的属性的名称

  3) 前端提交的form表单数据中的属性名和方法中的参数名一致时,可以不使用此注解

@Param

代码示例:

@Select("select * from user where uid = #{uid} and uname = #{uname}")
List<User> getUserList(@Param("uid") Integer id, @Param("uname") String name);

特点:

  1) @Param主要应用在Dao层

  2) 注解中的sql语句有多个条件参数,且和方法中的参数名称不一致,此时可以使用@Param注解

  3) 只有一个参数时,可以不使用注解(不过还是建议使用= =)

  4) 参数的顺序无关

参考:

https://blog.csdn.net/pengfudian1991/article/details/96336898

https://blog.csdn.net/qq_36268103/article/details/109994954

免责声明:文章转载自《Spring中三个注解@PathVariable、@Param和@RequestParam间的区别》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用C#写MVC框架(一:核心原理) HttpHandlerDDD:策略模式如何结合动态表达式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

NVR硬件录像机web无插件播放方案功能实现之相关接口注意事项说明

该篇博文主要用来说明EasyNVR硬件录像回放版本的相关接口说明和调用的demo; 方便用户的二次开发和集成。 软件根目录会包含接口文档的,因此,本文主要是对一些特定接口的说明和接口实现功能的讲解以及部分demo的展示说明; 对应接口说明; 支持设备类型 由于获取NVR录像机的相关功能是通过SDK来实现功能的,因此,无法想EasyNVR配置摄像机一样,走...

AOP+自定义注解实现全局参数校验

AOP+自定义注解实现全局参数校验 在开发过程中,用户传递的数据不一定合法,虽然可以通过前端进行一些校验,但是为了确保程序的安全性,保证数据的合法,在后台进行数据校验也是十分必要的。 后台的参数校验 在controller方法中校验: 后台的参数是通过controller方法获取的,所以最简单的参数校验的方法,就是在controller方法中进行参数校验。...

python 类型注解

函数定义的弊端 python 是动态语言,变量随时可以被赋值,且能赋值为不同类型 python 不是静态编译型语言,变量类型是在运行器决定的 动态语言很灵活,但是这种特性也是弊端 def add(x,y): return x+y print(add(4,5)) print(add('hello','world')) print(add(...

freemarke之TemplateDirectiveModel详解

http://hougbin.iteye.com/blog/1457924 TemplateDirectiveModel接口是freemarker自定标签或者自定义指令的核心处理接口。通过实现该接口,用户可以自定义标签(指令)进行任意操作,、 任意文本写入模板的输出。 该接口中只定义了如下方法,当模板页面遇到用户自定义的标签指令时,该方法会被执行。 pub...

【转】inputfile的本地图片预览+等比例缩放兼容IE8、火狐

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""><html xmlns=""><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&...

有趣的博客小工具

有趣的博客小工具 给大家推荐一些我整理的有趣好玩的博客小工具,让你的博客增添些乐趣,复制对应的代码到博客里即可。 Dog 这里是你的头号伴侣-可爱,有才华和忠诚。他可以坐下,躺下,翻身。尝试给他一个宠物,看他如何回应。让你的狗玩球或给他一个骨头。奖励他给他一个治疗。要让他坐下,双击你的鼠标在靠近他的地面。双击再次让他躺下。然后按住鼠标按钮,做一个圆形的动...