筑波大学 システム情報系 情報工学域 新城 靖 <yas@cs.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~syspro/2019/2019-06-19
/cgi-hello-java.html
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~syspro/2019/
http://www.coins.tsukuba.ac.jp/~yas/
普通は、Java 言語で CGI プログラムを作成することはしない。そうではなく、 Java Servlet、Java JavaServer Pages、等の Java のプログラムをサーバ側で 実行するための専用の仕組みを使う。Java Servlet は、CGI のオーバーヘッド を避けるために、考案された仕組みである。CGI とは異なり、 fork + exec が行われないので実行が軽い。
このプログラムは、手続き的に書かれており、オブジェクト指向のプログラム ではない。CGI の仕組みを理解することには適しているが、真似をすべきでは ない。
1: /* 2: CgiHelloJava.java --簡単な CGI のプログラム (Java版) 3: ~yas/syspro/www/CgiHelloJava.java 4: Created on: 2019/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: }
1: #!/bin/sh 2: 3: exec java CgiHelloJava
<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>