Java CGI HOWTO
by David H. Silber  dhs@orbits.com
1996 11 18  0.4

 :  ( jhpark91@cse.hanyang.ac.kr )

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

  1. Ұ

ڹٰ ε   α׷Ӵ ý ȯ   ׼ 
 .  Java Development Kit (JDK) ۵  , α׷ ȣϱ 
ؼ   ū ̿ؾ ϸ, ̰͵ ǥ HTML/CGI ۵İ  
 ʴ´. ̷ Ѱ迡    ,    ϳ Ͽ.
ڼ  ڸ  о.

  1.1.  

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

  1.2   Ͽ

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

  1.3 Ű

  Ű ftp://ftp.orbits.com/pub/software/java_cgi-0.4.tgz  
anonymous FTP   ִ.  Ű ǿ   SGML ҽ 
ִ.

 Ű GNU Library General Public License׿ ǰ ȴ.  
  HOWTO Ǳ ǻ׿ ǰؼ  ȴ. 

  Ʈ  Ѵٸ, ٸ   Java CGIŬ ߰  
ְ http://www.orbits.com/software/Java_CGI.html  ۷ ޱ ٶ.

  1.4   Ѹ

  Stellar Orbits Technology Services  Ǿ. (츮 ϴ
  ʹٸ http://www.orbits.com/  ѷ)

  2. ڹ CGIα׷ ϱ   ϱ ( Բ)
 
 κ  ġ ۾   ġ  ڽ ˾ƺ 
ϱ  ǳ  Բ  Java CGIŰ ν  ̴.  
α׷ ν縸ϰ   ˱ ȴٸ  "Java CGI α׷ 
ϱ   ¾ϱ"  Ѿ.

  2.1. ý 䱸

 Ʈ Java Development Kit ν κ н   
 ۵Ѵ.  apache HTTP Ű   
ϰ ִ.    ۵  dhs@orbits.com 
ֱ ٶ.

 ڹ Ÿ ʹ ޸𸮸  ʿ  ó δ. Java CGI
α׷    Ѵٸ  ްƮ    ƾ  ̴.

  2.2. Java CGI ֵ- Ʈ

  Ϸ ϴ  ۼ Ʈ Java CGI  Ѵ. 
ftp://www.orbits.com/pub/software/java_cgi-0.4.tgz    ִ. (
ڴ ٲ 𸥴.)

  2.3 ҽ  Ǯ

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

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

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

  2.4   н(Local Path)  ħ ϶ 

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

  2.5 ν ׽Ʈغ

κ  ν  javacgitest.html , javaemailtest.html , 
javahtmltest.html ̶ HTML̴. տ  ״  ν ߴٸ,
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. ڹ CGI α׷ ϱ   ¾ϱ ()

* ftp://www.orbits.com/pub/software/java_cgi-0.4.tgzκ Java CGI Ű 
  ޾ƶ ( ڴ ٲ 𸥴.)

*    ɾ  Ǯ

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

(  ڰ ٲٸ, ݺʹ   ȿ ִ  )

*   java_cgi-0.4 丮 ýۿ ° Makefile ϶.

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

* ų غ Ǿ ̴.

  4. Java CGI α׷ Ű

  4.1. CGI 𵨿 ڹ α׷    ֹ

  ڹ α׷ Űµ ־    ִ:

  4.1.1. ڹ α׷   ó ų  .

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

  4.1.2. ڹٴ ȯ(environment)  Ϲ ׼  ʴ´.

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

  4.2. Java CGIα׷    غ 

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

  4.2.1. java.cgi ũƮ

  ũƮ  ϰ ϴ Java CGIα׷ HTTP  
ȣۿ(interaction) ϸ, Ǳ⸦ ϴ α׷ ̸ 
ϴ Ÿκ ̾Ƴ, ӽ Ͽ ȯ Ÿ(environment data) 
 . ׸  ɾ ٿ ٿ ȯ   ̸ Ŀ ο
ٿ  ̸  ڹ Ÿ ͸ Ų.

Java.cgi ũƮ "  н(Local Path)  ħ ϶ " 
Ǿ(configured) νǾ.

  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 󿡼 ڹ
α׷ Ű ִ ڹ front-end ̸, CGI_Test ų ڹ 
α׷ ̸   ̴. 

  5. Java CGIŬ ϱ

ν "CGI" , "Email" , "HTML" ̶    Ŭ ȴ. 
 MIME  ٷ  MIMEin  MIMEout ̶ Ŭ ߰
  ̴.

(support) Ŭ ׽Ʈ Ŭ   ִ.  
" 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 Ÿ  ü (construct)Ѵ.

	
          public CGI ( )

	
          CGI ü  Ǿ ,    CGI  ü  
	  local   storage .

  5.1.6.   getNames()

	
          شϴ value  ǵ name Ʈ Ѵ.

	
          public  Enumeration  getKeys ()

	
          شϴ value ǵ name ü Ʈ Ѵ.

	ϰ
          ǵ  ̸ Enumeration
 
   5.1.7.   getValue()

	
          ̸ õ 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 α׷  Ʈ Ʈ̴.

        Ķ 

           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()  	 //  e-mail ޽ .
        sendTo()         // ޽  ߰Ѵ.
        Subject()        // ޽ (Subject: ) Ѵ.
---------------------------------------------------------------------------

  5.3.4.    

	Email_Test, Text.

  5.3.5.   Email ()

        
          email ޽  ü Ѵ.
        
        
          public Email()

        
          Email ޼ҵν ϼ   ޽ ¾Ѵ.

         
          Text.

  5.3.6.   send()

         
          e-mail ޽ .

        
          public void send ()

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

  5.3.7.   sendTo()

	
	  ޽  ߰Ѵ.

	
          public String sendTo ( String  address )

	
	   ޼ҵ  Ʈ ּ(address) ߰Ѵ. e-mail ޽ 
	    ִ    Ѱ谡 . Ʈ ũ⸦ 
	   ũ ٸ(build up),  Mail Transport Agent  ޾Ƶ  
	  ְų ޸𸮸   ִ Ķ Ʈ  ʰ  
	  ִ.

	Ķ

          address
             ޽  

  5.3.8.   subject()

	
	   ޽  Ѵ.

	
	  public void subject ( Sting subject )

	
  	  e-mail Subject:   ؽƮ Ѵ.  ѹ ̻ callǸ, 
	   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 α׷
	   Ʈ Ʈ̴.  Email  õ ּ(address) 
	   Ʈ .

        Ķ 

          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()

	
	   ̸ Ѵ.

	
	  public void author ( String  author )

	
          author  ̸ Ѵ.

	Ķ 

          author
           ޽ ̸  ؽƮ

        
	  title() .

  5.5.7.   definitionList()

	
	  (definition) Ʈ Ѵ.

	
	  public void definitionList()

	
	   Ʈ Ѵ.  Ʈ Ʈ   Ʈ 
	   ׸(term)  ؽƮ(definition text)    ׸ 
	  Ʈ̴.  Ʈ  (ּ) ϳ term/text  
	   , ׸ endList() ޼ҵ尡 ѹ call  ̾ Ѵ.
	  , Ʈ nest   ٴ  ָ϶.

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

  5.5.8.   definitionListTerm()

	
  	   Ʈ  ߰Ѵ.

	
	  public void definitionListTerm()

	
	   Ʈ ׸(term) ߰Ѵ.  Ʈ Ʈ ׸κ
	  ؽƮ  ޼ҵ尡 call  ׸ شǴ listItem޼ҵ尡
	  call Ǳ  ޽ ٿ(appended) Ѵ.

	
  	  definitionList(),  listItem(). 

  5.5.9.   endList()

	 
	  Ʈ .
	
	
	  public void endList()

	
	  Ʈ .  ޼ҵ Ʈ δ´(close out).  
	  Ʈ nest    ָ϶.

	
  	  definitionList()

  5.5.10.   listItem()

	
	  Ʈ Ʈ ߰Ѵ.

	
	  public void listItem()

	  public void listItem(String item)

	  public void listItem(String term, String item)

	
	  Ʈ Ʈ ߰Ѵ.  ù° Ѵٸ  Ʈ 
	   ؽƮ,  ޼ҵ尡 call  ׸ ٸ Ʈ 
	  ޼ҵ尡 callǱ  ޽ ٿ Ѵ. ι° °,
	   ؽƮ  ޽ ٿ ſ(Ȥ ߰) ޼ҵ 
	  Ķͷν õȴ.°  Ʈ specificϰ, term
	  Ʈ Ʈ Ǹ Ѵ.

	Ķ
  
	  item
  	    Ʈ Ʈ ؽƮ

	  term
  	     Ʈ Ʈ ׸(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

	 Ŭ CGIŬ  ϴ   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()    //  (line break) ߰Ѵ.
          addParagraph()    //  ܰ(paragraph break) ߰Ѵ.
----------------------------------------------------------------------

  5.7.4.    

        Email, HTML.

  5.7.5.   add()

	
  	   ۿ ؽƮ ߰Ѵ.

        
          public void add ( char addtion )
        
          public void add ( char addtion )

          public void add ( StringBuffer addition )

        
           ؽƮ  뿡 addtion ߰Ѵ.

        Ķ

          addtion 
            ؽƮ ۿ ߰  ؽƮ.

         
          addLineBreak() , addParagraph().

  5.7.6.   addLineBreak()

	
	  ؽƮ   Ų.

	
	  public void addLineBreak ()

	
	    ؽƮ  Ѵ.

	
	  add() ,  addParagraph().

  5.7.7.   addParagraph()

	
	    Ѵ.

	
	  public void add ()

	
          ؽƮ     Ѵ.

	
          add() ,  addLineBreak().

  6.  ȹ

        * Email Ŭ ߰ :

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

	  SendTo( String address )
	    e-mail޽  (primary destinations) Ʈ ߰Ѵ.

          SendCc ( String address )
            e-mail ޽ Carbon-Copy  ߰Ѵ.

          SendCc ( String address )
            e-mail ޽ Carbon-Copy  Ʈ ߰Ѵ.

          sendBcc( String address )
            e-mail ޽ Blind Carbon-Copy  Ʈ ߰Ѵ.

	* HTML Ŭ ߰ :

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

          public void unorderedList()
            ĵ  Ʈ Ѵ.

          public void orderedList()
            ĵ Ʈ Ѵ.

          public void directoryList()
            丮 Ʈ Ѵ.

          public void manuList()
            ޴ Ʈ Ѵ.

          void anchor (String anchorName )
            anchor Ѵ.

          void link (String url, String text)
            link Ѵ.

          void applet(String url, String altText)
            ø link Ѵ.

	* HTML Ʈ nestǰ Ѵ.

        * HTML Ʈ formattingڵ ùٸ    üŷ ڵ带 
	  ߰Ѵ. 

	* Makefile ȯ Ÿ  ġ (configurable)  ְ 
	  Ѵ.

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

	* ؼ  ̸  ajva.util.Enumeration interface CGI
	   .

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

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

	*  Test  Ű    ̿ϴ ȭѴ.

  7.   ȭ

  7.1.    0.3  0.4  ȭ 
 
	* ּ  ϴ HTML Ŭ  .

	* HTML_Test Ŭ javahtmltest.html-dist ۼ.

	*  Ʈ ٷ  HTML ޼ҵ带 ߰.

  7.2.    0.2  0.3  ȭ

	* Text  Email Ŭ ߰. HTML Ŭ ߰Ǿ,  ñ⿡
	    .

	* Ű پ Ŭ . ֵ Ŭ Orbits.net.*ȿ ,
	  (support) Ŭ Text Orbits.text.Textȿ .

	* CGItest  CGI_Test  ٲ.

	* Email_TestŬ ߰.

  7.3.    0.1  0.2  ȭ

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

	* Javacgitest.html  ǿ Ե.

	* ν  make   ؽƮ Ͽ -dist  ̸ 
	  .
