2014-09-23 1 views
0

в XML, чтобы добавить Корс фильтр, мы хотели бы сделать что-то подобное в web.xml:Spring Java на основе - добавление фильтра

<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

Как вы настроив свой контейнер? – chrylis

ответ

0

Если я правильно понимаю вас, вы говорите о конфигурации весны на основе 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); 
    } 
} 

EDIT: Ответ на вопрос в комментарии - принимая во внимание, я никогда не делал этого раньше, но от глядя на документы для ServletContext и FilterRegistration, я бы предложил попробовать это, чтобы получить фильтр отображенный на определенный URL:

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

Привет @Ben, спасибо, я попробую WebAppInitializer завтра. Как указать, к какому URL будет применен фильтр? Например. Я хочу, чтобы мой фильтр использовался при запросах, начинающихся с/secure/* – lorraine

+0

@yin См. Мое редактирование для ответа на этот вопрос. –