我创建了一个简单的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>
我还创建了目录“WEB-INF / cgi”,其中我放置了perl脚本。
2)我需要修改我的Perl脚本,但是我无法找到我应该添加的内容,以便将数据从html表单传递到我的脚本。
我不知道除了修改Tomcat和Perl脚本之外是否还有其他必要的步骤。 我已经阅读了很多相关的主题,但我还是找不到一步一步的指南。请帮忙。
答案 0 :(得分:4)
当Web服务器收到HTTP请求时,它通常会响应资源的内容。但是,如果URL指定了Common Gateway Interface(CGI)资源,它将运行它并返回程序的输出。
服务器的配置指定了CGI和非CGI资源之间的区别,这可以基于文件扩展名 - .cgi
,.pl
等 - 或者文件所在的位置服务器的目录结构。
服务器通过其STDIN以及进程的环境变量将HTTP请求中的信息传递给CGI程序。通常,PUT
或POST
请求的参数将显示在STDIN中,而GET
请求的参数将插入到环境变量中。
该程序的工作是根据这些参数构建所需的响应并将其打印到STDOUT。它还可以利用数据库信息和其他系统信息。此输出将由服务器用作HTTP响应的内容。
您应该查看在方便的子例程中包装此接口的Perl CGI module
。
答案 1 :(得分:2)
<强> application.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>
<强> evaluate.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中的数组读取值,但首先尝试理解我发布的这个示例,然后我会帮助您。