基于spring java - 添加过滤器

时间:2014-09-23 11:52:53

标签: java spring cors web.xml

在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的配置,我们如何以编程方式实现?

1 个答案:

答案 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); 
    }
}

编辑:在评论中回答问题 - 请记住我以前从未这样做过,但是从查看ServletContextFilterRegistration的文档时,我会建议尝试此操作以将过滤器映射到特定URL:

container.getFilterRegistration("fooFilter")
    .addMappingForUrlPatterns(DispatcherType.REQUEST, true, "/secured/");