我想在Filter对象根据web.xml定义添加方法之后调用它。我得到的只是一个WebApplicationContext对象(让我们称之为:wac)。
wac.getServletContext().addFilter("otherfilter", otherFilter);添加新的过滤器对象wac.getServletContext().getFilterRegistration("myfilter")成功地测试它的存在。但是,我如何访问(并可能修改)之前添加的Filter对象?
发布于 2014-03-13 16:12:01
我不知道如何做到您想要的,但这个问题通常是通过不同的方法解决的。
您可以在应用程序上下文中将Filter声明为bean,然后在web.xml中注册一个DelegatingFilterProxy,将过滤委托给过滤器。
在本例中,您的过滤器将是一个普通的Spring,您将能够像任何其他bean一样访问它。
发布于 2014-03-13 16:24:59
Servlet没有提供任何机制来直接访问Filter实例,一旦它被添加到ServletContext中。使用Servlet获得的最好结果是您已经找到的FilterRegistration接口,它允许您通过web.xml修改相同的配置选项集。
具体取决于您想要做什么,您可能可以使用init参数编写解决这个问题的方法,但这永远不会是一个特别干净的解决方案。我会使用由axtavt提出的DelegatingFilterProxy解决方案。
https://stackoverflow.com/questions/22384297
复制相似问题