tomcat對請求路徑的匹配過程(原創)


1.匹配服務

如果有兩個應用,一個應用只能通過80端口訪問,另一個應用只能通過8080端口訪問,這種情況下,可以分開兩個服務,然后分別創建80端口和8080端口的連接器。

 

2.匹配主機

一個服務下配置一個引擎,一個引擎下可以配置多個主機,通過請求路徑的域名匹配主機名稱,如果未匹到,則使用默認的主機,默認主機由引擎的屬性defaultHost配置。

 

3.匹配上下文(應用)

一個主機下可以配置多個上下文,通過URI匹配上下文的路徑,如果未匹配到,則匹配失敗。

 

4.選用版本

其實一個主機下可以配置相同路徑的上下文,但需要版本不同。匹配到上下文后,會優先選用最新版本的,版本是按字典排序后,以最后一個為最新版。

所以舊版一般是不會被用到的,當需要在不停止運行tomcat的情況下,進行新版替換舊版。 這時候,新版通過自動部署方式,加入tomcat,舊版仍然處理請求,不影響客戶端繼續操作。

如果請求所保持的Session仍存活於舊版本,則繼續使用舊版。如果請求未在舊版注冊過Session,則使用新版處理。

 

5.匹配Servlet

一個Servlet可以配置多個映射模式,通過上下文URI匹配映射模式,映射模式有四類,分別是完全路徑匹配,路徑匹配,擴展名匹配和默認模式。如果前三類未匹配到,則直接使用默認模式的Servlet。

在全局web配置中,就可以發現有默認配置的Servlet:

<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>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

另外,配置里面還有JSP servlet:

    <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.jsp</url-pattern>
        <url-pattern>*.jspx</url-pattern>
    </servlet-mapping>

 

6.匹配資源

所以,不管需要獲取什么資源,必須先匹配到Servlet,然后再由Servlet返回資源。

tomcat是采用虛擬資源映射,可以由多個物理資源映射到同一個虛擬資源,由多個虛擬資源映射到同一個物理資源。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM