調用Servlet處理請求
一,< servlet>元素及其子元素,聲明一個Servlet。
< description>*:為Servlet指定一個文本描述。
< display-name>*:為Servlet提供一個簡短的名字被某些工具顯示。
< icon>*:為Servlet指定一個圖標,在圖形管理工具中表示該Servlet。
< servlet-name>:Servlet的名字,唯一性。
< servlet-class>or< jsp-file>:< servlet-class>為Servlet的完整路徑。< jsp-file>指定web應用程序中的jsp文件完整路徑以/開始對一個jsp文件做URL映射。
< init-param>*:定義Servlet初始化參數。
< description>*:初始化參數文本描述。
< pararm-name>:初始化參數的名字。
< param-value>:初始化參數的值。
< load-on-startup>?:WEB應用程序被啟動時,Servlet被加載的順序。內容為一個整型值。
負數或沒有設定這個元素表示Servlet容器將在客戶端請求這個Servlet的時候加載它
正數或o表示WEB應用程序被啟動時按數值大小由小到大初始化Servlet。
如果同時包含< jsp-file>元素和< load-on-startup>,則jsp文件也被預編譯並加載。
< run-as>?:執行組件的角色
< descripttion>:文本描述。
< role-name>:指定執行組件的角色名字。
< security-role-ref>*:聲明在組件或部署的組件的代碼中的安全角色引用。
< description>*:安全角色文本描述。
< role-name>:使用的安全角色的名字。
< role-line>?:指定到一個安全角色的引用。
二,< servlet-mapping>元素及其子元素,在servlet和url之間定義一個映射。
< servlet-name>:Servlet的名字,唯一性和一致性。與< servlet>元素中聲明的名字一致。
< url-pattern>:指定相對於Servlet的URL的路徑。該路徑相對於web應用程序上下文的根路徑。
三,加載Servlet的過程
容器的Context對象對請求路徑(URL)做出處理,去掉請求URL的上下文路徑後,按路徑映射規則和Servlet映射路徑< url-pattern>)做匹配,如果匹配成功,則調用Servlet處理請求。
匹配規則:
請求URL精確匹配,如果成功則調用Servlet處理請求。匹配最長的路徑前綴,以/為路徑分隔符,按路徑樹逐級匹配,選擇最長匹配的Servlet來處理。如果前面都沒有匹配成功,則容器會讓WEB應用程序來調用Servlet處理請求。如果沒有定義默認Servlet,容器將向客戶端發送404請求資源不存在)錯誤信息。