springmvc使用@PathVariable路径匹配问题

自己最开始的时候也是一脸懵逼,第一想法也是spring拦截了,在spring配置中配置不拦截应该就OK了,最后还是发下自己很年轻,于是在网上搜索相关@PathVariable不拦截某些资源的文章,发现靠边的就两篇相关文章,大差不大,方法一样:

https://blog.csdn.net/ssbb1995/article/details/78118038

https://www.jianshu.com/p/5a0bbc2912a3

 

不过看头像,还想是同一个人,但是这哥们的解决方案显然不能满足我的要求,只有在实在没办法的时候,我才会这样做

 

我的想法是,能不能让请求不进入我的拦截器,spring的配置不行,那么我的通用请求呢?我的代码如下

@RequestMapping("/{dir}/{page}")
public String commomRedirect(@PathVariable(value = "dir") String dir, @PathVariable(value = "page") String page) {
	if (StringUtils.isBlank(page)) {
		return dir;
	} else {
		return "views/" + dir + "/" + page;
	}
}

于是我的第一个主意打到了@PathVariable ,看有没有相关属性,不接收某些目录的文件请求,但是没有找到;

我又想到,能不能从请求路径上来过滤呢,我的目光又盯着了@RequestMapping,结果没有让我失望,这里面可以写正则,以前还真没有注意过

引用以为哥们的文章:

正则表达式不包含某些字符

^: 以·····开头的字符串

$:以·····结尾的字符串

如:

    只包含数字字母: [0-9a-zA-Z]

    以数字开头: ^[0-9]

    以字母结尾:[a-zA-Z]$

而不包含数字字母:

    [^0-9a-zA-A] :那个开始符是写在中括号里面的!!

 

在这里,我终于找到了答案,最后我的代码更改为:

@RequestMapping("/{dir}/{page:[a-zA-Z_-]+}")
public String commomRedirect(@PathVariable(value = "dir") String dir, @PathVariable(value = "page") String page) {
	if (StringUtils.isBlank(page)) {
		return dir;
	} else {
		return "views/" + dir + "/" + page;
	}
}

有没有和我一样遇到这个问题的小伙伴?希望能帮你解决问题 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值