0

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

4

2 回答 2

0

不,这Filter不是为了。无论Filter做什么,都应该由 aServletContextListener代替。

@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>

如果您真的坚持使用 a Filter,您可能会滥用该init()工作的方法并调用chain.doFilter(request, response)doFilter()方法。

于 2012-05-16T17:21:37.983 回答
0

一个回合的方法是拥有类变量并在首次访问时设置它,并将所有功能代码放在一个检查这个变量的“if”块中。

于 2012-05-16T17:21:57.797 回答