web三大組件的加載順序


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

  

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM