之前,我知道tomcat可以直接解析shtml檔案,在浏覽器中顯示效果來,後來由于需求發生改變,比如說 在做靜态化生成的時候一個網站的頭部和底部都是一樣的,如果每個頁面都生成一次,顯然很浪費時間,所有我們可以把 這個共同的頭部 和底部挖出來單獨生成,然後通過shtml嵌套顯示,就可以了。可是怎麼導入靜态頭部和底部呢??有好的标簽嗎??有 shtml中有include标簽導入外部檔案顯示。
例如:<!--#include virtual="${ctx}/web/header.html"-->(這個不是注釋,shtml導入标簽就是這麼寫的)。
如果直接這樣子使用,tomcat是無法解析的。還需要在tomcat中做兩下簡單的配置:
第一:在 tomcat/conf/context.xml 中加上 privileged="true" ,表示享有特權的,
第二:在 tomcat/conf/web.xml中 關于name=“ssi”的servlet 配置取消掉注釋,包括該servlet的映射配置。
如下:
<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>
<param-name>debug</param-name>
<param-value>0</param-value>
<param-name>expires</param-name>
<param-value>666</param-value>
<param-name>isVirtualWebappRelative</param-name>
<!--- <span style="color:#FF0000;">這裡需要手動添加</span> -->
<param-name>inputEncoding</param-name>
<param-value>UTF-8</param-value>
<param-name>outputEncoding</param-name>
<load-on-startup>4</load-on-startup>
</servlet>
<servlet-mapping>
<url-pattern>*.shtml</url-pattern>
</servlet-mapping>
<a target="_blank"></a>
備注:紅色部分需要手動添加,不然在顯示的頁面中會亂碼。