配置tomcat讓shtml巢狀檔案顯示

2021-08-27 07:02:08 字數 1595 閱讀 6937

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

例如:[color=red][/color](這個不是注釋,shtml匯入標籤就是這麼寫的)。

如果直接這樣子使用,tomcat是無法解析的。還需要在tomcat中做兩下簡單的配置:

第一:在 tomcat/conf/context.xml 中加上 privileged="true" ,表示享有特權的,

第二:在 tomcat/conf/web.xml中 關於name=「ssi」的servlet 配置取消掉注釋,包括該servlet的對映配置。

備註:23-30行需要手動新增,不然在顯示的頁面中會亂碼。

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

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

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

tomcat裡面

記得最前面不要加/參看原始碼就知道了,會報錯的。nonvirtualpath就是你設定的路徑

if (nonvirtualpath.startswith("/") || nonvirtualpath.startswith("\\"))

if (nonvirtualpath.indexof("../") >= 0)

示例如tomcat所在路徑為c:/tomcat

其中***x為工程名字

virtual的配置為

file 的話只能是本目錄下面的檔案,如存在別的目錄下的話,貌似不行

最起碼我不會~

include file 與include virtual的區別

1。#include file 包含檔案的相對路徑,#include virtual包含檔案的虛擬路徑。

2。在同乙個虛擬目錄內,和效果是相同的,但假設虛擬目錄名為myweb,則也可以通過除錯,但我們知道是絕對要報錯的。

3。如果乙個站點下有2個虛擬目錄myweb1和 myweb2,myweb1下有檔案file1.asp,myweb2下有檔案file2.asp,如果file1.asp要呼叫file2.asp,那麼在file1.asp中要這樣寫:,在這種情況下用#include file是無法實現的,用必然報錯。相反,在myweb2的檔案中包含myweb1中的檔案也是一樣。如果該被包含檔案在某個資料夾下面,只要在虛擬路徑中加上該資料夾即可。

4。不論用#include file 還是 #include virtual,在路徑中用「/」還是「\」或者二者交叉使用都不會影響編譯效果,程式會順利執行。

5。以上情況不適用於2個站點檔案的相互呼叫,而且在同乙個站點內,和等效,但假設站點名為website,使用是錯誤的。

配置tomcat讓shtml巢狀檔案顯示

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

配置tomcat 支援shtml解析

1 修改tomcat目錄下的web.xml servlet配置 在這個web.xml檔案裡面,找到以下注釋 段,將注釋 段去掉 servlet配置 filter配置 filter的相關配置 只是filter配置裡面還需要取消另外乙個注釋,下邊的mime type的伺服器支援相關注釋 3,支援中文 解...

使用tomcat發布含有shtml檔案的web程式

平常都是使用html或jsp,當匯入含有shtml的乙個web專案時,向平常一樣使用jetty執行,訪問到shtml檔案時,直接在瀏覽器上顯示出了原始碼。查詢,使用tomcat發布,修改tomcat的一些配置可以正常訪問shtml檔案。注意 在shtml檔案中 表示的是匯入,不是注釋資訊 發布的配置...