2

我创建了一个简单的 HTML,其中包含以下表单:

<form action="WEB-INF/cgi/run.pl" method="post">
      <table border="0" cellspacing="0"> 

      <tbody>
      <tr><th align="center" bgcolor="F7F5F2"> <p class="normal">Submission Form</p> </th></tr>

      <tr><td align="center" bgcolor="F7F5F2"> <p class="normal">Insert your text below:</p> </td></tr>
      <tr><td><textarea wrap="virtual" name="seq_data" rows="15" cols="80"></textarea></td></tr>  
    </tbody></table>
    or upload a file :   <input type="file" name="file" size="29" border="0"><br><br>
    <input class="normalc" value="Submit Query" type="submit">
    <input class="normalc" value="Clear Form" type="reset"><p></p>
</form>

我需要将表单中的数据作为输入传递给 perl 脚本 (run.pl)。

在搜索互联网时,我读到:1)我需要通过 apache tomcat 测试我的网站。我已经安装了 apache 7.0 版并通过从这个 servlet 周围删除 XML 注释来修改 Tomcat 7.0/conf/web.xml 文件:

<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>listings</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

我还创建了放置 perl 脚本的目录“WEB-INF/cgi”。

2) 我需要修改我的 Perl 脚本,但我找不到我应该添加什么才能将数据从 html 表单传递到我的脚本。

不知道除了修改Tomcat和Perl脚本还有没有其他必要的步骤。我已经阅读了许多相关主题,但仍然找不到分步指南。请帮忙。

4

2 回答 2

5

当 Web 服务器接收到 HTTP 请求时,它通常会以资源的内容进行响应。但是,如果 URL 指定了通用网关接口(CGI) 资源,它将运行它并返回程序的输出。

服务器的配置指定 CGI 和非 CGI 资源之间的区别,这可以基于文件扩展名 -.cgi.pl- 或文件在服务器目录结构中的位置。

服务器通过其 STDIN 以及进程的环境变量将 HTTP 请求中的信息传递给 CGI 程序。通常,请求的参数PUTPOST出现在 STDIN 中,而请求的参数将GET插入环境变量中。

该程序的工作是根据这些参数构建所需的响应并将它们打印到 STDOUT。它还可以利用数据库信息和其他系统信息。服务器将使用此输出作为 HTTP 响应的内容。

您应该查看Perl CGI module在方便的子例程中包装此接口的哪个。

于 2012-08-06T00:09:57.720 回答
2

应用程序.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title>
    Application| Form
  </title>
  <style>
  input
  {
    display:block;
  }
  </style>
</head>
  <body>
    <form action="evaluate.pl" method="post" enctype="multipart/form-data">
      <input type="file" name="photo">
      <input type="file" name="photo">
      <input type="text" name="email_id" placeholder="email id">
      <input type="submit" value="submit">
    </form>
  </body>
</html>

评估.pl

#!C:/wamp/bin/perl/bin/perl.exe
#Purpose: To find the number of photos uploaded

use CGI;
use strict;
my $cgi = new CGI;

print "Content-Type:text/html\r\n\r\n";

my $param = $cgi->{param};

foreach( keys(%{$param}) ){
  print $_," -> ",$param->{$_};
  print "<br/>";
}

如果你不知道如何在 perl 中从数组中读取值,你可以问我,但首先尝试理解我发布的这个示例,然后我会帮助你。

于 2012-08-09T20:07:31.943 回答