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