【发布时间】:2012-05-16 17:18:16
【问题描述】:
有没有办法在web.xml 中定义某个servlet Filter 只能执行一次?
【问题讨论】:
标签: servlets servlet-filters web.xml
有没有办法在web.xml 中定义某个servlet Filter 只能执行一次?
【问题讨论】:
标签: servlets servlet-filters web.xml
没有。 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)。
【讨论】:
另一种方法是拥有类变量并在首次访问时设置它,并将所有功能代码放在一个检查此变量的“if”块中。..
【讨论】: