Springboot中URL的匹配规则

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springboot中URL的匹配规则相关的知识,希望对你有一定的参考价值。

参考技术A 事情发生经过是我有次springboot项目中定义了一个遵循restful规则的接口,

@RequestMapping ( value = "/xxxx/email", method = RequestMethod. GET)

public void xxxtest ( @PathVariable String email )

    System. out .println ( email ) ;



这时候访问的时候http://localhst:8080/xxxx/tets@qq.com

输出的email变成了qq。

请求url被“ . “截断了。最终得到的额email的值是qq,而不是qq.com

这里要说道一个类,PatternsRequestCondition类

里面有两个匹配规则,

useSuffixPatternMatch:设置是否是后缀模式匹配,如“/user”是否匹配/user.*,默认真即匹配;

这种模式下.后面加任何后缀,都会被匹配到。user.do,user.html

useTrailingSlashMatch:设置是否自动后缀路径模式匹配,如“/user”是否匹配“/user/”,默认真即匹配;

private String getMatchingPattern ( String pattern, String lookupPath )

   if ( pattern.equals ( lookupPath ))

      return pattern;



   if ( this.useSuffixPatternMatch )

if ( !this.fileExtensions.isEmpty () && lookupPath.indexOf ( '.' ) != -1 )

         for ( String extension : this.fileExtensions )

if ( this.pathMatcher.match ( pattern + extension, lookupPath ))

               return pattern + extension;



        

     

      else

         boolean hasSuffix = pattern.indexOf ( '.' ) != -1;

         if

( !hasSuffix && this.pathMatcher.match ( pattern + ".*", lookupPath ))

            return pattern + ".*";



     

  

   if ( this.pathMatcher.match ( pattern, lookupPath ))

      return pattern;



   if ( this.useTrailingSlashMatch )

if ( !pattern.endsWith ( "/" ) && this.pathMatcher.match ( pattern + "/", lookupPath ))

         return pattern +"/";



  

   return null;



默认情况下启动程序,这两个值都是默认true,可以通过在主程序入库

public class xxxApplication extends WebMvcConfigurationSupport

    @Override

    protected void configurePathMatch ( PathMatchConfigurer configurer )

        configurer.setUseSuffixPatternMatch ( false ) ;



通过重写configurePathMatch方法,设置useSuffixPatternMatch,useTrailingSlashMatch的值来达到修改规则的目的

来自: Springboot中URL的匹配规则

以上是关于Springboot中URL的匹配规则的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 定制URL匹配规则的方法

转:servlet的url-pattern匹配规则详细描述

servlet的url-pattern匹配规则详细描述

详解servlet的url-pattern匹配规则.RP

servlet的url-pattern匹配规则详细描述

servlet的url-pattern匹配规则详细描述.RP