原创

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测试如下:
alt

截取的url参数值少了.txt内容。因此,在springboot2.0 版本之前只能获取MP_verify_mVNLTSwlCYsWLaKb字符串,后面的".txt"无法获取。

springboot2.0之后版本不用特殊处理就能从url路径中获取完整的参数值

postman测试结果:
alt

截取的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测试结果如下
alt

通过正则表达式我们正确获取了 url中的完整参数值。

完整的demo项目,请关注公众号“前沿科技bot“并发送"UP"获取。

alt

正文到此结束
本文目录