在 Tomcat 中發布 Web 應用,除了預設 webapps 目錄,常需將任意本地目錄掛載為虛擬目錄並賦予 Servlet 執行權限。本文說明 server.xml <Context> 設定與最小 web.xml 配置。
編輯 %TOMCAT_HOME%\conf\server.xml,在 <Host> 內新增:
<Context path="/myapp"
docBase="D:/projects/myapp"
reloadable="true"
crossContext="true"
debug="0" />
path:URL 路徑前綴 (如 https://localhost:8080/myapp/...)docBase:本地實體目錄 (JSP/HTML/資源檔放這裡)reloadable:類別變更自動重載 (開發階段建議 true)虛擬目錄預設無 Servlet 支援,需在 docBase\WEB-INF\web.xml 設定:
<web-app>
<display-name>MyWebApp</display-name>
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
</web-app>
invoker:Tomcat 內建 Servlet,對應 org.apache.catalina.servlets.InvokerServleturl-pattern:/servlet/* 表示 https://host:port/myapp/servlet/YourServletD:/projects/myapp/
index.jsp
WEB-INF/
web.xml
classes/
YourServlet.class
lib/ # 專屬 JAR
https://localhost:8080/myapp/index.jsp → JSP 正常https://localhost:8080/myapp/servlet/YourServlet → Servlet 執行web.xml 明確定義 <servlet> + <servlet-mapping>,避免使用 /servlet/*crossContext="true" 允許跨 Context 呼叫 getContext(),謹慎啟用path 唯一掌握 <Context> 與最小 web.xml,即可靈活部署多獨立 Web 模組於單一 Tomcat 實例。