Servlet.init() 和 Filter.init() 调用序列
2022-09-01 10:48:36
在java Web应用程序中,Servlet.init()和Filter.init()方法以什么顺序调用?哪一个叫先?是否所有 Servlet.init() 方法都比任何 Filter.doFilter 方法都调用?
在java Web应用程序中,Servlet.init()和Filter.init()方法以什么顺序调用?哪一个叫先?是否所有 Servlet.init() 方法都比任何 Filter.doFilter 方法都调用?
在 Web 应用启动期间,筛选器始终按照中定义的顺序进行初始化。web.xml
默认情况下,servlet 仅在其 url 模式的第一个 HTTP 请求期间初始化。但是,您也可以使用它们配置为在Webapp启动期间使用可以指定其优先级的条目进行初始化。然后,它们将按优先级顺序加载。
例如:<load-on-startup>
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>mypackage.MyServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
如果有多个具有相同优先级顺序的 servlet,则这些 servlet 的加载顺序是未指定的,并且可能是任意的。但是,Servlet 以任何方式在过滤器初始化之后,但在调用过滤器之前进行初始化。
Filter.init()
servlet:Servlet.init()
<load-on-startup>
web.xml
Filter.doFilter()
Servlet.init()
Servlet.service()