整合SpringMVC之路径匹配规则
本章节,我会给⼤家讲解Spring Boot中定制URL匹配规则的⽅法。
⼀.URL路径匹配
1.概述
在Spring Boot1.5的版本中,假如我们定义了⼀个’/show‘接⼝,默认情况下,我们可以按照/show来访问页⾯,也可以按照/show.do 这样带有“.do”后缀的接⼝来访问资源。
但是到了Spring Boot2.x之后,我们发现再使⽤.do的扩展名就⽆法访问资源了。
也就是说,现在的Spring Boot在默认情况下,禁⽤了后缀匹配模式!
但是我们在开发Web应⽤程序时,并不总是使⽤⼀些默认的配置。有时,我们要创建包含字符 “.” 的RESTful风格的URL;有时候我们也希望识别斜杠的存在。这些需求,Spring都为我们提供了接⼝供开发⼈员按照需求定制。
“.” 字符在Spring中作为分隔符定义格式,例如/projects/spring-boot.json中的 “点” ,另外我们也可能想识别路径尾部的斜杠,
如“/home/”中的 “/” 等。
2.案例说明
我们在SpringBoot1.x版本中,可以创建如下控制器接⼝:
@RestController
@RequestMapping("/")
public class HelloController {
@RequestMapping("hello")
public String showHello() {
return "Hello,⼀⼀哥Sun!";
}
}
在Spring Boot1.x版本的控制器中,我们可以使⽤下⾯的规则来进⾏访问:
spring framework版本
/hello
/hello.*
但是如果我们将⼯程升级到SpringBoot2.x后,默认情况下我们只能使⽤/hello访问,那么怎样才能使⽤1.x的访问规则呢?
接下来我就带⼤家在SpringBoot 2.x版本中实现⼀下,进⾏⾃定义的URL路径匹配。
⼆.⾃定义URL路径匹配规则
1. 实现⽅式有2种:
1.代码配置类实现⽅式;
2.配置⽂件实现⽅式。
2.创建⼀个web项⽬(略)
三.以代码配置类来实现
1. 实现⽅式
在这种实现⽅式⾥,我们⼜可以有两种常⽤的⽅式实现:
继承抽象类WebMvcConfigurerAdapter,重写configurePathMatch⽅法;
继承WebMvcConfigurationSupport,重写configurePathMatch⽅法。上述两种⽅式的核⼼都是:
configurePathMatch(PathMatchConfigurer configurer)函数,
让开发⼈员可以根据需求定制URL路径的匹配规则。
setUseSuffixPatternMatch(boolean useSuffixPatternMatch)
设置是否是后缀模式匹配,true即匹配。
核⼼开发步骤就是两步:
(1).启动类 extends WebMvcConfigurationSupport;
(2).重写configurePathMatch⽅法。
2. 具体实现过程
2.1 创建WebMvcConfigurationSupport配置类。
fig;
import t.annotation.Configuration;
import Ordered;
import org.springframework.fig.annotation.PathMatchConfigurer;
import org.springframework.fig.annotation.ViewControllerRegistry;
import org.springframework.fig.annotation.WebMvcConfigurationSupport;
import org.springframework.fig.annotation.WebMvcConfigurerAdapter;
/**
* @Description Description
* @Author ⼀⼀哥Sun
* @Date Created in 2020/3/21
*/
@Configuration
public class DefaultMvcConfig extends WebMvcConfigurationSupport {
@Override
protected void configurePathMatch(PathMatchConfigurer configurer) {
//setUseSuffixPatternMatch:设置是否遵循后缀匹配模式,如“/user”是否匹配/user.*,为true时就匹配;
configurer.setUseSuffixPatternMatch(true)
//setUseTrailingSlashMatch,设置是否⾃动后缀留级匹配模式,如“/user”是否匹配“/user/”,为true是即匹配                .setUseTrailingSlashMatch(true);
}
}
2.2 创建Controller接⼝
boot.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @Description URL路径访问规则+内容协商管理
* @Author ⼀⼀哥Sun
* @Date Created in 2020/3/21
*/
@Controller
public class WelcomeController {
/**
* produces="application/json;charset=UTF-8":解决继承WebMvcConfigurationSupport类时中⽂乱码的问题.
*/
@ResponseBody
@GetMapping(value="/show",produces="application/json;charset=UTF-8")
public String showMsg() {
return "听⼀⼀哥讲解URL路径访问规则...";
}
}
2.3 启动测试
3. 总结
抽象类WebMvcConfigurerAdapter与WebMvcConfigurationSupport都可以配置MVC, WebMvcConfigurerAdapter有的功
能,WebMvcConfigurationSupport都有,因此建议使⽤WebMvcConfigurationSupport。
四.以配置⽂件实现⽅式
以上代码配置类的实现⽅式,其实是有点复杂的,我们也可以把该实现⽅式,在properties或yml配置⽂件中实现,这种⽅式特别的简单。
我们可以先把前⾯案例中的配置类中的@Configuration先注释掉,使得之前的配置代码失效,我们接下来创建⼀个
application.properties配置⽂件。
1. 创建application.properties⽂件
#设置是否遵循后缀匹配模式,如“/user”是否匹配/user.*,为true时就匹配;
spring.mvc.pathmatch.use-suffix-pattern=true
#设置是否⾃动后缀留级匹配模式,如“/user”是否匹配“/user/”,为true是即匹配
spring.mvc.pathmatch.use-registered-suffix-pattern=false
2. 重启项⽬测试

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。