1、在Tomcat的CATALINA_BASE/conf/web.xml 文件中,把关于<servlet-name> CGI的那段的注释去掉。去掉注释后的代码部分类似下面:
<servlet>
<servlet-name>cgi</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>clientInputTimeout</param-name>
<param-value>100</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>6</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/cgi-bin</param-value>
</init-param>
<init-param>
<param-name>executable</param-name>
<param-value>cmd /c </param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
其 中cgiPathPrefix与cgi的存放目录有关系,excutable与cgi的语言有关系,Tomcat默认的cgi语言为perl,因此上面的 代码中一定要含有
<init-param>
<param-name>executable</param-name>
<param-value>cmd /c </param-value>
</init-param>
这段代码来表示cgi语言为c语言。
2. 同样,在Tomcat的CATALINA_BASE/conf/web.xml文件中,把关于对CGI进行映射的那段的注释去掉注意,这段内容指定了 HTML链接到CGI脚本的访问方式。
去掉注释后的代码类似:
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>
注意:这里<url-pattern>的内容中的/cgi-bin/指定 了浏览器访问的地址,与前面的<param-value>的内容/WEB-INF/cgi-bin对应。
3、配置权限
在conf/context
<Context privileged="true">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
<!-- Uncomment this to enable Comet connection tacking (provides events
on session expiration as well as webapp lifecycle) -->
<!--
<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
-->
</Context>
4、创建cgitest4.cpp
5、生成 cgitest4.exe,并在WEB-INF下创建目录cgi,将cgitest4.exe放置其中
6、浏览器通过 http://localhost:8080/yourweb/cgi-bin/cgitest4.exe即可访问
8080为服务器端口,更改为自己的,yourweb也改成自己的网站目录
cgitest4.cpp
#include "stdio.h"
#include "stdafx.h"
void main()
{
FILE* f = fopen("bbb.txt","w");
fprintf(f,"hello world");
fclose(f);
printf("content-type:text/html;/r/n/r/n");
printf("<html><body>hello world</body></html>");
}