有没有办法在web.xml
中定义某个servlet Filter必须只执行一次?
答案 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”块中。