上次看到處理HEAD請(qǐng)求,下面是關(guān)于Web應(yīng)用程序的配置問題。
Web應(yīng)用程序是Servlet、JSP、HTML文檔、圖片、模版以及其他可在支持Servlet的Web服務(wù)器上部署的所有Web資源的一個(gè)集合。
(這句話好長,總之就是你能在網(wǎng)上看到的東西,或者一些產(chǎn)生動(dòng)態(tài)Web頁的程序)。
我們安裝了Tomcat就會(huì)知道,在webapps文件夾下面有很多的子文件夾,一個(gè)文件夾對(duì)應(yīng)一個(gè)應(yīng)用程序。他們是一堆的JSP程序以及配置文件。另外我們可以給他打包,成為一個(gè)存檔文件,擴(kuò)展名為:war。
WEB-INF目錄
每個(gè)Web Apps,都有一個(gè)這樣的目錄,有一個(gè)web.xml文件。
現(xiàn)在對(duì)xml作一點(diǎn)學(xué)習(xí):
XML是eXtensible Markup Language
他與HTML類似,都是用標(biāo)簽標(biāo)記它的內(nèi)容,并用尖括號(hào)來結(jié)束;
XML和HTML的服務(wù)目標(biāo)是不同的:XML文檔中的標(biāo)簽沒有定義文字的顯示格式,而是解釋了文本的意思。它是一個(gè)可擴(kuò)展的標(biāo)記語言,他可以定制一些新的標(biāo)簽來寫你自己需要的文檔。
有幾個(gè)要注意的地方:
1、XML區(qū)分大小寫(大小寫敏感)
2、又開始的標(biāo)簽必須有結(jié)束(標(biāo)簽必須是一對(duì))要么就這么寫:<servlet/>,用來代替一對(duì)的符號(hào)
3、嵌套的元素不可以重疊!例如這樣寫就是非法的<outside><inside></outside></inside>
4、所有數(shù)值必須加上單引號(hào)或者雙引號(hào)
配置描述符:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
<servlet>
<servlet-name>
hi
</servlet-name>
<servlet-class>
HelloWorld
</servlet-class>
</servlet>
</web-app>
web-app標(biāo)簽表示這些是用來配置一個(gè)web應(yīng)用程序的,servletname是一個(gè)你所寫的servlet的名字,class是他的類名,可以寫成所屬包名+類名的形式,有些IDE可以自動(dòng)的生成。
servlet映射
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
<servlet>
<servlet-name>
hi
</servlet-name>
<servlet-class>
HelloWorld
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>
hi
</servlet-name>
<url-pattern>
/hello.html
</url-patter>
</servlet-mapping>
</web-app>
servlet-mapping表示他來標(biāo)示servlet的映射信息,映射過后我們就可以用自己定義的地址來訪問他;
其中有兩個(gè)子標(biāo)簽,一個(gè)是name,另一個(gè)是url-pattern。第一個(gè)不用說就是servlet里面定義的那個(gè)name;
url-pattern指的是上面那個(gè)servlet-name所指定的servlet可以在瀏覽器中用什么樣的url訪問。
設(shè)置有幾種:
明確映射,就是一個(gè)地址,跟普通的相對(duì)路徑?jīng)]有什么區(qū)別。
路徑前綴映射,/lite/*這樣子的url-pattern
就是以/開頭,/*結(jié)尾,處理所有擁有該前綴的請(qǐng)求。這種映射機(jī)制,允許一個(gè)servlet來控制一個(gè)虛擬目錄層次的sevlet請(qǐng)求。
擴(kuò)展名映像:
*.jsp
可以表示這個(gè)servlet用來處理所有的JSP請(qǐng)求。
默認(rèn)映射,/
如果沒有與之相匹配的servlet可以處理該請(qǐng)求,則將這個(gè)請(qǐng)求扔給這個(gè)servlet,等同于/*,要慎用!