Spring控制器映射值正则表达式

Spring控制器映射值正则表达式,spring,spring-boot,spring-mvc,Spring,Spring Boot,Spring Mvc,我有一个spring控制器方法 @GetMapping(value = {"{name}"}) public String index(ModelMap model, @PathVariable Optional<String> name) @GetMapping(值={{name}}) 公共字符串索引(ModelMap模型,@PathVariable可选名称) 我希望所有的东西都通过这个方法,除了任何包含句点的东西。因此,类似于/main.css的内容将被拒

我有一个spring控制器方法

@GetMapping(value = {"{name}"})
public String index(ModelMap model, @PathVariable Optional<String> name)
@GetMapping(值={{name}})
公共字符串索引(ModelMap模型,@PathVariable可选名称)
我希望所有的东西都通过这个方法,除了任何包含句点的东西。因此,类似于
/main.css
的内容将被拒绝,而类似于
/maincss
的内容将被允许。我有办法做到吗

我知道我可以简单地将所有资源文件移动到资源路径,如
/resources/main.css
,问题就解决了,或者我可以更改代码,这样我就有两种方法,一种用于
/
,另一种用于
/name/{name}
。但出于教育目的,我想知道我是否可以让controller应用于除某个正则表达式之外的所有东西。例如,如果我希望控制器接受除包含单词Norris的字符串之外的所有内容,该怎么办


是否仍要对映射值应用正则表达式或某种规则?

您可以使用格式
varName:regex
(其中冒号“:”是两者之间的分隔符)来指示要对变量使用的正则表达式检查:

@GetMapping(值={{name:^((?!Norris)。*$}})
公共字符串索引(ModelMap模型,@PathVariable可选名称)
但是,由于您的问题可能与资源有关:

我知道我可以简单地将所有资源文件移动到资源路径,如/resources/main.css


您还可以尝试配置或以排除某些文件(模式)作为资源。可以找到更多关于资源处理的信息。

您可以应用拦截器逻辑。完美!!!抱歉,资源只是我的一个例子。我的主要观点是如何将regex应用于标题建议的映射值,我只是使用了参考资料作为一个有效的示例。你的回答帮助了我的一切,把我从水里吹了出来!!!爱死它了!谢谢:)