java匹配机制_Java Spring:需要通配符@RequestMapping来匹配所有BUT / images / *以及对原始URL的访问权限...

本文介绍了一位Spring新手如何在现有代码基础上,通过Java配置绕过Spring路由机制,创建一个通配符方法匹配所有非静态资源URL,而不包括/images和/css路径。作者分享了两种解决方案,旨在提高URL路径匹配的灵活性。
摘要由CSDN通过智能技术生成

我是

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/**");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值