Подтвердить что ты не робот

Spring MVC 3, Interceptor на всех, исключая некоторые определенные пути

Можно ли применить перехватчик ко всем контроллерам и действиям, кроме некоторых, которые определены?

Чтобы быть ясным, меня не интересует применение перехватчика в списке определенных. Я хочу определить те, которые нужно исключить.

Спасибо!

4b9b3361

Ответ 1

Так как Spring 3.2, они добавили эту особенность с тегом

mvc:exclude-mapping

См. этот пример в документации Spring:

<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
<mvc:interceptor>
    <mvc:mapping path="/**"/>
    <mvc:exclude-mapping path="/admin/**"/>
    <bean class="org.springframework.web.servlet.theme.ThemeChangeInterceptor" />
</mvc:interceptor>
<mvc:interceptor>
    <mvc:mapping path="/secure/*"/>
    <bean class="org.example.SecurityInterceptor" />
</mvc:interceptor>

Здесь ссылка в документ

Ответ 2

Для конфигурации на основе Java из docs

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LocaleInterceptor());
        registry.addInterceptor(new ThemeInterceptor()).addPathPatterns("/**").excludePathPatterns("/admin/**");
        registry.addInterceptor(new SecurityInterceptor()).addPathPatterns("/secure/*");
    }

}

Ответ 3

При настройке перехватчика вы можете указать шаблон пути. Перехватчик будет вызываться только для контроллеров, путь которых соответствует шаблону пути перехватчика.

ref: http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/mvc.html#mvc-config-interceptor

Но, как вы, вероятно, заметили это, шаблон пути не поддерживает исключение.

Итак, я думаю, что единственный способ - кодировать черный список путей внутри перехватчика. Когда вызывается перехватчик, извлеките HttpServletRequest.getRequestURI() и проверьте, включен ли путь в черный список или нет.

Вы можете создать черный список внутри @PostConstruct аннотированного метода перехватчика, и, таким образом, получить черный список из файла свойств, например.

Ответ 4

Предыдущие ответы идеальны, но хотят дать быстрый ответ.

<mvc:interceptors>
   <mvc:interceptor>
     <mvc:mapping path="/customercarechatwindow"/>
     <bean class = "org.xyz.interceptors.officeHours"/>
   </mvc:interceptor>
   <mvc:interceptor>
    <mvc:mapping path="/scheduleappointment"/>
    <bean class = "org.xyz.interceptors.Holiday"/>
   </mvc:interceptor>   
</mvc:interceptors>

Когда запрос с шаблоном url равен /customercarechatwindow, тогда класс interceptor officeHours обрабатывает запрос.