当前位置: 首页 > 知识库问答 >
问题:

如何在Spring中用WebMvcConfigurerAdapter添加过滤器?

隆飞宇
2023-03-14

通过WebApplicationInitializer,我可以轻松地在onStartup()方法中向ServletContext添加一个筛选器。

如何使用WebMVCConfigurerAdapter添加筛选器?我必须使用XML吗?

为了帮助其他人更容易地理解Spring Web配置,我绘制了下面的插图。

比起记住那么多东西,查它还不那么痛苦。

和一篇关于Spring Web初始化的好文章:

http://www.kubrynski.com/2014/01/commanding-spring-web-initialization.html

基于Tunaki的答复,我检查了AbstractDispatcherServletInitializer。过滤器注册发生在以下代码中:

即使我重写了绿色的getServletFilters()方法,我仍然无法访问RegisterServletFilter()Dyanmic结果。那么如何通过AddMappingForURLPatterns()配置筛选器呢?

看来我必须重写整个RegisterDispatcherServlet()方法。

共有1个答案

郎同化
2023-03-14

WebMVCConfigureer是一个接口,用于为通过@enableWebMVC启用的Spring MVC定制基于Java的配置。WebMVCConfigurerAdapter只是为该接口提供默认空方法的适配器。

它没有配置DispatcherServlet,而这正是过滤器所使用的。因此,您不能使用webmvcconfigureer来配置servlet筛选器。

若要轻松配置筛选器,可以从AbstractDispatcherServletInitializer继承并重写GetServletFilters():

public class MyWebAppInitializer extends AbstractDispatcherServletInitializer {

    @Override
    protected Filter[] getServletFilters() {
        return new Filter[] { new CharacterEncodingFilter() };
    }

}

如果要进一步配置筛选器,则必须重写onstartup:

@Override
public void onStartup(ServletContext servletContext) throws ServletException {
    super.onStartup(servletContext);
    servletContext.addFilter("name", CharacterEncodingFilter.class)
                  .addMappingForUrlPatterns(null, false, "/*");
}
 类似资料:
  • 问题内容: 我想知道,中的类(对于Web应用程序)是否有任何注释?也许@Filter吧? 我想在项目中添加自定义过滤器。 《 Spring Boot参考指南 》提到了关于 ,但是我不确定如何使用它。 问题答案: 如果您要设置第三方过滤器,则可以使用FilterRegistrationBean。例如相当于web.xml 这些将是@Configuration文件中的两个bean 上面已经用spring

  • 我想在我的项目中添加一个自定义筛选器。 Spring Boot参考指南提到了关于,但我不确定如何使用它。

  • 我想知道,在spring boot中是否有类(用于web应用程序)的注释?也许是? 我想在我的项目中添加一个自定义筛选器。 spring boot参考指南提到了关于,但我不确定如何使用它。

  • 我使用spring cloud gateway将请求路由到我的下游应用程序,我定义了如下的路由器 路由工作正常,现在我需要添加一个预过滤器,它可以执行一些预条件并获得路由路径。但不知道如何动态更改uri。uri(“http://localhost:8081/test") 下面是我在preFilter中尝试的代码。 因此,我需要根据我的自定义过滤器中的db查找返回,从传入路径/user/test/*

  • 问题内容: 我想让ETag支持。为此,需要做所有工作。我如何在不声明的情况下添加它(实际上不存在,因为到目前为止我已经不知何故了)? PS我使用Spring Boot 1.1.4 PPS这是一个完整的解决方案 问题答案: When using Spring Boot 如参考文档中所述,唯一的步骤是在配置类中将该过滤器声明为Bean,就这样! When using Spring MVC 你可能已经扩

  • 我想要ETag支持。为此,有一个来完成所有工作。我如何添加它而不在我的中声明它(它实际上并不存在,因为我到目前为止不知怎的没有它)?