我正在注册一个过滤器,如下所示用于日志输出
我想要网址模式:/*/api/*
@Bean
public CommonsRequestLoggingFilter commonsRequestLoggingFilter() {
CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter();
filter.setIncludeClientInfo(true);
filter.setIncludeHeaders(true);
filter.setIncludePayload(true);
filter.setIncludeQueryString(true);
filter.setMaxPayloadLength(1000);
return filter;
}
@Bean
public FilterRegistrationBean filterRegistrationBean () {
final FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.addUrlPatterns("/*/api/*");
return registrationBean;
}
由于代码注册了一个ServletFilter
,URL 模式必须符合 Servlet/Filters 支持的 URL 映射,如 Servlet 规范中所指定:
12.2 映射规范
在 Web 应用程序部署描述符中,使用以下语法来定义映射:
-
以 a 开头的字符串/
字符并以 a 结尾/*
后缀用于路径映射。
-
以 a 开头的字符串*.
前缀用作扩展映射。
-
空字符串 ("") 是一种特殊的 URL 模式,它精确映射到应用程序的上下文根,即以下形式的请求http://host:port/<context-root>/
。在这种情况下,路径信息是/
并且servlet路径和上下文路径是空字符串(“”)。
-
仅包含的字符串/
字符表示应用程序的“默认”servlet。在这种情况下,Servlet 路径是请求 URI 减去上下文路径,并且路径信息为空。
-
所有其他字符串仅用于精确匹配。
因此,一个 URL 只能有一个通配符,并且它必须是第一个或最后一个:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)