我是
Spring的新手,接管使用@RequestMapping的各种路由的现有代码.但是,由于新功能请求的复杂性,绕过Spring路由机制以使单个通配符操作方法与资产目录的所有可能URL匹配除外更容易:
匹配这些:
(empty)
/
/anything/you/can/throw/at/it?a=b&c=d
但不是:
/images/arrow.gif
/css/project.css
我的各种尝试要么根本不匹配,要么匹配但只捕获一个单词而不是整个原始URL:
@RequestMapping(value="{wildcard:^(?!.*(?:images|css)).*\$}", method=RequestMethod.GET)
public String index(@PathVariable("wildcard") String wildcard,
Model model) {
log(wildcard); // => /anything/you/can/throw/at/it?a=b&c=d
}
(各种谷歌搜索和Stackoverflow搜索“[spring] requestmapping通配符”到目前为止没有帮助.)
最佳答案 我建议第一种涉及访问静态资源的方法.
1)由于通常images / css是静态资源,因此一种方法是:
您可以充分利用mvc:resources元素指向具有特定公共URL模式的资源的位置.在spring config xml文件中输入以下内容:
2)实现这一目标的另一种方法是:
和Java配置:
@Configuration
@EnableWebMvc
public class MyWebConfig extends WebMvcConfigurerAdapter
{
@Override
public void addInterceptors(InterceptorRegistry registry)
{
registry.addInterceptor(new MyCustomInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/images/**");
}
}