CGI编程--Tomcat下运行c++程序
2016-08-31 21:16
531 查看
我是一个地道的Java程序员,但最近领导给指派了个c++的开发任务,开发一个c++版的单点登录的CAS客户端。虽然一点没学过c++,但也只能硬着头皮上。
CGI编程,简单的说是公共网关接口,定义了信息是如何在 Web 服务器和客户端脚本之间进行交换的。具体的内容可以自行百度,这里不做赘述,这篇文章主要讲一下怎么在Tomcat下运行C++程序。
第一步,配置Tomcat。
我使用的Tomcat是免安装版,我再Tomcat6与Tomcat7上亲测可行。
首先修改conf/web.xml
1.取消如下代码的注释:
其中,executable是需要自己加进去的,value值为空即可。本来这里应该写cmd /c 以表示用c++的方式来解释cgi脚本,但是我发现写了之后会报
花了好长时间才发现是executable的值写了才cmd /c的原因,所以改成了空,表示可以编译任何文件。
2.取消下面代码的注释:
这里的cgi表示的是c++的cgi文件的路径为WEB-INF/cgi文件夹下,/cgi-bin/*表示运行后地址栏输入的地址为:localhost:8080/项目名/cgi-bin/cgi文件。
第二步,修改conf/context.xml
将Context标签修改为
第三步,编写并编译一个c++程序
编译后生成可执行文件(如client.exe)
第四步,新建Java项目
我是在eclipse里新建了一个web项目,大家也可以直接在Tomcat的ROOT目录下直接新建。在WEB-INF下新建文件夹cgi,并将client.exe文件拷贝到cgi文件夹下,也可以将client.exe重命名为client.cgi后拷贝到cgi文件夹下。
启动Tomcat,
如果是client.exe,在地址栏输入:
http://localhost:8080/cas_cgi_client/cgi-bin/client.exe
如果是client.cgi,在地址栏输入:
http://localhost:8080/cas_cgi_client/cgi-bin/client.cgi
即可在浏览器上显示相应的内容。
CGI编程,简单的说是公共网关接口,定义了信息是如何在 Web 服务器和客户端脚本之间进行交换的。具体的内容可以自行百度,这里不做赘述,这篇文章主要讲一下怎么在Tomcat下运行C++程序。
第一步,配置Tomcat。
我使用的Tomcat是免安装版,我再Tomcat6与Tomcat7上亲测可行。
首先修改conf/web.xml
1.取消如下代码的注释:
<servlet> <servlet-name>cgi</servlet-name> <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>cgiPathPrefix</param-name> <param-value>WEB-INF/cgi</param-value> </init-param> <init-param> <param-name>executable</param-name> <param-value></param-value> </init-param> <load-on-startup>5</load-on-startup> </servlet>
其中,executable是需要自己加进去的,value值为空即可。本来这里应该写cmd /c 以表示用c++的方式来解释cgi脚本,但是我发现写了之后会报
java.io.IOException: Cannot run program "cmd /c" (in directory "D:\newWorkSpace\cas_cgi_client\WebRoot\WEB-INF\cgi"): CreateProcess error=2, ?????????
花了好长时间才发现是executable的值写了才cmd /c的原因,所以改成了空,表示可以编译任何文件。
2.取消下面代码的注释:
<servlet-mapping> <servlet-name>cgi</servlet-name> <url-pattern>/cgi-bin/*</url-pattern> </servlet-mapping>
这里的cgi表示的是c++的cgi文件的路径为WEB-INF/cgi文件夹下,/cgi-bin/*表示运行后地址栏输入的地址为:localhost:8080/项目名/cgi-bin/cgi文件。
第二步,修改conf/context.xml
将Context标签修改为
<Context privileged="true">
第三步,编写并编译一个c++程序
#include <iostream> using namespace std; int main () { cout << "Content-type:text/html\r\n\r\n"; cout << "<html>\n"; cout << "<head>\n"; cout << "<title>Hello World - 第一个 CGI 程序</title>\n"; cout << "</head>\n"; cout << "<body>\n"; cout << "<h2>Hello World! 第一个 CGI 程序</h2>\n"; cout << "</body>\n"; cout << "</html>\n"; // system("PAUSE"); return 0; }
编译后生成可执行文件(如client.exe)
第四步,新建Java项目
我是在eclipse里新建了一个web项目,大家也可以直接在Tomcat的ROOT目录下直接新建。在WEB-INF下新建文件夹cgi,并将client.exe文件拷贝到cgi文件夹下,也可以将client.exe重命名为client.cgi后拷贝到cgi文件夹下。
启动Tomcat,
如果是client.exe,在地址栏输入:
http://localhost:8080/cas_cgi_client/cgi-bin/client.exe
如果是client.cgi,在地址栏输入:
http://localhost:8080/cas_cgi_client/cgi-bin/client.cgi
即可在浏览器上显示相应的内容。
相关文章推荐
- Tomcat运行Java Web内存溢出总结
- 启动Tomcat时显示以下错误,影响系统运行吗?
- 修改Tomcat Connector运行模式,优化Tomcat运行性能
- WeX5进行微信运行时出现tomcat端口占用
- tomcat运行web项目,不能访问动态地址,也就是controller
- IntelliJ IDEA 配置Gradle运行SpringBoot Web项目(tomcat容器)
- 在电脑上找到这个路径:D:\jakarta-tomcat-6\conf\Catalina,将localhost目录直接删除掉,再一运行,就没事了! 因为配置文件中配置了启动程序,而webapps文件夹下却没有此应用程序,所以出现了上述错误。
- Tomcat中PHP运行需要root权限的shell文件
- centos配置Tomcat以指定的身份(非root)运行
- tomcat7.0.27的bio,nio.apr高级运行模式
- 1.01 eclipse上运行一个简单的html文件(Tomcat已安装)
- Tomcat 的 3中运行方式
- 解决项目部署tomcat运行 java.net.unknownhostexception异常
- 一台电脑同时运行多个tomcat配置方法
- Docker系列~搭建Tomcat和JDK运行环境(六)
- maven项目在eclipse tomcat正常运行
- 将绿色版Tomcat服务添加到系统服务并设为开机运行
- 急急急!!!Tomcat启动运行至XML validation disabled
- 多个tomcat实例运行的配置
- tomcat调优和运行机制