概述
自己最开始的时候也是一脸懵逼,第一想法也是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;
}
}
有没有和我一样遇到这个问题的小伙伴?希望能帮你解决问题
最后
以上就是风趣野狼为你收集整理的springmvc使用@PathVariable路径匹配问题正则表达式不包含某些字符的全部内容,希望文章能够帮你解决springmvc使用@PathVariable路径匹配问题正则表达式不包含某些字符所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复