tomcat配置perl及exe的cgi...
时间:2010-08-04 来源:debbykindom
1. 修改Tomcat安装目录的conf文件夹下的web.xml文件,将下面这两段Uncomment出来。
<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>executable</param-name> <param-value>cmd /c</param-value> </init-param> --> <init-param> <param-name>executable</param-name> <param-value>D:\StrawberryPerl\perl\bin\perl.exe</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>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>
注释的<init-param>段用于配置访问exe的cgi,默认是访问perl脚本,当然必须先安装有Perl,本例的Perl安装在D:\StrawberryPerl\perl。
非常简单,就这样了。不过需注意需要指明你的Perl安装路径,虽然文档说默认就支持perl,不过我将Perl安装路径加入path环境变量再把这个
executable <init-param>段注释掉后就不起作用了。
之后,你就可以在你的web应用的WEB-INF目录下新建一个cgi-bin目录在把你的perl脚本或exe程序放进去就可以了。访问时输入的格式示例如:
http://localhost/MyWebApp/cgi-bin/sayhello.pl
sayhello.pl
#!/usr/bin/perl use strict; use warnings; ### #本文件采用UTF-8编码保存,输出时须指定UTF-8编码 ### # 不会再网页上输出 print "Hello, world"; print " content-type: text/html\n\n"; print " <html> \n "; print " <head> \n "; print " <title> Tomcat Perl cgi Test! </title> \n "; # 必须设置输出编码,否则中文会出现乱码 print " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"> \n "; print " </head> \n "; print " <body bgcolor=\"#ffffff\"> \n "; my $now = localtime(); print " <p>Encoding with utf-8</p> "; print " <h1>当前时间The current time is: $now</h1> \n "; print " </body> \n "; print " </html> \n ";
注意,文件保存的编码方式需要和传送到客户的编码方式一致。如sayhello.pl保存的编码方式为utf-8,在客户端呈现html时编码方式也为utf-8:
print " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"> \n ";