2011年5月29日 星期日

Tomcat 7中設立目錄列表和錯誤處理頁面

如果你在瀏覽器輸入一個網址
例如http://localhost:8081/Apple/
你並沒有再指定任何特定的資源名稱
例如一個servelt url pattern
或真實檔名的jsp, html, jpg等
那這時web container會如何反應?

答案是會先找有無welcome-file-list
再找有無開放directory listings
如果以上兩者都沒有
瀏覽器會顯示HTTP Status 404

這兩個設定值
都可以在下列檔案進行設定:
Tomcat 7的安裝目錄/conf/web.xml
該檔定義了該Tomcat安裝版本底下
所有web應用程式共用的初始參數

1.welcome-file-list
在該檔中, 尋找下列標籤
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
這是預設的歡迎頁面
只要在各應用程式的根目錄中
有這些檔案
則在沒有特別指定資源名稱的情況下
就會導到這些指定的歡迎頁面

如果, 你又在應用程式自己的WEB-INF/web.xml中
再次設定了welcome-file-list
則就會置換掉Tomcat 7的安裝目錄/conf/web.xml
裡面指定的welcome-file-list版本

2.directory listing
在該檔中
尋找下列標籤
    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
這是一隻"預設"(名稱是default ^_^)的servlet
可以讓web container列出目錄下的所有檔案
如下圖所示















不過, 不建議這樣做
原因如下:
1.會浪費server資源去產生這份list
2.應用程式中可能有些機敏資料, 你不想被看光光, 並被直接存取.

--
如果瀏覽器指定了url卻沒有指定資源名稱
並且沒有設定welcome-file-list
也沒有開放directory listing
那就只能義無反顧地顯示HTTP Status 404了

上圖為Tomcat的預設404畫面
其實我們可以加以客製化
透露出更多的訊息

只要在應用程式的WEB-INF/web.xml中
加入以下標籤
<error-page>
<error-code>404</error-code>
<location>/NotFound.html</location>
</error-page>
就可以指定發生HTTP 404時
web container要回傳的頁面
可以是html也可以是jsp
上例中/NotFound.html是說
請在該應用程式的根目錄底下
尋找NotFound.html這檔案
根據網路上的資料
斜線 / 不可缺少

網路上搜尋到這個網站
裡面就有一些有趣的客製化HTTP 404網頁
還教你如何製作出一個好的HTTP 404頁面
並且還引當你遇到404頁面時
應該如何做, 才能找到你想要的東西
很值得一看哦!!







沒有留言:

張貼留言