在xml中为了添加一个cors过滤器,我们会在web.xml中执行类似的操作:
<filter>
<filter-name>cors</filter-name>
<filter-class>MyCorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>cors</filter-name>
<url-pattern>/secured/*</url-pattern>
</filter-mapping>
但我们现在正在基于java的配置,我们如何以编程方式实现?
答案 0 :(得分:1)
如果我正确理解你,那你就是在谈论基于java的弹簧配置。我们也使用基于Java的配置,但仍在使用web.xml。您必须将您的Java配置文件添加为web.xml中的上下文参数,如下所示:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.spring.AppConfig</param-value>
</context-param>
因此,您仍然可以像上面那样添加过滤器。
或者,如果您使用WebApplicationInitializer配置ServletContext,则可以执行以下操作:
public class WebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext container) throws ServletException {
container.addFilter("fooFilter", FooFilter.class);
}
}
编辑:在评论中回答问题 - 请记住我以前从未这样做过,但是从查看ServletContext和FilterRegistration的文档时,我会建议尝试此操作以将过滤器映射到特定URL:
container.getFilterRegistration("fooFilter")
.addMappingForUrlPatterns(DispatcherType.REQUEST, true, "/secured/");