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 を使用して Web サイトをテストする必要があります。Apache バージョン 7.0 をインストールし、Tomcat 7.0/conf/web.xml ファイルを変更して、このサーブレットの周囲から 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がCommon Gateway Interface(CGI)リソースを指定している場合、URLはそれを実行し、代わりにプログラムの出力を返します。

サーバーの構成は、CGIリソースと非CGIリソースの区別を指定します。これは、ファイル拡張子(など)またはファイルがサーバーのディレクトリ構造内のどこにあるかに基づくことができ.cgiます.pl

サーバーは、HTTP要求の情報をSTDINおよびプロセスの環境変数を介してCGIプログラムに渡します。一般に、PUTまたはPOST要求のパラメーターはSTDINに表示されますが、要求のパラメーターGETは環境変数に挿入されます。

プログラムの仕事は、これらのパラメーターに基づいて必要な応答を作成し、それらをSTDOUTに出力することです。また、データベース情報やその他のシステム情報を利用する場合もあります。この出力は、サーバーがHTTP応答のコンテンツとして使用します。

Perl CGI moduleこのインターフェイスを便利なサブルーチンでラップするものを確認する必要があります。

于 2012-08-06T00:09:57.720 に答える
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>

Evaluation.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 に答える