CGI的定义是:外部应用程序与Web服务器之间的接口。

1.Tomcat7支持CGI,但是默认配置是关闭的需要进行如下配置

修改Tomcat conf/web.xml中两处代码,默认是注释掉的,去掉注释即可

 <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>D:/Dev/python/Python36/python.exe</param-value>
</init-param>
<init-param>
<param-name>passShellEnvironment</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
 <servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>

2.修改Tomcat conf/context.xml

在标签<Context>中添加属性 privileged = "true" ,此时,Tomcat才允许web应用使用容器内的Servlet

 <Context privileged="true">

3.运行CGI程序

当一个CGI请求到达Tomcat时,CGIServlet会对其进行拦截,请求的格式为 http://.../cgi-bin/xxxx,然后CGIServlet会到相应的项目的WEB-INF/cgi目录下调用相应的CGI文件处理请求

4.测试

目录结构:

python_cgi

  |---WEB-INF

       |---cgi

           |---hello.py

hello.py内容:

 print ("Content-type:text/html")
print () # 空行,告诉服务器结束头部
print ('<html>')
print ('<head>')
print ('<meta charset="GBK">')
print ('<title>Hello Word - 我的第一个 CGI 程序!</title>')
print ('</head>')
print ('<body>')
print ('<h2>Hello Word! 我是一个CGI程序</h2>')
print ('</body>')
print ('</html>')

在浏览器中输入:http://localhost:8080/python_cgi/cgi-bin/hello.py

输出结果:

Hello Word! 我是一个CGI程序

最新文章

  1. C# 控制台或者winform程序开启http的监听状态
  2. ASP.NET访问Excel 失败的解决方法(错误号:80070005,8000401a)
  3. jmeter性能测试实战-web登录测试
  4. [原创]java WEB学习笔记62:Struts2学习之路--表单标签:form,表单标签的属性,textfield, password, hidden,submit ,textarea ,checkbox ,list, listKey 和 listValue 属性,select ,optiongroup ,checkboxlist
  5. C语言实现memcpy和memmove
  6. 修复duilib库UISlider控件的4个bug
  7. OC3_MyRect
  8. CI 笔记 easyui 结合后,左侧导航跳转问题
  9. 数据库 sql 表连接
  10. http://codeforces.com/contest/535/problem/C
  11. Android开发更新UI的几种方式
  12. 用 opencv和numpy进行图片和字符串互转,并保存至 json
  13. python实现三级菜单间的前后跳转
  14. ubuntu如何安装或更换内核
  15. eclipse启动时 failed to create the java virtual machine 解决办法
  16. LeetCode 883 Projection Area of 3D Shapes 解题报告
  17. 用一句SQL查询相对复杂的统计报表
  18. bzoj1864 三色二叉树
  19. abp+angular+bootstrap-table的使用
  20. AGC019

热门文章

  1. 题目1162:I Wanna Go Home(最短路径问题进阶dijkstra算法))
  2. 九度OJ小结
  3. CF510B Fox And Two Dots(搜索图形环)
  4. 熟悉使用ConfigParser库读写配置文件
  5. sonarqube插件开发(二) 开发插件
  6. 【咸鱼教程】TextureMerger1.6.6 二:Sprite Sheet的制作和使用
  7. iOS开发过程中使用Core Data应避免的十个错误
  8. php---进行RSA进行非对称加密
  9. Thinkphp---自定义服务类!
  10. C++和Java中的静态Static用法