Tomcat 內建支援 SSI (`.shtml`),可在靜態頁面嵌入動態片段 (導航欄、頁腳、計數器等),無需完整 JSP/Servlet 開銷。本文涵蓋 Servlet/Filter 兩種啟用方式、參數配置、指令語法與安全限制。
<servlet>
<servlet-name>ssi</servlet-name>
<servlet-class>org.apache.catalina.ssi.SSIServlet</servlet-class>
<init-param><param-name>buffered</param-name><param-value>1</param-value></init-param>
<init-param><param-name>debug</param-name><param-value>0</param-value></init-param>
<init-param><param-name>expires</param-name><param-value>666</param-value></init-param>
<init-param><param-name>isVirtualWebappRelative</param-name><param-value>0</param-value></init-param>
<load-on-startup>4</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ssi</servlet-name>
<url-pattern>*.shtml</url-pattern>
</servlet-mapping>
<filter>
<filter-name>ssi</filter-name>
<filter-class>org.apache.catalina.ssi.SSIFilter</filter-class>
<init-param><param-name>contentType</param-name><param-value>text/x-server-parsed-html(;.*)?</param-value></init-param>
<init-param><param-name>debug</param-name><param-value>0</param-value></init-param>
</filter>
<filter-mapping>
<filter-name>ssi</filter-name>
<url-pattern>*.shtml</url-pattern>
</filter-mapping>
| 參數 | 預設 | 說明 |
|---|---|---|
| buffered | 0 | 1=緩衝輸出再發送,0=直接流式 |
| debug | 0 | 日誌級別 (0-99) |
| expires | -1 | SSI include 快取秒數,-1=每請求重解析 |
| isVirtualWebappRelative | 0 | 1=虛擬目錄相對路徑,0=Server 根相對 |
| inputEncoding | 平台預設 | 外部 include 資源輸入編碼 |
| outputEncoding | UTF-8 | 輸出編碼 |
<!--#config timefmt="%Y-%m-%d" --> 設定時間格式
<!--#echo var="DATE_LOCAL" --> 輸出變數
<!--#include virtual="/common/header.html" --> 包含檔案 (virtual=WebApp 相對, file=檔案系統相對)
<!--#flastmod virtual="/foo.html" --> 檔案最後修改時間
<!--#fsize virtual="/foo.html" --> 檔案大小
<!--#printenv --> 列印所有環境變數
<!--#set var="name" value="value" --> 設定變數
<!--#if expr="$var = 'value'" -->...<!--#endif --> 條件判斷
privileged="true" 的 Context 可用 SSI** (防止惡意 WebApp 存取容器內部 Servlet)。Context 配置:<Context privileged="true" ...> (在 server.xml 或 META-INF/context.xml)。SecurityException: Filter ... is privileged → 確認 Context 權限。catalina.policy 授權 SSI Servlet/Filter 權限。