@PathVariable注解,让spring支持参数带值功能的案例
@PathVariable的作用
获取URL动态变量,例如
@RequestMapping("/users/{userid}") @ResponseBody public String getUser(@PathVariable String userid){ return "userid=" + userid; }
@PathVariable的包引用
spring自从3.0版本就引入了org.springframework.web.bind.annotation.PathVariable,
这是RESTful一个具有里程碑的方式,将springMVC的精华推向了高潮,那个时代,跟微信公众号结合的开发如火如荼,很多东西都会用到URL参数带值的功能。
@PathVariable的PathVariable官方doc解释
- Annotation which indicates that a method parameter should be bound to a URI template variable. Supported for RequestMapping annotated handler methods in Servlet environments.
- If the method parameter is Map<String, String> or MultiValueMap<String, String> then the map is populated with all path variable names and values.
翻译过来就是:
- 在SpringMVC中可以使用@PathVariable注解,来支持绑定URL模板参数(占位符参数/参数带值)
- 另外如果controller的参数是Map(String, String)或者MultiValueMap(String, String),也会顺带把@PathVariable的参数也接收进去
@PathVariable的RESTful示范
前面讲作用的时候已经有一个,现在再提供多一个,别人访问的时候可以http://localhost:8080/call/窗口号-检查编号-1
/** * 叫号 */ @PutMapping("/call/{checkWicket}-{checkNum}-{status}") public ApiReturnObject call(@PathVariable("checkWicket") String checkWicket,@PathVariable("checkNum") String checkNum, @PathVariable("status") String status) { if(StringUtils.isBlank(checkWicket) || StringUtils.isBlank(checkNum)) { return ApiReturnUtil.error("叫号失败,窗口号,检查者编号不能为空"); }else { if(StringUtils.isBlank(status)) status ="1"; try { lineService.updateCall(checkWicket,checkNum,status); return ApiReturnUtil.success("叫号成功"); } catch (Exception e) { return ApiReturnUtil.error(e.getMessage()); } } }
补充:解决@PathVariable接收参数带点号时只截取点号前的数据的问题
问题:
@RequestMapping(value = "preview/{fileName}", method = RequestMethod.GET) public void previewFile(@PathVariable("fileName") String fileName, HttpServletRequest req, HttpServletResponse res) { officeOnlinePreviewService.previewFile(fileName, req, res); }
本来fileName参数传的是:userinfo.docx,
但结果接收到的是:userinfo
这显然不是我想要的。
解决方法:
@RequestMapping(value = "preview/{fileName:.+}", method = RequestMethod.GET) public void previewFile(@PathVariable("fileName") String fileName, HttpServletRequest req, HttpServletResponse res) { officeOnlinePreviewService.previewFile(fileName, req, res); }
参数fileName这样写,表示任何点(包括最后一个点)都将被视为参数的一部分:
{fileName:.+}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持猪先飞。如有错误或未考虑完全的地方,望不吝赐教。
相关文章
- 这篇文章主要介绍了Spring AOP 对象内部方法间的嵌套调用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-08-29
Spring Cloud 中@FeignClient注解中的contextId属性详解
这篇文章主要介绍了Spring Cloud 中@FeignClient注解中的contextId属性详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-25Springboot如何实现Web系统License授权认证
这篇文章主要介绍了Springboot如何实现Web系统License授权认证,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-05-28- 这篇文章主要介绍了Swagger中@ApiIgnore注解的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-21
- 这篇文章主要给大家介绍了关于Nest.js参数校验和自定义返回数据格式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-28
校验非空的注解@NotNull如何取得自定义的message
这篇文章主要介绍了校验非空的注解@NotNull如何取得自定义的message,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-29如何在Spring WebFlux的任何地方获取Request对象
这篇文章主要介绍了如何在Spring WebFlux的任何地方获取Request对象,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下...2021-01-26- 这篇文章主要介绍了详解SpringCloudGateway内存泄漏问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-16
- 这篇文章主要介绍了解决Springboot get请求是参数过长的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-17
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
废话不多说了,直接给大家贴代码了。<?php class test{} $a1 = null; $a2 = ""; //$a3 = $a4 = 0; $a5 = '0'; $a6 = false; $a7 = array(); //var $a8; $a9 = new test(); for ($i=1; $i <=9 ; $i++) {...2015-11-24- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
- @Autowired 注解的主要功能就是完成自动注入,使用也非常简单,但这篇文章主要给大家介绍了关于Spring为什么不推荐使用@Autowired注解的相关资料,需要的朋友可以参考下...2021-11-03
- mysql安装成功后有几个默认的配置模板,列表如下: my-huge.cnf : 用于高端产品服务器,包括1到2GB RAM,主要运行mysql my-innodb-heavy-4G.ini : 用于只有innodb的安装,最多有4GB RAM,支持大的查询和低流量 my-large.cnf : 用于...2015-03-15
- 这篇文章主要介绍了C#泛型的类型参数约束的相关资料,文中讲解非常细致,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下...2020-07-31
- 这篇文章主要给大家介绍了关于C#中out参数、ref参数与值参数的用法及区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
Springboot如何使用mybatis实现拦截SQL分页
这篇文章主要介绍了Springboot使用mybatis实现拦截SQL分页,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-19Java中lombok的@Builder注解的解析与简单使用详解
这篇文章主要介绍了Java中lombok的@Builder注解的解析与简单使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-06- 这篇文章主要介绍了Vue 组件复用多次自定义参数操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-27
- 这篇文章主要介绍了Java线程池中的各个参数如何合理设置操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-06-19
- 这篇文章主要介绍了vue+axios全局添加请求头和参数操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-24