【问题标题】:Is there a way to run servlet Filter only once? [duplicate]有没有办法只运行一次 servlet 过滤器? [复制]
【发布时间】:2012-05-16 17:18:16
【问题描述】:

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

【问题讨论】:

    标签: servlets servlet-filters web.xml


    【解决方案1】:

    没有。 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() 方法来完成这项工作,只需在doFilter() 方法中调用chain.doFilter(request, response)

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2011-08-15
        • 2022-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-15
        • 1970-01-01
        • 2021-07-02
        相关资源
        最近更新 更多