CGI to technologia pisania aplikacji internetowych w dowolnym języku programowania obsługiwanym przez serwer www (C++, Perl, Bash, Java i in.). Wszystko, co jest nam potrzebne, to serwer z obsługą CGI i zainstalowaną Javą (wystarczy JRE).

Uruchomimy Javę w technologi CGI – generując dynamiczną stronę HTML na serwerze.

Oto procedura:

  1. Tworzymy katalog o nazwie cgi-bin w public_html
  2. Tworzymy kod odpalający aplikację Java jako skrypt cgi, UWAGA! aby polskie czcionki działały musimy tu dodać kodowanie UTF-8 jako parametr. Tworzymy plik tekstowy
    programjava.cgi:

    1
    2
    3
    #!/bin/bash
    java -Dfile.encoding=UTF-8 javacgi
    exit 0
  3. Teraz przyszła pora na nasz program CGI, javacgi.java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    import java.util.Map;

    class javacgi
    {
       public static void main(String args[])
       {
               /* Jeśli polskie znaki nie działają, można odkomentować te 4 linie:
                System.setProperty("file.encoding","UTF-8");
                Field charset = Charset.class.getDeclaredField("defaultCharset");
                charset.setAccessible(true);
                charset.set(null,null);  */


                    System.out.println(
                     "Content-type: text/html; charset=UTF-8\n\n" +  //musi być jako 1sza linia
                      "<HTML lang="pl">\n" +
                        "<HEAD>\n" +
                          "<meta charset="utf-8" />"+
                          "<TITLE>Test CGI w Javie</TITLE>\n" +
                        "</HEAD>\n" +
                        "<BODY>\n" +
                          "<H1>Program JAVA generujący kod HTML!</H1>\n" +
                        "<p>Polskie znaki: ąśćźżńĄŚŹŻĆ</p></BODY>\n" +
                      "</HMTL>\n"
                     );

            //Wypisanie w pętli zmiennych systemowych, przydatne jeśli chcemy np. odczytać zmienne formularza:
            Map<String, String> env = System.getenv();
            for (String envName : env.keySet())
                 System.out.format("%s=%s<BR>\n", envName, env.get(envName));
         }
    }
  4. Program kompilujemy:
    1
    javac javacgi.java

    Źródło można przenieść do innego katalogu ze względów bezpieczeństwa poza public_html i cgi-bin.

  5. Teraz musimy nadać w Linuxie, będąc w katalogu cgi-bin, skryptowi Bash uprawnienia do wykonywania:
    1
    chmod a+x programjava.cgi

    Jeśli nam się udało, poleceniem ./programjava.cgi uruchomimy naszą aplikację Java.

  6. A teraz wisienka na torcie, uruchamiamy na naszym serwerze program CGI z przeglądarki wpisując:
    1
    http://serwer.com/~uzytkownik/cgi-bin/programjava.cgi

    Można na końcu dodać parametry np. z formularza np.

    1
    http://serwer.com/~uzytkownik/cgi-bin/programjava.cgi?imie=Jan&nazwisko=Kowalski

    Będą one widoczne w zmiennych systemowych jako QUERY_STRING