システムプログラム(第9回): JavaによるCGIプログラムの作成(Hello)

                                       筑波大学 システム情報系 情報工学域
                                       新城 靖
                                       <yas@cs.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~syspro/2016/2016-06-15 /cgi-hello-java.html
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~syspro/2016/
http://www.coins.tsukuba.ac.jp/~yas/

JavaによるCGIプログラムの作成(hello)

普通は、Java 言語で CGI プログラムを作成することはしない。そうではなく、 Java Servlet、Java JavaServer Pages、等の Java のプログラムをサーバ側で 実行するための専用の仕組みを使う。Java Servlet は、CGI のオーバーヘッド を避けるために、考案された仕組みである。CGI とは異なり、 fork + exec が行われないので実行が軽い。

CgiHelloJava.java

CgiHelloJava.java は、cgi-hello.cを Java 言語で記述したものである。関数名や変数名としては、C 言語版と似たも のを使っている。プログラムの説明は、C 言語版を見なさい。

このプログラムは、手続き的に書かれており、オブジェクト指向のプログラム ではない。CGI の仕組みを理解することには適しているが、真似をすべきでは ない。

   1:	/*
   2:	  CgiHelloJava.java --簡単な CGI のプログラム (Java版)
   3:	  ~yas/syspro/www/CgiHelloJava.java
   4:	  Created on: 2016/07/29 14:05:12
   5:	*/
   6:	
   7:	class CgiHelloJava
   8:	{
   9:	        public static void main(String argv[])
  10:	        {
  11:	                print_header();
  12:	                print_content();
  13:	        }
  14:	        public static void print_header()
  15:	        {
  16:	                stdout.printf("Content-Type: text/html\n");
  17:	                stdout.printf("\n");
  18:	        }
  19:	        public static void print_content()
  20:	        {
  21:	                stdout.printf("<HTML><HEAD></HEAD><BODY>\n");
  22:	                stdout.printf("hello.\n");
  23:	                stdout.printf("</BODY></HTML>\n");
  24:	        }
  25:	
  26:	        static java.io.BufferedReader stdin = 
  27:	                new java.io.BufferedReader( new java.io.InputStreamReader(System.in) );
  28:	        static java.io.PrintStream stdout = System.out;
  29:	        static java.io.PrintStream stderr = System.err; 
  30:	}

cgi-hello-java.cgi

Java 言語のプログラムを CGI で動作させるために、簡単なシェルスクリプト を用いる。
   1:	#!/bin/sh
   2:	
   3:	exec java CgiHelloJava

CGIを実行するためのフォーム

<H2><A ID="cgi-example-get">CGI の GET メソッドを使う例</A></H2>

<FORM ACTION="cgi-hello-java.cgi" method="get">
    <P>
    <INPUT type="submit" value="say hello">
    </P>
</FORM>

<H2><A ID="cgi-example-post">CGI の POST メソッドを使う例</A></H2>

<FORM ACTION="cgi-hello-java.cgi" method="post">
    <P>
    <INPUT type="submit" value="say hello">
    </P>
</FORM>

表示例

CGI の GET メソッドを使う例

CGI の POST メソッドを使う例


Last updated: 2016/06/14 21:58:18
Yasushi Shinjo / <yas@cs.tsukuba.ac.jp>