我可以在servlet之后初始化过滤器吗?

时间:2012-03-22 17:06:20

标签: servlet-filters

我有一个使用spring的web应用程序,其中我有一个servlet,它在init方法中定位上下文:

private ContextLoader contextLoader;

public void init() throws ServletException {
    contextLoader = new ContextLoader();
    contextLoader.initWebApplicationContext(getServletContext());   
}

另外,我有一个servlet,我在其中执行以下操作:

public void init(FilterConfig config) throws ServletException {
    WebApplicationContext context =
       WebApplicationContextUtils.getWebApplicationContext(config.getServletContext());
    //here I'm using the context
}

问题:在servlet初始化之前调用过滤器的init()方法,因此我在过滤器中获得的上下文为null。在web.xml中,我的servlet配置了load-on-startup = 1。

有什么办法可以在servlet初始化后使我的过滤器初始化,这样我就可以在过滤器中使用WebApplicationContext了?

谢谢!

1 个答案:

答案 0 :(得分:1)

试试这个:

  1. 不要在web.xml中配置过滤器
  2. 在您的servlet中,获取ServletContext。
  3. 调用ServletContext.addFilter()添加过滤器。