前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot从0到实战9:学习@RequestParam和@PathVariable

SpringBoot从0到实战9:学习@RequestParam和@PathVariable

作者头像
程序员洲洲
发布2024-06-06 21:47:08
1070
发布2024-06-06 21:47:08
举报
文章被收录于专栏:项目文章

正确理解“访问请求”、“URI”、“URL”、“请求参数”的概念

  • 一个完整的请求路径:http://www.test.com/user/0866/viewusername=zhangsan&age=21
  • 请求URL (requestURL)=
  • http://www.test.com/user/031267/view
  • 请求URI (requestURI)= user/031267/view
  • 请求参数(queryString)= username=zhangsan&age=20
  • 上述中,URI为统一资源标识符Uniform Resource Identifer,是一个用于表示某一互联网资源名称的字符串,Web上可用的每种资源 -HTML文档、图像、视频片段、程序等 -由一个通用资源标识符(Uniform Resource Identifier, 简称"URI")进行定位。

@RequestParam注解和@PathVariable注解的区别

  • 从字面上可以看出@RequestParam是获取请求里边携带的参数;
  • @PathVariable翻译过来就是路径变量,是获取请求路径里边的变量参数。
  • 例:127.0.0.1/user/{userId}userName=zhangshan,userId是路径上的变量,userName才是请求参数信息

@RequestParam注解

  • @RequestParam有三个参数:
  • value:参数名;
  • required:是否必需,默认为true,表示请求参数中必须包含该参数,如果不包含抛出异常。
  • defaultValue:默认参数值,如果设置了该值自动将required设置为false,如果参数中没有包含该参数则使用默认值。
  • 示例:@RequestParam(value = “userId”, required = false, defaultValue = “1”)

@PathVariable注解

  • 当使用@RequestMapping URI占位符映射时,Url中可以通过一个或多个{xxxx}占位符映射,通过@PathVariable可以绑定占位符参数到方法参数中。
  • 例如:@PathVariable(“userId”) Long userId,@PathVariable(“userName”) String userName (注:Long类型可以根据需求自己改变String或int,spring会自动做转换)
  • @RequestMapping(“/user/{userId}/{userName}/query")
  • 请求URL:http://localhost/user/8/张山/query
  • /Springmvc/user/page.do?pageSize=3&pageNow=2 pageSize和pageNow应该属于参数而不是路径,所以此处应该使用@RequestParam的注解

@PathVariable 映射 URL 绑定的占位符

  • @PathVariable 可以将 URL 中 占位符参数 绑定到控制器处理 方法的入参 中:URL 中的 { xxx } 占位符可以通过这样的方式:@PathVariable(“xxx”) 绑定到操作方法的入参中。

下面将给出详细例子: 请求路径 : http://www.test.com/user/031267/view?username=zhangsan&age=20 请求URL : http://www.test.com/user/031267/view

代码语言:javascript
复制
@RequestMapping(value = "/user/{userid}/view")  //占位符 userid
public String view ( @PathVariable("userid") String userid){ //@PathVariable 中指定 userid
    System.out.println("userid= "+userid);   //此处可以获取:userid= 031267
    return SUCCESS;
}

@RequestParam 获取request请求参数中的值

  • 请求路径:http://www.test.com/user/query?username=zhangsan&age=20 请求参数:username=zhangsan&age=20
代码语言:javascript
复制
@RequestMapping(value = "/user/query")
public String query(@RequestParam(value="username") String username) {	
	System.out.println("username = " + username);   //此处打印:username = zhangsan
	return SUCCESS;
}

通过@RequestParam 获取 不同请求对应的值:

…/query?username=zhangsan 获取 username 等于 zhangsan …/query?username= 获取 username=="" …/query 获取 username==null @RequestParam 默认必传的,不能为null

如上面例子,请求路径是 http://www.test.com/user/query?age=20 ,程序一定会报错的, 如果username不传时, 就是null ,而 @RequestParam 默认是必传的。

解决方法:

  • 第1种: 请求路径改为 http://www.test.com/user/query?username=&age=20 表示 username=="",不为null;
  • 第2种: required=false,具体如下: @RequestParam(value=“username”,required=false) String username

两者的共同使用

请求路径 : http://www.test.com/user/031267/view?username=zhangsan&age=20

代码语言:javascript
复制
@RequestMapping(value = "/user/{userid}/view")
public String query(@PathVariable("userid") String userid,@RequestParam(value="username") String username ) {	
	System.out.println("userid= "+userid);   //此处可以获取:userid= 031267
	System.out.println("username = " + username);   //此处打印:username = zhangsan
	return SUCCESS;
}

关于两者的其他详细使用及特殊情况

  • 放上一篇csdn大佬文章链接:https://blog.csdn.net/qq_33355821/article/details/85619692?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-5.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-5.control
  • 参考借鉴链接: https://xiaojin21cen.blog.csdn.net/article/details/83628701
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正确理解“访问请求”、“URI”、“URL”、“请求参数”的概念
  • @RequestParam注解和@PathVariable注解的区别
  • @RequestParam注解
  • @PathVariable注解
  • @PathVariable 映射 URL 绑定的占位符
  • @RequestParam 获取request请求参数中的值
  • 两者的共同使用
  • 关于两者的其他详细使用及特殊情况
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档