javax.servlet.filter不起作用



在我的web.xml中我创建了以下过滤器:

<filter>
        <filter-name>tokenAuthenticationFilter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>tokenAuthenticationFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

我创建了以下组件:

@Component("tokenAuthenticationFilter")
public class TokenAuthenticationFilter implements Filter
{
    final static Logger logger = Logger.getLogger(TokenAuthenticationFilter.class.getCanonicalName());
    @Autowired
    private IAMUserDAO iamUserDAO;
    @Override
    public void init(FilterConfig arg0) throws ServletException {
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException
    {
       //Code comes here
    }
    @Override
    public void destroy() {
    }   

不幸的是,这个过滤器永远不会访问,我不知道为什么。请帮助

我的最初需求只是在使用@Autowired属性的滤镜上使用delegatingfilterproxy添加过滤器。我最初尝试根据以下说明修改web.xml;但是这对我不起作用。

  • 我的下一步是创建一个AbstractAnnotationConfigDisPatcherServletInitializer将会完全消除Web.xml配置。
  • 为此,我必须使用Java配置并将所有XML配置文件转换为Java配置;servlet-context.xml变成springwebconfig.java和root-context.xml,springrootconfig.java
  • 我创建了此类,一切都按计划进行:

    public class AuthenticationBWebInitializer extends 
        AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Filter[] getServletFilters () {
          DelegatingFilterProxy filterProxy = new DelegatingFilterProxy();
          filterProxy.setTargetBeanName("tokenAuthenticationFilter");
          return new Filter[]{filterProxy, new AppLog4jFilter()};
    }
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] { SpringRootConfig.class };
    }
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] { SpringWebConfig.class };
    }
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
    @Override
    protected void registerContextLoaderListener(ServletContext servletContext) {
        super.registerContextLoaderListener(servletContext);    
    }
    

    }

希望这将有助于有同样问题的一些失落的灵魂。

最新更新