CGI(通用网关接口)定义了一种 Web 服务器与外部内容生成程序的交互方式,这里所说的外部内容生成程序通常被称为 CGI 程序或 CGI 脚本。
当你使用 Tomcat 做为 HTTP 服务器,并且需要 CGI 支持时,可以在 Tomcat 中添加 CGI 支持。Tomcat 的 CGI 支持很大程度上能够跟 Apache 的httpd's 相兼容,但也存在一些局限(比如只有一个 cgi-bin 目录)。
CGI 支持是通过 servlet 类 org.apache.catalina.servlets.CGIServlet
来实现的。一般而言,该 servlet 与 URL 模式“/cgi-bin/*” 相对应。
Tomcat 默认不支持 CGI。
警告:CGI 脚本用于执行 Tomcat JVM 外部的程序。如果使用 Java 的 SecurityManager,则它将绕过
catalina.policy
中配置的安全策略。
为了启用 CGI 支持:
在默认的 $CATALINA_BASE/conf/web.xml
文件中,存在被注释掉的用于 CGI servlet 的范例 servlet 及 servlet-mapping 元素。在 Web 应用中启用 CGI 支持,需要将 servlet 和 servlet-mapping 声明都复制到 Web 应用的WEB-INF/web.xml
文件中。
在 Web 应用中的 Context 元素中设置 privileged="true"
。
只有享有特权的上下文才能被允许使用 CGI servlet。注意,修改全局$CATALINA_BASE/conf/context.xml
文件会影响所有的 Web 应用。
下面是用来配置 CGI servlet 行为的一些 Servlet 初始参数:
WEB-INF/cgi
。
0
。
perl
,即默认是 perl 脚本。
executable
的其他参数。它们位于 CGI 脚本名称之前。默认不存在其他额外参数。
System.getProperty("file.encoding","UTF-8")
。首选系统默认编码,如果系统属性不可用,则采用 UTF-8 编码。
false
。
2000
。