
                             Java CGI HOWTO Ķ
                                       
@: David H. Silber [1]javacgi-document@orbits.com
Ķ: [2]Ӱ [3]cwhuang@phys.ntu.edu.tw

   v0.5, 1 December 1998 ½Ķ: 17 December 1998
     _________________________________________________________________
   
   p]wAAAϨϥ Java Ӽg CGI {AHΦp
   Java Ӽg CGI {DM HOWTO 󪺥تOΦb Linux @~tΤWAo
   gSO峹ƹWPSw UNIX tεLD
     _________________________________________________________________
   
1. ²

     * 1.1 wƪ
     * 1.2 o
     * 1.3 nM
     * 1.4 The Mailing List
       
2. ]wAH Java CGI { (g)

     * 2.1 tλݨD
     * 2.2 Java CGI Un
     * 2.3 Ѷ}l
     * 2.4 MwAaؿ
     * 2.5 էAw
       
3. ]wAH Java CGI { (²g)

4. @ Java CGI {

     * 4.1 H CGI Ҧ Java {ê
     * 4.2  Java CGI ѨMD
       
5. ϥ Java CGI O

     * 5.1 CGI
     * 5.2 CGI_Test
     * 5.3 Email
     * 5.4 Email_Test
     * 5.5 HTML
     * 5.6 HTML_Test
     * 5.7 Text
       
6. Ӫpe

7. קO

     * 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 ]p覡{]pvS²kiHotΪܼơD 
    Java oiu (JDK) إߪ覡AIs@ӵ{ϥΦh
   x(tokens)A oMзǪ HTML forms/CGI B@覡tXD @ǿki
   HJAoǭAӧڴN@F䤤@ءDԱШUzD
   
   ڼgUeqɶO 1996. {b Java ޳NwgܤjܤFC ثei
   ঳nkӰAݪ Java { -- ]\AӬݤ@
   servlets(?).
   
1.1 wƪ

   ڰwA HTML P CGI @몾ѡAӥBFA HTTP A
   򥻪ѡD A]ӪDpg Java {A_hoǳSNqD
   
1.2 o

   媺̷siHq:
   [4]http://www.orbits.com/software/Java_CGI.html.
   
1.3 nM

   Ҵ쪺nM󪺳̷siѰΦW FTP o
   [5]ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz. oM]t媺
   SGML lɡD
   
   oǮM󪺴̾ GNU Library General Public License. i
   Linux HOWTO vnD
   
   pGAϥΥnAлs@@ǰѦҫV
   [6]http://www.orbits.com/software/Java_CGI.htmlA HK䥦H
   Java CGI OD
   
   ڤwgSɶAh@oӮMA]oγ\O̫@FC pGHD`a
   woӵ{AӷQ@AлPp: [7]javacgi-document@orbits.com
   
1.4 The Mailing List

   ڤwgؤF@ majordomo qH׾ϥΥ{H̥iHѨMD
   C аeH [8]javacgi-request@orbits.com e]t subscribe oӦrC
   
2. ]wAH Java CGI { (g)

   o@`ЧAw˧ڪ Java CGI MAHΤjqAAFѧA欰
   |ɭP򵲪GD pGAuQw˵{ӤQFѬA [9]]w
   AH Java CGI { (²g)D
   
2.1 tλݨD

   nӯbww Java {oiu㪺 UNIX  web AWw
   D ڱN˦b apache A Debian Linux tΤWD pGAoıL
   kbAAWB@AЧQγqH׾. Ӹ`Ш [10]The Mailing List.
   
   OAJava ɴĶGOYO骺Ǫ -- pGANϥγ\h
   Java CGI {ܧAinA MB  RAM AA̡D
   
2.2 Java CGI Un

   ڼgUnNs Java CGIDAiq
   [11]ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz o(Xi
   |)D
   
2.3 Ѷ}l

   @ӦXAؿNMѶ}D (pGA٨Sзǩmn骺aAګĳA
   b /usr/local/srcD) γoӫOѶ}M:
gzip -dc java_cgi-0.5.tgz | tar -xvf -

   o|ͤ@ӥs java_cgi-0.5 ؿD b̧AiH쥻䥦a责쪺
   ɮסD (pGXܤFANΨM̪D)
   
2.4 MwAaؿ

   AMwA Java CGI {b̡D @ӻAA|ƱbMA
   cgi-bin 檺ؿD ڪ apache A]wϥ /var/www/cgi-bin 
   cgi-bin ؿA ]ڥ /var/www/javacgi @m Java CGI {aD
   Aiण|QNA Java CGI {iY@wsb CLASSPATH ؿD s
    Makefile ӤAtΰtmDTwA root ñJM make
   installD oNsĶ Java {Aק java.cgi OZHŦXAtΡAåB
   N{w˶iAmD pGAƱ֦媺 HTML HΤ@ HTML 
   դA make allD
   
2.5 էAw

   ѥMw˪ HTML s javacgitest.html, javaemailtest.html H
   javahtmltest.htmlD pGAbe`ϥ make allA̷|bA Makefile
   w WEBDIR ؿD pGOAAiH make test q
   javacgitest.html-dist, javaemailtest.html-dist H
   javahtmltest.html-dist ӫإߥ̡D
   
   ATwAw˥iHTB@AAiƱqA JAVACGI ؿ
   CGI_Test, Email_Test H HTML_Test OA٦q WEBDIR ؿ
   javacgitest.html, javaemailtest.html Hjavahtmltest.htmlA]̷|
   ӥuA޲z̤~ݱo쪺ϥΪ̸TD
   
3. ]wAH Java CGI { (²g)

    1. q [12]ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz. ^
       Java CGI MD(Xi|ܡD)
    2. γoӫOѶ}M:
gzip -dc java_cgi-0.5.tgz | tar -xvf -
       (pGXܤFANΨM̪D)
    3. קbsͪ java_cgi-0.5 ؿ̪ Makefile HŦXAtΡD
    4. H root A make installD oNsĶ Java {A[WAtίS
       wTæw˳\hɮסD pGAƱ֦媺 HTML HΤ@
       HTML դA make allD
    5. MӴNiHΤFD
       
4. @ Java CGI {

4.1 H CGI Ҧ Java {ê

   q web A Java {ӥDnD:
   
  A๳@ɤ@˰ Java {
  
   Aݰ Java ɨ(run-time)ĶåBHROC覡Ѫl
   O({һ)D b@ HTML form ̭SkѩROC web A
   D
   
  Java {S@몺kiHoܼ
  
   Java {һݪCܼƳݳQǤJD (b Java {)S C y
    getenv() ơD
   
4.2  Java CGI ѨMD

   FBzoǧxAڼgF@ CGI OZ{A Java ĶһݪT
   D
   
  java.cgi OZ
  
   oӫOZ޲z HTTP APAƱϥΪ Java CGI {ʡD q
   server ݴѪƤXAQn{W١D NҦܼƸ
   Np@ӼȦsɸ̡DMANoɮץHε{W٥[ROCA 
   Java ɨĶD
   
   java.cgi OZ]wPw˦b [13]MwAaؿ @`D
   
  q HTML form ޵o java.cgi
  
   ϥ Java CGI { HTML form HU覡w欰:
<form action="/cgi-bin/java.cgi/CGI_Test" method="POST">

   䤤 /cgi-bin/ OAaݪ CGI GiɥؿA java.cgi O\ڭ
   q web W Java {eݡA  CGI_Test O@ӱ檺 Java {W
   ٪ҤlD
   
5. ϥ Java CGI O

   ثe䴩TӥDnO -- [14]CGI, [15]Email H [16]HTMLD ڥb
   {O[WBz MIME 榡JPXO -- MIMEin & MIMEoutD
   
   ]@ǥΨӤ䴩MժOD [17]CGI_Test, [18]Email_Test H
   [19]HTML_Test OӴէAw˥ΪD A]iӷAۤv{ϥγo
   Ow_ID [20]Text OO Email P HTML OD
   
5.1 CGI

  Oyk
  
   public class CGI
   
  Oyz
  
   CGI OuCGI Tv -- web Aҳ]wܼƥHΫU
   submit ɥ form ҶǰeӪW/ƭȡD ҦTQsbO
   Properties D
   
   oO ``Orbits.net'' ](package)D
   
  Kn
     _________________________________________________________________
   
        CGI()         //  غcl
        getNames()    //  oW٪C
        getValue()    //  owW٪
     _________________________________________________________________
   
  аѾ\
  
   CGI_Test.
   
  CGI()
  
   ت
          غc@]ti CGI ƪ
          
   yk
          public CGI()
          
   yz
          @ CGI Qإ߮ɡAҦiΪ CGI ƳQsbs󪺧x
          sŶD
          
  getNames()
  
   ت
          CXwwqȪW١D
          
   yk
          public Enumeration getNames ()
          
   yz
          ѩҦwwqȪW٪CD
          
   ^ 
          ҦW٪ Enumeration D
          
  getValue()
  
   ت
          ^ҫw name  valueD
          
   yk
          public String getValue ( String name )
          
   yz
          oӤkѥ HTML form eJ names P values D
          
   Ѽ
          
        name
                ҿܪȡD
                
   ^ 
          @ӥ]tȪ String D
          
5.2 CGI_Test

   oOѨӥ\A@Ӧpϥ CGI OҤlHΤ@ӥΨӽTw Java
   CGI MB@`յ{D
   
  Kn
     _________________________________________________________________
   
        main()      //  Program main().
     _________________________________________________________________
   
  аѾ\
  
   [21]CGI.
   
  main()
  
   ت
           main() kD
          
   yk
          public static void main( String argv[] )
          
   yz
          oO CGI {JfAuL^iΪW/ƭȹP{ȪCD
          
   Ѽ 
          
        argv[]
                 java.cgi OZǤJѼơDثeϥΡD
                
5.3 Email

  Oyk
  
   public class Email extends Text
   
  Oyz
  
   T Text O add*() kҫإߡA[JqllMΪkD A
   TQe쥦تaD
   
   oO ``Orbits.net'' ]ˤD
   
  Kn
     _________________________________________________________________
   
        Email()      //  غcl
        send()       //  eXqllT
        sendTo()     //  W[Tتa
        subject()    //  ]wTDD
     _________________________________________________________________
   
  аѾ\
  
   Email_Test, Text.
   
  Email()
  
   ت
          إߤ@]tqllTD
          
   yk
          public Email()
          
   yz
          إߤ@ŪTHQѦOk[HD
          
   аѾ\
          Text.
          
  send()
  
   ت
          eXqllTD
          
   yk
          public void send ()
          
   yz
          ksƨðeXTDpGت}٥]wAN|ʧ@o͡D
          
  sendTo()
  
   ت
          W[TتaD
          
   yk
          public String sendTo ( String address )
          
   yz
          N address [JتaCD@qllتaƥجOS
          D Lڬ۫HpGAؤFLjCAANi|WLAl
          eNz{(MTA) ү౵jpΥΥAOD
          
   Ѽ
          
        address
                TeF@ӥتaD
                
  subject()
  
   ت
          ]wTDDD
          
   yk
          public void subject ( String subject )
          
   yz
          k]wqll Subject: D pGIsWL@HWA|
          γ̫@IsGD
          
   Ѽ
          
        subject
                Subject: 쪺rD
                
5.4 Email_Test

   oOѤ@Ӧpϥ Email OҤlHΤ@ӥΨӽTw Java CGI M
   B@`յ{D
   
  Kn
     _________________________________________________________________
   
        main()      //  Program main().
     _________________________________________________________________
   
  аѾ\
  
   [22]Email.
   
  main()
  
   ت
           main() kD
          
   yk
          public static void main( String argv[] )
          
   yz
          oO CGI {JfA^iΪW/ƭȹP{ȪCD ]
          NCe Email ܼƩҫw}D
          
   Ѽ 
          
        argv[]
                 java.cgi OZǤJѼơDثeϥΡD
                
5.5 HTML

  Oyk
  
   public class HTML extends Text
   
  Oyz
  
   T Text O add*() kҫإߡAå[J HTML MΪkD A
   TQe쥦تaD
   
   ثeA٨S~ˬdHTOCإߪkQHTǨϥΡD ]{
   ]p̥ۦTwSH HTML ykD
   
   oO ``Orbits.net'' ]ˤD
   
  Kn
     _________________________________________________________________
   
        HTML()                  //  غcl
        author()                //  ]w@̪Wr
        definitionList()        //  _l@wqC
        definitionListTerm()    //  bwqCW[@
        endList()               //  C
        listItem()              //  bCW[@
        send()                  //  eX HTML T
        title()                 //  ]wDr
     _________________________________________________________________
   
  аѾ\
  
   HTML_Test, Text.
   
  HTML()
  
   ت
          إߤ@]t HTML TD
          
   yk
          public HTML()
          
   yz
          إߤ@ŪTHQ HTML k[HD
          
   аѾ\
          Text.
          
  author()
  
   ت
          ]w@̪WrD
          
   yk
          public void author ( String author )
          
   yz
          N󪺧@̦Wr]w authorD
          
   Ѽ
          
        author
                Ψӧ@T@̪rD
                
   аѾ\
          title().
          
  definitionList()
  
   ت
          _l@wqCD
          
   yk
          public void definitionList ()
          
   yz
          _l@wqCD @өwqCO@دSOCACC@O
            ۩wq r ҧΦD @wqC_l(
          )@/rtHΤ@ endList() kIsD Ъ`NAثeC
          O_D
          
   аѾ\
          definitionListTerm(), endList(), listItem().
          
  definitionListTerm()
  
   ت
          bwqCW[@ءD
          
   yk
          public void definitionListTerm ()
          
   yz
          bwqCW[@ءD ثeCسrӦbkQ
          IsåBb listItem kQIse[JD
          
   аѾ\
          definitionList(), listItem().
          
  endList()
  
   ت
          @CD
          
   yk
          public void endList ()
          
   yz
          k@CD`NAثeCO_D
          
   аѾ\
          definitionList().
          
  listItem()
  
   ت
          bCW[@ءD
          
   yk
          public void listItem ()
          
          public void listItem ( String item )
          
          public boolean listItem ( String term, String item )
          
   yz
          bCW[@ءD pGϥβĤ@اΦAثeCتrb
          kQsæb䥦CkQIse[JD bĤGβĤTا
          Aitem rQwkѼƦӤObQ[JD ĤTاΦ
          OwqCMΨåBPɫwCػPwqrD
          
   Ѽ
          
        item
                CتrD
                
        term
                wqCسrD
                
   аѾ\
          definitionList(), definitionListTerm(), endList().
          
  send()
  
   ت
          eX HTML TD
          
   yk
          public void send ()
          
   yz
          eX HTML TD
          
  title()
  
   ت
          ]wDrD
          
   yk
          public void title ( String title )
          
   yz
          ]w󪺼DrD
          
   Ѽ
          
        title
                DrD
                
   аѾ\
          author().
          
5.6 HTML_Test

   oOѤ@Ӧpϥ HTML OҤlHΤ@ӥΨӽTw Java CGI M
   B@`յ{D
   
  Kn
     _________________________________________________________________
   
        main()      //  Program main().
     _________________________________________________________________
   
  аѾ\
  
   [23]HTML.
   
  main()
  
   ت
           main() kD
          
   yk
          public static void main( String argv[] )
          
   yz
          oO CGI {JfA^b@ HTML 󤤥iΪW/ƭȰtP
          {ȪCAñNC@W/ƭȰtܦb@wqC̡D
          
   Ѽ 
          
        argv[]
                 java.cgi OZǤJѼơDثeϥΡD
                
5.7 Text

  Oyk
  
   public abstract class Text
   
  Oyz
  
   O [24]Email P [25]HTML ¦OD THOkإߡA
   HlOkýsơD
   
   oO ``Orbits.net'' ]ˤD
   
  Kn
     _________________________________________________________________
   
        Text()            //  غcl
        add()             //  [Jr즹
        addLineBreak()    //  [JŸ
        addParagraph()    //  [JqŸ
     _________________________________________________________________
   
  аѾ\
  
   [26]Email, [27]HTML.
   
  add()
  
   ت
          bؤ[JrD
          
   yk
          public void add ( char addition )
          
          public void add ( String addition )
          
          public void add ( StringBuffer addition )
          
   yz
          boӤrتe[J additionD
          
   Ѽ
          
        addition
                [JrتrD
                
   аѾ\
          addLineBreak(), addParagraph().
          
  addLineBreak()
  
   ت
          jbثermD
          
   yk
          public void addLineBreak ()
          
   yz
          bثem[J@ŸD
          
   аѾ\
          add(), addParagraph().
          
  addParagraph()
  
   ت
          _l@sqD
          
   yk
          public void add ()
          
   yz
          bثerm_l@sqD
          
   аѾ\
          add(), addLineBreak().
          
6. Ӫpe

     * Email OXR:
       
        Email( int capacity )
                Ψӷڭ̪Dݦh֪ŶxsTɡD
                
        sendTo( String [] address )
                W[lqllتaCD
                
        sendCc( String address )
                W[@ӽƻsqllتaD
                
        sendCc( String [] address )
                W[ƻsqllتaCD
                
        sendBcc( String address )
                W[@ Blind Carbon-Copy qllتaD
                
        sendBcc( String [] address )
                W[ Blind Carbon-Copy qllتaC
                
     * HTML OXR:
       
        HTML( int capacity )
                Ψӷڭ̪Dݦh֪ŶxsTɡD
                
        public void unorderedList()
                _l@LǦCD
                
        public void orderedList()
                _l@ǦCD
                
        public void directoryList()
                _l@ؿCD
                
        public void menuList()
                _l@CD
                
        void anchor( String anchorName )
                w@(anchor)D
                
        void link( String url, String text )
                w@sD
                
        void applet( String url, String altText )
                w@ applet sD
                
     * \_ HTML CD
     * W[~ˬdXHjץ HTML C榡XǡD
     * ܼƸƪɮצm Makefile ]wD
     * hbBz GET kƶǰeɥX{ŦW/ƭȹD
     * Ҽ{ CGI @ java.util.Enumeration ɭḨǦaܼƦW١D
     * [J@ Test OAϥΥM󤤪CӤkD
     *  CGI_Test, Email_Test P HTML_Test pۤإߥHѰت
       iաD
     * pըϥΥM󪺨C@ӯSxD
       
7. קO

7.1  0.4  0.5 ק

     * sPѥHsXC
       
7.2  0.3  0.4 ק

     * WK HTML OѪ򥻥\D
     * W[ HTML_Test OP javahtmltest.html-distD
     * W[ HTML kӳBzwqCD
       
7.3  0.2  0.3 ק

     * [J Text P Email OD HTML ]Q[JAɥuO@pӤwD
     * NPOJ]ˤD DnOb Orbits.net.*A䴩ΪO
       Text b Orbits.text.TextD
     * N CGItest אּ CGI_TestD
     * W[ Email_Test OD
       
7.4  0.1  0.2 ק

     * ܼƳQJ@ȦsɤӤOjjJ Java ĶROC̡D CGI
       OP java.cgi wQקD
     * N javacgitest.html [JM󪺤@D
     * wˮɥ make ҭק諸ɮץH -dist өRWD

References

   1. mailto:javacgi-document@orbits.com
   2. http://www.phys.ntu.edu.tw/~cwhuang/pub/
   3. mailto:cwhuang@phys.ntu.edu.tw
   4. http://www.orbits.com/software/Java_CGI.html
   5. ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz
   6. http://www.orbits.com/software/Java_CGI.html
   7. mailto:javacgi-document@orbits.com
   8. mailto:javacgi-request@orbits.com
   9. file://localhost/tmp/zh-sgmltools.22000/Java-CGI-HOWTO.txt.html#install-short
  10. file://localhost/tmp/zh-sgmltools.22000/Java-CGI-HOWTO.txt.html#mailing-list
  11. ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz
  12. ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz
  13. file://localhost/tmp/zh-sgmltools.22000/Java-CGI-HOWTO.txt.html#make-programs
  14. file://localhost/tmp/zh-sgmltools.22000/Java-CGI-HOWTO.txt.html#cgi-class
  15. file://localhost/tmp/zh-sgmltools.22000/Java-CGI-HOWTO.txt.html#email-class
  16. file://localhost/tmp/zh-sgmltools.22000/Java-CGI-HOWTO.txt.html#html-class
  17. file://localhost/tmp/zh-sgmltools.22000/Java-CGI-HOWTO.txt.html#cgi-test-class
  18. file://localhost/tmp/zh-sgmltools.22000/Java-CGI-HOWTO.txt.html#email-test-class
  19. file://localhost/tmp/zh-sgmltools.22000/Java-CGI-HOWTO.txt.html#email-test-class
  20. file://localhost/tmp/zh-sgmltools.22000/Java-CGI-HOWTO.txt.html#text-class
  21. file://localhost/tmp/zh-sgmltools.22000/Java-CGI-HOWTO.txt.html#cgi-class
  22. file://localhost/tmp/zh-sgmltools.22000/Java-CGI-HOWTO.txt.html#email-class
  23. file://localhost/tmp/zh-sgmltools.22000/Java-CGI-HOWTO.txt.html#html-class
  24. file://localhost/tmp/zh-sgmltools.22000/Java-CGI-HOWTO.txt.html#email-class
  25. file://localhost/tmp/zh-sgmltools.22000/Java-CGI-HOWTO.txt.html#html-class
  26. file://localhost/tmp/zh-sgmltools.22000/Java-CGI-HOWTO.txt.html#email-class
  27. file://localhost/tmp/zh-sgmltools.22000/Java-CGI-HOWTO.txt.html#html-class
