springboot项目Contoller层问题及解决方案——从URL路径中获取到参数值(提供测试demo)
1. 从URL路径中取值,作用于函数参数
从服务路径Url中获取值,示例:http://localhost:8080/jdk/route/url/MP_verify_mVNLTSwlCYsWLaKb.txt ,获取这个url的最后一段文件名字符串MP_verify_mVNLTSwlCYsWLaKb.txt。
项目根目录是/jdk
如下代码片段:
@Controller
@RequestMapping("/route")
public class SampleOneController {
@ResponseBody
@RequestMapping("/url/{param}")
public String getFile(@PathVariable String param) {
return param;
}
}
application.properties配置内容,配置的根目录是 /jdk
################################################################
# springboot 2.0变革后的配置区别
#1、springboot 2.0之前,配置为 server.context-path
#$2、springboot 2.0之后,配置为 server.servlet.context-path
################################################################
server.context-path=/jdk
#server.servlet.context-path=/jdk
################################################################
springboot2.0之前版本获取url路径中的参数不完整
springboot为2.0之前版本,postman测试如下:
截取的url参数值少了.txt内容。因此,在springboot2.0 版本之前只能获取MP_verify_mVNLTSwlCYsWLaKb字符串,后面的".txt"无法获取。
springboot2.0之后版本不用特殊处理就能从url路径中获取完整的参数值
postman测试结果:
截取的url参数值正确,获取到了完整的参数。
那这两个版本 不一样的结果,实际开发过程中如果springboot2.0之前版本是怎么办?
springboot两个版本如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
</parent>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/>
</parent>
springboot2.0之前的版本要想从路径url中获取完整值,需要对参数做特殊处理
springboot1.4.0.RELEASE版本下,需要借助正则表达式才能完整获取截取的url参数值。如下第二个controller方法,该方法就能获取url参数的.txt内容了:
@ResponseBody
@RequestMapping("/url/{param}")
public String getUrlParam(@PathVariable String param) {
return param;
}
@ResponseBody
@RequestMapping("/urlRegx/{param:[_a-zA-Z0-9\\.]+}")
public String getUrlParamRegx(@PathVariable String param) {
return param;
}
postman测试结果如下
通过正则表达式我们正确获取了 url中的完整参数值。
完整的demo项目,请关注公众号“前沿科技bot“并发送"UP"获取。
正文到此结束
- 本文标签: Spring Boot 其他
- 版权声明: 本站原创文章,于2020年11月07日由空白发布,转载请注明出处