75. Spring Boot 定制URL匹配规则【从零开始学Spring Boot】

在之前有一篇文章说了,博客名称从原来的《从零开始学Spring Boot》更改为《Spring Boot常见异常汇总》,后来写了几篇文章之后发展,有些文章还是一些知识点,所以后续的文章还是决定还原回原来的博客名称《从零开始学Spring Boot》了。好了,这些都是无关痛痒的话,那么我们看看这章的内容吧。

    

       事情的起源:有人问我,说编写了一个/hello访问路径,但是吧,不管是输入/hello还是/hello.html,还是/hello.xxx都能进行访问。当时我还以为他对代码进行处理了,后来发现不是,后来发现这是Spring Boot路由规则。好了,有废话了下,那么看看我们解决上面这个导致的问题。

 

       构建web应用程序时,并不是所有的URL请求都遵循默认的规则。有时,我们希望RESTful URL匹配的时候包含定界符“.”,这种情况在Spring中可以称之为“定界符定义的格式”;有时,我们希望识别斜杠的存在。Spring提供了接口供开发人员按照需求定制。

       核心的开发步骤就是两步:

(1)启动类 extends WebMvcConfigurationSupport

(2)重写configurePathMatch方法;

具体实现代码:

package com.kfit;

 

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

 

/**

 *

 * @author Angel --守护天使

 * @version v.0.1

 * @date 2016729下午7:06:11

 */

@SpringBootApplication

public class ApiCoreApp extends WebMvcConfigurationSupport{

   

   

    /**

     * 1 extends WebMvcConfigurationSupport

     * 2、重写下面方法;

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

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

     */

    @Override

    publicvoid configurePathMatch(PathMatchConfigurer configurer) {

        configurer.setUseSuffixPatternMatch(false)

                   .setUseTrailingSlashMatch(true);

    }

   

    publicstaticvoid main(String[] args) {

       SpringApplication.run(ApiCoreApp.classargs);

    }

}

 

其中访问代码:

    @RequestMapping("/user")

    public String hello(){

       return"/user";

    }

 

       以上代码有两句核心的代码:

setUseSuffixPatternMatch(boolean useSuffixPatternMatch)

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

当此参数设置为true的时候,那么/user.html,/user.aa,/user.*都能是正常访问的。

当此参数设置为false的时候,那么只能访问/user或者/user/( 这个前提是setUseTrailingSlashMatch 设置为true了)。

 

setUseTrailingSlashMatch (boolean useSuffixPatternMatch)

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

当此参数设置为true的会后,那么地址/user,/user/都能正常访问。

当此参数设置为false的时候,那么就只能访问/user了。

 

当以上两个参数都设置为true的时候,那么路径/user或者/user.aa,/user.*,/user/都是能正常访问的,但是类似/user.html/ 是无法访问的。

 

当都设置为false的时候,那么就只能访问/user路径了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值