Tomcat 根據 org.apache.tomcat.util.http.mapper.Mapper 實現 Servlet 映射規則,優先級從高到低:
/exact.do → exactWrappers/*、/test/* → wildcardWrappers*.do、*.jsp → extensionWrapperswelcome-file-list → welcomeResources/ → defaultWrapperMapper.internalMapWrapper() 依次嘗試上述規則,mappingData.wrapper 非空即停止。
<servlet-mapping>
<servlet-name>ExactServlet</servlet-name>
<url-pattern>/exact.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>TestAllServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
/exact.do → ExactServlet(規則 1)/test.do → TestAllServlet(規則 2,/*)/index.jsp → TestAllServlet(規則 2 優先於規則 3 的 *.jsp)/ → 歡迎頁面列表(規則 4)或默認 Servlet(規則 5)DispatcherServlet 映射 /* 會攔截 .jsp、靜態資源 → 需配置 <mvc:default-servlet-handler/> 或改用 // 優先級低於 *.jsp,JSP 正常渲染;/* 優先級高於 *.jsp,JSP 被攔截映射優先級:**精確 > 前綴 > 擴展 > 歡迎頁 > 默認**。源碼閱讀是理解容器行為的唯一可靠途徑。