Web三大組件:過濾器組件 監聽器組件 Servlet組件
過濾器的頂級接口:javax.servlet.Filter
監聽器的頂級接口:javax.servlet.ServletContextListener
Servlet的頂級接口:javax.servlet.Servlet
測試如下:
MyServlet:
package web; import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class MyServlet implements Servlet { public void destroy() { System.out.println("Servelt銷毀了"); } public ServletConfig getServletConfig() { return null; } public String getServletInfo() { return null; } public void init(ServletConfig arg0) throws ServletException { System.out.println("Servelt加載了"); } public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { } }
MyFilter:
package web; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class MyFilter implements Filter { public void destroy() { System.out.println("Filter銷毀了"); } public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { } public void init(FilterConfig config) throws ServletException { System.out.println("Filter加載了"); } }
MyListener:
package web; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class MyListener implements ServletContextListener { public void contextDestroyed(ServletContextEvent arg0) { System.out.println("Listener銷毀了"); } public void contextInitialized(ServletContextEvent arg0) { System.out.println("Listener加載了"); } }
接着需要在web.xml文件中配置這些組件,注意看web.xml文件中的配置順序:
web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name>loadOrder</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- 過濾器-->
<filter>
<display-name>MyFilter</display-name>
<filter-name>MyFilter</filter-name>
<filter-class>web.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/MyFilter</url-pattern>
</filter-mapping>
<!-- Servlet組件 -->
<servlet>
<description></description>
<display-name>MyServlet</display-name>
<servlet-name>MyServlet</servlet-name>
<servlet-class>web.MyServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
<!-- 監聽器 -->
<listener>
<listener-class>web.MyListener</listener-class>
</listener>
</web-app>
按照如上配置之后:
當啟動服務器后其結果為:
Listener加載了
Filter加載了
Servelt加載了
總結:所以三大組件的加載順序與配置文件的順序無關,其加載順序為:Listener>Filter>Servlet
