1. 程式人生 > >配置tomcat讓shtml巢狀檔案顯示

配置tomcat讓shtml巢狀檔案顯示

之前,我知道tomcat可以直接解析shtml檔案,在瀏覽器中顯示效果來,後來由於需求發生改變,比如說 在做靜態化生成的時候一個網站的頭部和底部都是一樣的,如果每個頁面都生成一次,顯然很浪費時間,所有我們可以把 這個共同的頭部 和底部挖出來單獨生成,然後通過shtml巢狀顯示,就可以了。可是怎麼匯入靜態頭部和底部呢??有好的標籤嗎??有 shtml中有include標籤匯入外部檔案顯示。

例如:(這個不是註釋,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>  
        <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>  
       <!--- <span style="color:#FF0000;">這裡需要手動新增</span> -->  
        <init-param>  
          <param-name>inputEncoding</param-name>  
          <param-value>UTF-8</param-value>  
        </init-param>  
        <init-param>  
          <param-name>outputEncoding</param-name>  
          <param-value>UTF-8</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> 

備註:紅色部分需要手動新增,不然在顯示的頁面中會亂碼。

基本上這樣子配置之後tomcat就回幫你解析shtml的include標籤了。感覺還是蠻方便,蠻強大的。

另外:

匯入的檔案可以不是完整的頁面,就是說可以不用包含html標籤,直接寫幾個div什麼的也是可以的。

如果在頁面上報錯: [an error occurred while processing this directive] 是因為匯入的檔案不存在引發的。