有没有办法只运行一次servlet Filter?

时间:2012-05-16 17:18:16

标签: servlets servlet-filters web.xml

有没有办法在web.xml中定义某个servlet Filter必须只执行一次?

2 个答案:

答案 0 :(得分:0)

没有。那里Filter不适合。无论Filter正在做什么,最有可能由ServletContextListener代替。

@WebListener
public class Config implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent event) {
        // Do stuff during server startup.
    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {
        // Do stuff during server shutdown.
    }

}

当您还没有使用Servlet 3.0时,请移除@WebListener并以web.xml以旧的方式注册,如下所示:

<listener>
    <listener-class>com.example.Config</listener-class>
</listener>

如果您确实坚持使用Filter,则可能会滥用init()方法完成工作,只需在chain.doFilter(request, response)方法中调用doFilter()

答案 1 :(得分:0)

关于方法的一种方法是使用类变量并在第一次访问时设置它,并将所有功能代码放在检查此变量的“if”块中。