CGI(通用網(wǎng)關(guān)接口)定義了一種 Web 服務(wù)器與外部?jī)?nèi)容生成程序的交互方式,這里所說(shuō)的外部?jī)?nèi)容生成程序通常被稱為 CGI 程序或 CGI 腳本。
當(dāng)你使用 Tomcat 做為 HTTP 服務(wù)器,并且需要 CGI 支持時(shí),可以在 Tomcat 中添加 CGI 支持。Tomcat 的 CGI 支持很大程度上能夠跟 Apache 的httpd's 相兼容,但也存在一些局限(比如只有一個(gè) cgi-bin 目錄)。
CGI 支持是通過(guò) servlet 類(lèi) org.apache.catalina.servlets.CGIServlet
來(lái)實(shí)現(xiàn)的。一般而言,該 servlet 與 URL 模式“/cgi-bin/*” 相對(duì)應(yīng)。
Tomcat 默認(rèn)不支持 CGI。
警告:CGI 腳本用于執(zhí)行 Tomcat JVM 外部的程序。如果使用 Java 的 SecurityManager,則它將繞過(guò)
catalina.policy
中配置的安全策略。
為了啟用 CGI 支持:
在默認(rèn)的 $CATALINA_BASE/conf/web.xml
文件中,存在被注釋掉的用于 CGI servlet 的范例 servlet 及 servlet-mapping 元素。在 Web 應(yīng)用中啟用 CGI 支持,需要將 servlet 和 servlet-mapping 聲明都復(fù)制到 Web 應(yīng)用的 WEB-INF/web.xml
文件中。
在 Web 應(yīng)用中的 Context 元素中設(shè)置 privileged="true"
。
只有享有特權(quán)的上下文才能被允許使用 CGI servlet。注意,修改全局$CATALINA_BASE/conf/context.xml
文件會(huì)影響所有的 Web 應(yīng)用。查閱 Context 文檔來(lái)了解詳情。
下面是用來(lái)配置 CGI servlet 行為的一些 Servlet 初始參數(shù):
WEB-INF/cgi
。0
。perl
,即默認(rèn)是 perl 腳本。executable
的其他參數(shù)。它們位于 CGI 腳本名稱之前。默認(rèn)不存在其他額外參數(shù)。System.getProperty("file.encoding","UTF-8")
。首選系統(tǒng)默認(rèn)編碼,如果系統(tǒng)屬性不可用,則采用 UTF-8 編碼。false
。2000
。
更多建議: