  Java CGI HOWTO

  by David H. Silber javacgi-document@orbits.com
  1998 12 1  0.5
  ű:(jhpark@osnn.hanyang.ac.kr)

   HOWTO   ڹٷ ۼ CGI α׷  밡
  ϵ  ϸ  CGI α׷ ۼϱ   ڹٸ
  ϴ Ѵ.  HOWTO   ü 
   ۼ, Ư н    ȴ.
  ______________________________________________________________________

  

  1. Ұ
     1.1  
     1.2   Ͽ
     1.3 Ű
     1.4 ϸ Ʈ AID CDATA mailing-list(LABEL)LABEL

  2. ڹ CGIα׷ ϱ   ϱ ( ÷) AID CDATA install-long(LABEL)LABEL
     2.1 ý 䱸
     2.2 Java CGI ֵ- Ʈ
     2.3 ҽ  Ǯ
     2.4  (local path)  ħ ϶ AID CDATA make-programs(LABEL)LABEL
     2.5 ν ׽Ʈϱ AID CDATA install-test(LABEL)LABEL

  3. Java CGI α׷ Ű Ͽ  ϱ() AID CDATA install-short(LABEL)LABEL
  4. Java CGI α׷ ϱ
     4.1 CGI  󿡼 ڹ α׷   ֹ
        4.1.1 ڹ α׷  ó ų  .
        4.1.2 ڹٴ ȯ()  Ϲ ׼  .
     4.2 Java CGIα׷    غ
        4.2.1 java.cgi ũƮ
        4.2.2 HTML form  java.cgi ȣϱ

  5. Java CGIŬ ϱ
     5.1 CGIAID CDATA cgi-class(LABEL)LABEL
        5.1.1 Ŭ 
        5.1.2 Ŭ 
        5.1.3  
        5.1.4 
        5.1.5 CGI()
        5.1.6 getNames()
        5.1.7 getValue()
     5.2 CGI_TestAID CDATA cgi-test-class(LABEL)LABEL
        5.2.1 
        5.2.2 
        5.2.3 main()
     5.3 EmailAID CDATA email-class(LABEL)LABEL
        5.3.1 Ŭ 
        5.3.2 Ŭ 
        5.3.3  
        5.3.4 
        5.3.5 Email()
        5.3.6 send()
        5.3.7 sendTo()
        5.3.8 subject()
     5.4 Email_TestAID CDATA email-test-class(LABEL)LABEL
        5.4.1  
        5.4.2 
        5.4.3 main()
     5.5 HTMLAID CDATA html-class(LABEL)LABEL
        5.5.1 Ŭ 
        5.5.2 Ŭ 
        5.5.3  
        5.5.4 
        5.5.5 HTML()
        5.5.6 author()
        5.5.7 definitionList()
        5.5.8 definitionListTerm()
        5.5.9 endList()
        5.5.10 listItem()
        5.5.11 send()
        5.5.12 title()
     5.6 HTML_TestAID CDATA html-test-class(LABEL)LABEL
        5.6.1  
        5.6.2 
        5.6.3 main()
     5.7 TextAID CDATA text-class(LABEL)LABEL
        5.7.1 Ŭ 
        5.7.2 Ŭ 
        5.7.3  
        5.7.4 
        5.7.5 add()
        5.7.6 addLineBreak()
        5.7.7 addParagraph()

  6.  ȹ
  7. ȭ
     7.1 0.4 0.5 ȭ
     7.2 0.3 0.4 ȭ
     7.3 0.2 0.3 ȭ
     7.4 0.1 0.2 ȭ

  ______________________________________________________________________

  1.  Ұ

  ڹٰ ε   α׷Ӵ ý ȯ  
  ׼  .  Java Development Kit (JDK) ¾  ,
  α׷ ȣϱ ؼ   ū ̿ؾ ϸ, ̰͵
  ǥ HTML/CGI ۵İ   ʴ´. ̷ Ѱ迡   
   , ڰ   ϳ Ͽ.ڼ  ڸ 
  о ٶ.    1996⿡ ۼ ̷ ڹ 
   ȭ ־Դ.  -(server-side) ڹ α׷ Ű
        -- 긴 캸Ƶ  ̴.

  1.1.   

  ڴ ڵ HTML CGI 鿡  Ϲ İ ּ
  HTTP Ͽ ⺻   ִٰ Ѵ.   ڹٷ
  α׷ ۼϴ  ˾ƾ ϸ ׷ ϸ   ϱ
  .

  1.2.    Ͽ

    ֱ  http://www.orbits.com/software/Java_CGI.html
    ִ.

  1.3.  Ű

    ϴ Ű  anonymous FTP  
  ִ.  ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz.  Ű
    SGML ҽ ԵǾ ִ.   Ű GNU Library General
  Public License ׿ ǰ ȴ.    HOWTO
  Ǳ(copyright) ǻ׿ ǰؼ ȴ.

    Ʈ Ѵٸ, ٸ  Java CGIŬ ã
   ֵ http://www.orbits.com/software/Java_CGI.html ϱ
  ٶ.

  ڰ  Ű ϰ ϴµ  ð   
  Ƹ    ̴.  ƹ  Ʈ Ƴ
   μϷ Ѵٸ, javacgi-document@orbits.com 
  ٶ.

  1.4.  ϸ Ʈ

    Ʈ νϰ ϴµ ־ ȣ
     ڰ majordomo (:ϸ Ʈ ޴
  ϳ) Ʈ .  subscribe   javacgi-
  request@orbits.com ޽  ٶ.
  2.  ڹ CGIα׷ ϱ   ϱ ( ÷)

   κ ġ ۾   ġ  ڽ ˰ ϱ
   ǳ  Բ  Java CGI Ű ν  ̴.
    α׷ ν縸 ϰ  ׸  ׷߸ ϴ
    Ű   ʴ´ٸ,  Ѿ.  ``ڹ
  CGIα׷ ϱ   ϱ ()''.

  2.1.  ý 䱸

   Ʈ Java Development Kit ν κ н 
    ۵ ̴.  ڴ apache HTTP  Ű
  Debian Linux  ϰ ִ.    , ϸ Ʈ
  ãƺ ٶ.  ڼ  ``ϸ Ʈ'' ϶.  
  ڹ Ÿ ʹ ޸𸮸  ʿ ϴ  -- Java CGI
  α׷   Ѵٸ   ʿ ̴.

  2.2.  Java CGI ֵ- Ʈ

    Ϸ Ʈ Java CGI Ѵ.
  ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz   ִ.
    𸥴.

  2.3.  ҽ  Ǯ

   Ű Ǯ   丮 ã´.  (ٸ Ű Ǯ 
    ٸ, /usr/local/src ϶.)   
   Ǭ.

  gzip -dc java_cgi-0.5.tgz | tar -xvf -

  java_cgi-0.5丮  ̴..  ű⿡   ܰ 
    ̴.  ( ٲٸ, ݺʹ   
  ϶)

  2.4.   (local path)  ħ ϶

  Java CGIα׷   Ѵ. , cgi-bin丮
    ̴.  apache  cgi-bin 丮ν
  /var/www/cgi-bin ϰ Ǿ ־, Java  CGI α׷
  ־ 丮δ /var/www/javacgi Ѵ.  CLASSPATH
  丮 Java CGI α׷     𸥴. ý
   ݿϱ  Makefile Ѵ.  root α  
  Ȯϰ make install  Ѵ.   ڹ α׷
  ϰ, java.cgi ũƮ ýۿ ° ϰ   
  α׷ νѴ.  ߰,   HTML ̳ HTML׽Ʈ
   Ѵٸ,  make all  Ѵ.

  2.5.  ν ׽Ʈϱ

  κ  ν  javacgitest.html, javaemailtest.html 
  javahtmltest.html̶ HTML̴.  忡 all νߴٸ,
  Makefile WEBDIR       ̴.
  ׷ ʴٸ javacgitest.html-dist, javaemailtest.html-dist 
  javahtmltest.html-distκ (build)ϱ make  test 
   ȴ.  ν  Ȯϰ   , JAVACGI  丮κ
  CGI_Test.class, Email_Test.class HTML_Test.class, WEBDIR
  丮 ʹ javacgitest.html, javaemailtest.html 
  javahtmltest.html   𸥴.   Ը 
     ֱ ̴.
  3.  Java CGI α׷ Ű Ͽ  ϱ()

  o  ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgzκ Java
     CGI Ű ´.  (  𸥴)

  o   ɾ  Ǭ:

     gzip -dc java_cgi-0.5.tgz | tar -xvf -

  ( ٲٸ, ݺʹ    ϶)

  o   java_cgi-0.5 丮 ýۿ °Makefile
     Ѵ.

  o  rootν make install Ѵ.   ڹ α׷
     ϰ,  ýۿ õ  (apply)Ű
     پ ϵ ν Ѵ.    HTMLε     HTML׽Ʈ
        Ѵٸ,   make all Ѵ.

  o   غ Ǿ.

  4.  Java CGI α׷ ϱ

  4.1.  CGI  󿡼 ڹ α׷   ֹ

    ڹ α׷ Űµ ־    ִ:

  4.1.1.  ڹ α׷  ó ų  .

  Ŀ λ󿡼 ڹ Ÿ ͸ ϰ (α׷ 
   ֵ) ʱȭ Ŭ ־ Ѵ. HTML ·δ Ŀ  
     .

  4.1.2.  ڹٴ ȯ()  Ϲ ׼  .

  ڹ α׷ ʿ ϴ  ȯ溯 Ȯ Ѱ(pass)
  Ѵ.  C  getenv() Լ  ޼ҵ .

  4.2.  Java CGIα׷    غ

   ֹ óϱ , ڹ Ϳ ʿ 
  ϴ  CGIα׷ ۼϿ.

  4.2.1.  java.cgi ũƮ

    ũƮ ϰ ϴ Java CGIα׷ HTTP 
  ȣۿ(interaction) Ѵ.  ũƮ ϰ ϴ
  α׷ ̸  ϴ Ÿκ ̾Ƴ  ӽ
   ȿ ȯ Ÿ(environment data) θ .  ׸
  Ŀ ο ٿ ȯ   ̸ α׷ ̸ 
  ڹ Ÿ ͸ Ų.  java.cgiũƮ `` ο
   ħ ϶''  Ǿ νǾ.

  4.2.2.  HTML form  java.cgi ȣϱ

  Java CGI α׷ ϴ     form action
  Ѵ:

  <form action="/cgi-bin/java.cgi/CGI_Test" method="POST">

  ⼭   /cgi-bin/   CGI ̳ʸ 丮̸, java.cgi
  󿡼 Java α׷ Ű ִ ڹ front-end ̸,
  CGI_Test ų ڹ α׷ ̸ ̴.

  5.  Java CGIŬ ϱ

     Ŭ ȴ.  ``CGI'' ``Email''
  ``HTML''̴.  ڴ MIME   ٷ  Ŭ-
  MIMEin  MIMEout -  ߰ ̴.

  Ŭ ׽Ʈ Ŭ   ִ.  ``CGI_Test'',
  ``Email_Test''  ``HTML_Test'' ν ׽Ʈϱ  ̴.
  ̵ Ŭ  Ŭ ̺귯 ϴ ڹ α׷
  (starting- point)ó   ̴.  ``Text'' Ŭ
  Email  HTML Ŭ Ŭ̴.

  5.1.  CGI

  5.1.1.  Ŭ 

  public class CGI

  5.1.2.  Ŭ 

  CGI Ŭ "CGI " (   ȯ  submit 
  õǾ  formκ  name/value) .   
  Properties Ŭ ü ȴ.   Ŭ "Orbits.net" Ű
  ִ.

  5.1.3.   

  ______________________________________________________________________
          CGI()         //  .
          getNames()    //  ̸ Ʈ ´.
          getValue()    //  ̸ ν form value ´.
  ______________________________________________________________________

  5.1.4.  

  CGI_Test.

  5.1.5.  CGI()

     
          CGI Ÿ  ü Ѵ.

     
        public CGI()

     
        CGI ü  Ǿ ,    CGI  ü
          ҷ .
  5.1.6.  getNames()

     
        شϴ value  ǵ name δ.

     
        public Enumeration getKeys ()

     
        شϴ value ǵ name ü Ʈ Ѵ.

     
        ǵ  ̸ Enumeration

  5.1.7.  getValue()

     
        name õ value Ѵ.

     
        public String getValue ( String name )

     
        HTML formκ  name value̿ ϴ 
        .

     Ķ

        name
           value ϴ Ű

     
        value  ִ String

  5.2.  CGI_Test

   Ŭ CGIŬ  ϴ   Java CGI
  Ű Ȯϰ ϴ Ȯϴµ Ǵ ׽Ʈ α׷
   ִ.

  5.2.1.  

  ______________________________________________________________________
          main()      //  α׷ main().
  ______________________________________________________________________

  5.2.2.  

  CGI.

  5.2.3.  main()

     
        main() ޼ҵ带 Ѵ.

     
        public static void main( String argv[] )

     
          name/value  Ʈ   ϴ CGI
        α׷  (entry point)̴.

     Ķ

        argv[]
           java.cgi ũƮ  α׷ ޵Ǵ ڵ.  
            

  5.3.  Email

  5.3.1.  Ŭ 

  public class Email extends Text

  5.3.2.  Ŭ 

  ޽ TextŬ add* () ޼ҵ  Ŭ  ߰ e-mail
  (e-mail-specific) ޼ҵ .  ġ, ޽
   .   Ŭ "Orbits.net"Ű ִ.

  5.3.3.   

  ______________________________________________________________________
          Email()      //  .
          send()       //  ڸ ޽ .
          sendTo()     //  ޽  ߰Ѵ.
          subject()    //   (Subject:) Ѵ.
  ______________________________________________________________________

  5.3.4.  

  Email_Test, Text.

  5.3.5.  Email()

     
        ڸ ޽  ü Ѵ.

     
        public Email()

     
        Email޼ҵμ ϼ(complete)  ޽ ¾Ѵ.

     
        Text.

  5.3.6.  send()

     
        ڸ ޽ýø .

     
        public void send ()

     
        ø ȭ(format)ϰ .    ʾ,
        ƹ ϵ ߻ ʴ´.

  5.3.7.  sendTo()

     
        ޽  ߰Ѵ.

     
        public String sendTo ( String address )

     
         ޼ҵ  Ʈ  ּ  ߰Ѵ.  ڸ
        ޽   ִ    Ѱ谡 .
        Ʈ ũ⸦  ũ ٸ,   Ʈ(Mail
        Transport Agent)    ִ Ķ Ʈ 
        ʰ   ׷ ʴٸ ޸𸮸   ̴.

     Ķ/

        address
           ޽  .

  5.3.8.  subject()

     
        ޽  Ѵ.

     
        public void subject ( String subject )

     
        ڸ Subject:  ؽƮ Ѵ.  ѹ ̻
        ȣǸ,    subject ȴ.

     Ķ

        subject
           ޽  Subject:  ؽƮ

  5.4.  Email_Test

   Ŭ Email Ŭ  ϴ   Java CGI
  Ű Ȯϰ ϴ Ȯϴµ Ǵ ׽Ʈ α׷
   ִ.

  5.4.1.   

  ______________________________________________________________________
          main()      //  α׷ main().
  ______________________________________________________________________

  5.4.2.  

  Email.

  5.4.3.  main()

     
        main() ޼ҵ带 Ѵ.

     
        public static void main( String argv[] )

     
          name/value ְ    Ʈ ϴ CGI
        α׷  (entry point)̴.  Email  õ
        ּҿ  Ʈ .

     Ķ

        argv[]
           java.cgi ũƮ  α׷ ޵Ǵ ڵ.  
            .

  5.5.  HTML

  5.5.1.  Ŭ 

  public class HTML extends Text

  5.5.2.  Ŭ 

  ޽ TextŬ add* () ޼ҵ  Ŭ  ߰
  HTML(HTML-specific) ޼ҵ . ϼǸ, ޽
   .  , Ʈ  ޼ҵ Ȯ 
  Ǿ Ȯ  üŷ  ʾƼ, α׷Ӱ HTML 
   ʵ ؾ Ѵ.   Ŭ "Orbits.net"Ű
  ִ.

  5.5.3.   

  ______________________________________________________________________
          HTML()                  //  .
          author()                //    ̸ Ѵ.
          definitionList()        //   Ʈ Ѵ.
          definitionListTerm()    //   Ʈ (term) ߰Ѵ.
          endList()               //  Ʈ δ´.
          listItem()              //  Ʈ Ʈ ߰Ѵ.
          send()                  //  HTML޽ .
          title()                 //    ؽũ Ѵ.
  ______________________________________________________________________

  5.5.4.  

  HTML_Test, Text.

  5.5.5.  HTML()

     
        HTML޽  ü Ѵ.

     
        public HTML()

     
        HTML ޼ҵ忡 ؼ ϼ  ޽ .

     
        Text.

  5.5.6.  author()

     
          ̸ Ѵ.

     Syntax
        public void author ( String author )

     
         ڸ author Ѵ.

     Ķ/

        author
           ޽ ڷ  ؽƮ.

     
        title().

  5.5.7.  definitionList()

     
         Ʈ Ѵ.

     
        public void definitionList ()

     
         Ʈ Ѵ.   Ʈ Ʈ  
        Ʈ  (term)  ؽƮ(text)    ׸
        Ʈ̴.  Ʈ  (ּ) ϳ /ؽƮ
         ϰ endList() ޼ҵ尡 ѹ ȣ  ̾ Ѵ.
         Ʈ ׽Ʈ(nest)   ϶.

     
        definitionListTerm(), endList(), listItem().

  5.5.8.  definitionListTerm()

     
         Ʈ ϳ  ߰Ѵ.

     
        public void definitionListTerm ()

     
         Ʈ ϳ  ߰Ѵ.   Ʈ Ʈ 
        κ ؽƮ  ޼ҵ尡 ȣǰ شǴ listItem޼ҵ尡
        ȣǱ  ޽ ٿ Ѵ.

     
        definitionList(), listItem().

  5.5.9.  endList()

     
        Ʈ δ´.

     
        public void endList ()

     
        Ʈ δ´.   ޼ҵ  Ʈ .  
        Ʈ ׽Ʈ   ָ϶.

     
        definitionList().

  5.5.10.  listItem()

     
        Ʈ Ʈ ϳ ߰Ѵ.

     
        public void listItem ()

        public void listItem ( String item )

        public boolean listItem ( String term, String item )

     
        Ʈ Ʈ ϳ ߰Ѵ.   ù° (form)
        ȴٸ,  Ʈ  ؽƮ  ޼ҵ尡 ȣ
         ׸ ٸ Ʈ ޼ҵ尡 ȣǱ  ޽
        ٿ Ѵ. ι° ° , item ؽƮ 
        ޽ ٿ ſ(Ȥ ߰) ޼ҵ Ķͷν
        õȴ.°  Ʈ õǰ(specific), 
        Ʈ Ʈ Ǹ Ѵ.

     Ķ

        item
           Ʈ Ʈ ؽƮ.

        term
            Ʈ Ʈ  κ ؽƮ.

     
        definitionList(), definitionListTerm(), endList().

  5.5.11.  send()

     
        HTML޽ .

     
        public void send ()

     
        HTML ޽ .

  5.5.12.  title()

     
          ؽƮ Ѵ.

     
        public void title ( String title )

     
          ؽƮ Ѵ.

     Ķ

        title
           ޽  ؽƮ.

     
        author().

  5.6.  HTML_Test

   Ŭ HTMLŬ  ϴ   Java CGI
  Ű Ȯϰ ϴ Ȯϴµ Ǵ ׽Ʈ α׷
  ִ.

  5.6.1.   

  ______________________________________________________________________
          main()      //  α׷ main().
  ______________________________________________________________________

  5.6.2.  

  HTML.

  5.6.3.  main()

     
        main() ޼ҵ带 Ѵ.

     
        public static void main( String argv[] )

     
        HTML  Ʈ ҿ  name/value 
        ̸   name/value  Ʈ ϴ
        CGIα׷  ̴.

     Ķ

        argv[]
           java.cgiũƮ  α׷ ޵Ǵ ڵ.  
            .

  5.7.  Text

  5.7.1.  Ŭ 

  public abstract class Text

  5.7.2.  Ŭ 

   Ŭ Email  HTML Ŭ Ŭ̴.  ޽ 
  Ŭ ޼ҵ忡   Ŭ ޼ҵν
  ϼǸ(completed) ȭ(formatted)ȴ.   Ŭ
  "Orbits.text"Ű ȿ ִ.

  5.7.3.   

  ______________________________________________________________________
          Text()            //  .
          add()             //   ü ؽƮ ߰Ѵ.
          addLineBreak()    //   ߰.
          addParagraph()    //  ܶ ߰.
  ______________________________________________________________________

  5.7.4.  

  Email, HTML.

  5.7.5.  add()

     
        ۿ ؽƮ ߰Ѵ.

     
        public void add ( char addition )

        public void add ( String addition )

        public void add ( StringBuffer addition )

     
        ؽƮ  뿡 addition ߰Ѵ.

     Ķ

        addition
           ؽƮ ۿ ߰ ؽƮ.

     
        addLineBreak(), addParagraph().

  5.7.6.  addLineBreak()

     
          ؽƮ  Ѵ.

     
        public void addLineBreak ()

     
          ؽƮ  Ѵ.

     
        add(), addParagraph().

  5.7.7.  addParagraph()

     
        ο ܶ Ѵ.

     
        public void add ()

     
        ؽƮ 帧    ܶ Ѵ.

     
        add(), addLineBreak().

  6.   ȹ

  o  Email Ŭ ߰:

     Email( int capacity )
        ޽ ҴǱ ؼ 󸶳   ʿ ˰ 
         .

     sendTo( String [] address )
        ڸ ޽ (primary)  Ʈ ߰.

     sendCc( String address )
        ڸ ޽ īī(纻)  ߰.

     sendCc( String [] address )
        ڸ ޽ īī(纻)  ߰.

     sendBcc( String address )
        ڸ ޽  ε ī ī(͸ 纻)  ߰.

     sendBcc( String [] address )
        ڸ ޽ ε ī ī(͸ 纻)  ߰.

  o  HTML Ŭ ߰:

     HTML( int capacity )
        ޽ ҴǱ ؼ 󸶳   ʿ   .

     public void unorderedList()
         Ʈ .

     public void orderedList()
         Ʈ .

     public void directoryList()
         Ʈ .

     public void menuList()
        ޴ Ʈ .

     void anchor( String anchorName )
        anchor .

     void link( String url, String text )
        ũ .

     void applet( String url, String altText )
        ø ũ .

  o  HTMLƮ ׽Ʈ ǰ Ѵ.

  o  HTML Ʈ (formatting) ڵ ùٸ   
     üŷ ڵ带 ߰Ѵ.

  o  Makefile ȯ Ÿ  ġ   ְ Ѵ.

  o  Ÿ  GET޼ҵ带   Ʈ Ÿ 
     name/value  ش.

  o  ؼ  ̸  java.util.Enumeration ̽
     CGI  .

  o   Ű ִ  ޼ҵ带 ϴ, Test Ŭ ߰Ѵ.

  o     ׽Ʈ ϱ  CGI_Test, Email_Test 
     HTML_Test ΰ   Ǵ  ȭѴ.

  o   Test  Ű    ̿ϴ
     ȭѴ.

  7.  ȭ

  7.1.  0.4 0.5 ȭ

  o    ݿϴ ȭ ȭ ּ

  7.2.  0.3 0.4 ȭ

  o  ּ  ϴ HTML Ŭ  .

  o  HTML_Test Ŭ javahtmltest.html-dist ۼ.

  o   Ʈ ٷ  HTML ޼ҵ带 ߰.

  7.3.  0.2 0.3 ȭ

  o  Text  Email Ŭ ߰. HTML Ŭ ߰Ǿ, 
     ñ⿡  ܰ .

  o  Ű پ Ŭ .  ֵ Ŭ Orbits.net.* 
     ,  Ŭ Text Orbits.text.Textȿ .

  o  CGItest  CGI_Test  ٲ.

  o  Email_Test Ŭ ߰.

  7.4.  0.1 0.2 ȭ

  o  ȯ溯 ڹ  Ŀ  ȿ ִ ſ ӽ
     Ͽ . CGI Ŭ java.cgi Ǿ.

  o  Javacgitest.html  ǿ Ե.

  o  ν  make   ؽƮ Ͽ -dist 
     ̸ .

