以下是在web.xml中設定servlet的範例片段:
當web應用程式啟動後,事實上并沒有加載所有的servlet。容器會在請求時,才将對應的servlet類加載、執行個體化并進行初始動作,然後再調用service()方法來處理請求。
如果希望在應用程式啟動時,就先把servlet類加載、執行個體化并做好初始化動作,就可以使用<code><load-on-startup></code>設定。設定大于0的值,表示在啟動應用程式後就要初始化servlet。數字表示了servlet的初始化順序,如果有多個servlet在設定<code><load-on-startup></code>時使用了相同的數字,則按其在web.xml中設定的順序來初始化servlet。
别嘗試在所有的servlet上都設定<code><load-on-startup></code>。越多的servlet在應用程式啟動時被初始化,表示應用程式的啟動越花時間。隻有在那些初始時會加載比較多資源的servlet上才設定<code><load-on-startup></code>,像是web架構(framework)中擔任前端控制器(front controller)角色的servlet。
可以在<code><url-pattern></code>中設定三種模式:
完全符合模式
必須以斜杠(/)作為開頭,也就是以web應用程式環境根目錄開始,指定完整的url模式。如:<code><url-pattern>/admin/login.do</url-pattern></code>。
目錄符合模式
指定某個目錄下的所有url都交由某個servlet來處理,則可以在目錄斜杠(/)後加上星号(<code>*</code>)。如<code><url-pattern>/guest/*</url-pattern></code>。
擴充名符合模式
指定以某個擴充名為結尾的所有url請求都交由對應的servlet處理,則可以使用星号(<code>*</code>)作為開頭,并加上擴充名。<code><url-pattern>*.do</url-pattern></code>。
不能混用目錄符合模式與擴充名符合模式,即不能出現如<code><url-pattern>/admin/*.do</url-pattern></code>這樣的url模式設定。
如果有url模式設定比對的規則在某些url請求時有所重疊,則請求時比對的原則依完全模式、目錄模式、擴充名模式的順序來決定,也就是從最嚴格的模式開始符合。
在設定過濾器時,<code><filter-mapping></code>上也可以設定<code><url-pattern></code>标簽,設定的原則與<code><servlet-mapping></code>上的<code><url-pattern></code>是相同的。在servlet2.5版本之後,可以直接在同一個<code><servlet-mapping></code>中設定多個<code><url-pattern></code>。例如:
同樣的,也可以在<code><filter-mapping></code>中設定多個<code><url-pattern></code>或<code><servlet-name></code>。例如:
如果使用者使用者請求某個類似于/bookmarkonline/user的url,而user在servlet的url模式設定中并不存在,它隻是一個目錄,若不想使用者看到資源不存在之類的錯誤資訊,則可以設定預設的歡迎頁面,在使用者請求某個目錄時可以自動挑選歡迎頁面加以顯示。
設定<code><welcome-file></code>時,注意態用斜杠(/)作為開頭(這不是在設定整個應用程式的預設首頁)。在請求某個目錄名稱時,容器會自動依<code><welcome-file></code>中的檔案順序,看看時候可找到對應的檔案,找到的話就顯示給使用者。
如果在存取應用程式的時候發生了異常或者錯誤,而沒有在servlet/jsp中處理這個異常或錯誤,則最後會由容器加以處理,一般容器就是直接顯示異常資訊與堆棧跟蹤資訊。如果希望容器發現這類異常或者錯誤時,可以自動轉發到某個url,則可以在web.xml中使用<code><error-page></code>進行設定。
例如,若想要在容器收到某個類型的異常對象時進行轉發,則可以做如下設定:
如果想要基于http的錯誤代碼轉發到處理頁面,則要搭配<code><error-code></code>來設定。例如:
這個設定在自行使用httpservletresponse的senderror()送出錯誤狀态碼時也有作用,因為senderror()隻是告知容器,以容器的預設方式或web.xml中的設定來産生錯誤狀态碼的資訊。
當自動響應串流給浏覽器時,為了讓浏覽器知道如何處理收到的串流對象,必須告知mime類型。若應用程式中使用到了mime類型,可以在web.xml中設定擴充名與mimie類型對應。例如:
<code><extension></code>設定檔案的擴充名,而<code><mime-type></code>設定對應的mime類型名稱。如果想要知道某個檔案的mime類型名稱,則可使用servletcontext的getmimetype()方法,這個方法讓你指定檔案名稱,然後根據web.xml總設定的對應擴充名,取得mime類型的名稱。