1. 程式人生 > >Java EE中關於配置檔案web.xml雜談一

Java EE中關於配置檔案web.xml雜談一

    當我們啟動一個web專案時,容器Tomcat(執行在虛擬機器上)首先會先獲取配置檔案web.xml中的配置資訊,所以當web.xml中出現錯誤時,無論執行在伺服器上的是servlet,還是JSP(jsp最終被Tomcat翻譯成servlet,位於%CATALINE_HOME%\work\Catalina\localhost\*web應用名*\org\apache\jsp),均無法正確顯示。

    (1)啟動web專案時,容器首先讀取web.xml下的兩個節點<listener></listener>與<context-param></context-param>;

    (2)接著,tomcat容器建立一個ServletContext(application),該web專案的所有部分(JSP與Servlet)都能共享該上下文;

    (3)容器將以<context-param></context-param>間的<param-name>為鍵,<param-value>為值,作為鍵值對存於ServletContext中;

    (4)容器建立<listener></listener>例項,根據配置的class類路徑<listener-class>來建立監聽,在監聽中有contextinitialized(ServletContextEvent args)初始化方法,啟動Web應用時,系統呼叫Listener的該方法,在該方法中獲得:ServletContext application=ServletContextEvent.getServletContext();param-value值=application.getInitParameter(param-name鍵);

    (5)隨後,容器會讀取<filter></filter>,根據指定的類路徑來例項化過濾器

  以上步驟均在web專案啟動時的準備工作。如果系統有Servlet,則在第一次發起請求的時候被例項化,且一般不會被容器銷燬,它可以服務於多個使用者的請求。Servlet的初始化在上述步驟之後完成。所以web.xml的載入次序是:<context-param> --> <listener> --> <filter> --> <servlet>

在web.xml中的首行有一個XML文件有效性檢查,即通過<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">。

該段程式碼指定檔案型別定義(DTD)。web-app定義該文件的根元素,PUBLIC表明DTD檔案能被公開使用;-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN意味著DTD有Sun microsystems, Inc維護,同時表示文件型別是DTD Web Application 2.3,通過英文(EN)書寫;最後的URL表示D檔案位置,輸入該網址即可下載。

PS:Inc與前面的逗號“,”間有空格,若省略將在tomcat執行時出現錯誤。