筑波大学 システム情報系 情報工学域
新城 靖
<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 プログラムを作成することはしない。そうではなく、 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: 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: }
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>