您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關WelcomeFile實現分析是怎樣的,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
在Web應用中,我們經常會發送類似如下格式的請求:
host:port/context/dir/
當然,上面到dir這一層的有時候會帶,有時候則是直接請求根應用。這個時候,應用服務器就需要判斷對應的請求以哪種形式 進行展現,例如對于一個目錄的請求,這個時候,如果目錄下包含特定的某個頁面,那這個時候可能是要請求頁面,也可能是 想進行目錄的list操作。
這個時候,就需要用到Web應用中的 Welcome File
關于 Welcome File , Servlet規范中指明,它是在web描述文件中指定部分請求路徑的一個有序的列表。主要用于 在請求指向一個directory entry
,且沒和任何的Web組件有關聯的時候,進行append,從而決定具體請求的地址。
例如我們上面的請求形式,如果此時dir并沒有對應到任何一個Servlet或Jsp上,此時有類似index.html這種welcomeFile的配置, 就會幫助請求進行定向。
如果上面的請求沒有對應到的WelcomeFile,此時會根據應用服務器的配置,進行請求目錄的列表(如果該操作是設為允許的話,可以查看之前關于List的文章Tomcat是如何響應靜態資源的?),或者直接 返回404.
在應用中配置WelcomeFile也很簡單,只需要在web.xml中直接指定即可,格式如下,來自規范中的描述:
假設我們在應用中指定了如下形式的welcomeFile
<welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>default.jsp</welcome-file></welcome-file-list>
如果應用目錄結構包含如下dir /test/index.html /test/a.jsp /hello/x.jsp /hello/default.jsp
此時,我們請求到應用的test目錄時,就會被指向index.html。請求hello會被指向default.jsp
再來看下,在Tomcat中對應WelcomeFile的實現方式。
我們在web.xml這個描述文件中配置的內容,都會在應用部署時進行解析,配置應用。welcome-file-list也不例外。 在應用內指定的會是第一優先級。應用中沒有顯式的指定,就會使用應用服務器默認提供的conf/web.xml中的配置。
web.xml中的配置,會被保存到一個Set中
在部署的時候,添加到StandardContext中
后續,在接收到請求的時候,就需要判斷具體的請求路徑和welcomeFile的配置。
我們前面的文章里寫過幾次請求,也寫過虛擬主機
如何不配置應用名訪問應用?
Facade模式與請求處理
Tomcat多虛擬主機配置及原理
這其中都提到了一個叫Mapper的組件。人如其名,它就是為我們做指引的。在請求過程中,基本是按照這樣一個流程:
EndPoint -> Processor -> CoyoteAdapter -> Mapper -> Pipeline -> Valve ...
這里Mapper在我們前面的文章中寫過,會根據已經注冊的虛擬主機,應用進行請求判斷。對于本次文章提到的welcome,則是在判斷后的流程中處理
判斷中按照不同的匹配規則從前到后進行:
Exact Match
Prefix Match
Extension Match
Welcome resources processing for servlets
Welcome resources processing for exact macth
Welcome resources processing for prefix match
Welcome resources processing for physical folder
Default servlet
以上我邏輯,基本都是根據請求的路徑,進行不同的match,比較重要的一點是這里:
如我們前面提到的,會在使用welcomeFile進行請求判斷的時候,把它append到當前請求路徑之后進行。
上述就是小編為大家分享的WelcomeFile實現分析是怎樣的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。