854人阅读 评论(1) 收藏 举报
1、修改conf/web.xml
找到并将cgi的servlet和servlet-mapping的注释去掉
[xhtml:nogutter] view plain copy print ?
  1. <servlet>  
  2.         <servlet-name>cgi</servlet-name>  
  3.         <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>  
  4.         <init-param>  
  5.           <param-name>debug</param-name>  
  6.           <param-value>0</param-value>  
  7.         </init-param>  
  8.         <init-param>  
  9.           <param-name>cgiPathPrefix</param-name>  
  10.           <param-value>cgi-bin</param-value>  
  11.         </init-param>  
  12.          <load-on-startup>5</load-on-startup>  
  13.     </servlet>  
<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>cgi-bin</param-value> </init-param> <load-on-startup>5</load-on-startup> </servlet>
注意:其中cgiPathPrefix是cgi文件的存放路径,默认是WEB-INF/cgi,我为了方面用awstats,所以改成cgi-bin
[xhtml:nogutter] view plain copy print ?
  1. <servlet-mapping>  
  2.         <servlet-name>cgi</servlet-name>  
  3.         <url-pattern>/cgi-bin/*</url-pattern>  
  4. </servlet-mapping>  
<servlet-mapping> <servlet-name>cgi</servlet-name> <url-pattern>/cgi-bin/*</url-pattern> </servlet-mapping>
/cgi-bin/*意思是,访问cgi文件的默认地址为cgi-bin/*
 
2、修改conf/context.xml
[xhtml:nogutter] view plain copy print ?
  1. <?xml version='1.0' encoding='utf-8'?>  
  2. <Context privileged="true">  
  3.   
  4.     <!-- Default set of monitored resources -->  
  5.     <WatchedResource>WEB-INF/web.xml</WatchedResource>  
  6.       
  7.     <!-- Uncomment this to disable session persistence across Tomcat restarts -->  
  8.     <!-- 
  9.     <Manager pathname="" /> 
  10.     -->  
  11.   
  12.     <!-- Uncomment this to enable Comet connection tacking (provides events  
  13.          on session expiration as well as webapp lifecycle) -->  
  14.     <!-- 
  15.     <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" /> 
  16.     -->  
  17.   
  18. </Context>  
<?xml version='1.0' encoding='utf-8'?> <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>
修改<Context>添加privileged="true"属性,否则页面提示Servlet CGI is not availabled,且tomcat会有错误提示java.lang.SecurityException: Restricted classclass org.apache.catalina.servlets.CGIServlet
 
3、如果tomcat的版本是6以下的,必须将 server/lib/目录下的servlets-cgi.renametojar改名为servlets-cgi.jar
 
有以上三步,已经可以成功配置CGI了,访问地址如http://localhost:8080/cgi-bin/test.pl