








			     Java CGI HOWTO Ķ

		     @: David H. Silber dhs@orbits.com

		    Ķ: C.W.Huang cwhuang@phys.ntu.edu.tw

	     v0.4, 18 November 1996.  ½Ķ: 21-25 August 1997



				   Abstract

     p]wAAAϨϥ Java Ӽg CGI {AHΦp
     Java Ӽg CGI {D M HOWTO 󪺥تOΦb Linux
     @~tΤWAogSO峹ƹWPSw UNIX tεLD



1.  ²

ѩ Java ]p覡{]pvS²kiHotΪܼơD ѩ Java
oiu (JDK) إߪ覡AIs@ӵ{ϥΦhx(tokens)A oMзǪ
HTML forms/CGI B@覡tXD
@ǿkiHJAoǭAӧڴN@F䤤@ءDԱШUzD

1.1  wƪ

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

1.2  o

媺̷siHq: http://www.orbits.com/software/Java_CGI.html.

1.3  nM

Ҵ쪺nM󪺳̷siѰΦW FTP o ftp://ftp.orbits.com/pub/soft
ware/java_cgi-0.4.tgz.	oM]t媺 SGML lɡD

oǮM󪺴̾ GNU Library General Public License.  i Linux
HOWTO vnD

pGAϥΥnAбNYǰѦҫV http://www.orbits.com/soft
ware/Java_CGI.htmlA HK䥦H Java CGI OD

1.4  si@U

O Stellar Orbits Technology Services ҴѡD (Ш
http://www.orbits.com/ HFѧڭ̬O򪺡D)





Java CGI HOWTO Ķ							      1





Java CGI HOWTO Ķ							      2



2.  ]wAH Java CGI { (g)

"

o@`ЧAw˧ڪ Java CGI
MAHΤjqAAFѧA欰|ɭP򵲪GD
pGAuQw˵{ӤQFѬA ]wAH Java CGI {
(²g) (section 3., page 3)D

2.1  tλݨD

nӯbww Java {oiu㪺 UNIX  web AWwˡD
ڱN˦b apache A Debian Linux tΤWD
pGAoıLkbAAWB@AлPp: dhs@orbits.com.

OAJava ɴĶGOYO骺Ǫ -- pGANϥγ\h Java CGI
{ܧAinA MB  RAM AA̡D

2.2  Java CGI Un

ڼgUnNs Java CGIDAiq ftp://www.orbits.com/pub/soft
ware/java_cgi-0.4.tgz o(Xi|)D

2.3  Ѷ}l

@ӦXAؿNMѶ}D (pGA٨Sзǩmn骺aAګĳAb
/usr/local/srcD) γoӫOѶ}M:

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


o|ͤ@ӥs java_cgi-0.4 ؿ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/web/cgi-bin  cgi-bin ؿA
]ڥ /var/web/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åBN{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, javae
mailtest.html-dist H javahtmltest.html-dist ӫإߥ̡D








Java CGI HOWTO Ķ							      3



ATwAw˥iHTB@AAiƱqA JAVACGI ؿ CGI_Test,
Email_Test H HTML_Test OA٦q WEBDIR ؿ javacgitest.html, javae
mailtest.html Hjavahtml
test.htmlA]̷|ӥuA޲z̤~ݱo쪺ϥΪ̸TD


3.  ]wAH Java CGI { (²g)

"

  1.  q ftp://www.orbits.com/pub/software/java_cgi-0.4.tgz.  ^ Java CGI
      MD(Xi|ܡD)

  2.  γoӫOѶ}M:

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


      (pGXܤFANΨM̪D)

  3.  קbsͪ java_cgi-0.4 ؿ̪ Makefile HŦXAtΡD

  4.  H root A make installD oNsĶ Java
      {A[WAtίSwTæ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:

4.1.1  A๳@ɤ@˰ Java {

Aݰ Java ɨ(run-
time)ĶåBHROC覡ѪlO({һ)D b@ HTML form
̭SkѩROC web AD

4.1.2  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 ĶһݪTD

4.2.1  java.cgi OZ

oӫOZ޲z HTTP APAƱϥΪ Java CGI {ʡD q server
ݴѪƤXAQn{W١D








Java CGI HOWTO Ķ							      4



NҦܼƸƱNp@ӼȦsɸ̡DMANoɮץHε{W٥[ROCA
 Java ɨĶD

java.cgi OZ]wPw˦b MwAaؿ (section 2.4, page 2)
@`D

4.2.2  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 -- CGI (section 5.1, page 4), Email (section 5.3, page
6) H HTML (section 5.5, page 8)D ڥbҼ{O[WBz MIME
榡JPXO --     MIMEin & MIMEoutD

]@ǥΨӤ䴩MժOD CGI_Test (section 5.2, page 5), Email_Test (sec
tion 5.4, page 7) H HTML_Test (section 5.4, page 7) OӴէAw˥ΪD
A]iӷAۤv{ϥγoOw_ID Text (section 5.7, page 12)
OO Email P HTML OD

5.1  CGI

5.1.1  Oyk

public class CGI

5.1.2  Oyz

CGI OuCGI Tv -- web Aҳ]wܼƥHΫU submit ɥ
form ҶǰeӪW/ƭȡD ҦTQsbO Properties D

oO ``Orbits.net'' ](package)D

5.1.3  Kn

	  CGI() 	//  غcl
	  getNames()	//  oW٪C
	  getValue()	//  owW٪

5.1.4  аѾ\$3

CGI_Test.

5.1.5  CGI()










Java CGI HOWTO Ķ							      5



      ت
	    غc@]ti CGI ƪ

      yk
	    public CGI()

      yz
	    @ CGI Qإ߮ɡAҦiΪ CGI
	    ƳQsbs󪺧xsŶD

5.1.6  getNames()

      ت
	    CXwwqȪW١D

      yk
	    public Enumeration getNames ()

      yz
	    ѩҦwwqȪW٪CD

      ^
	    ҦW٪ Enumeration D

5.1.7  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

5.2.1  Kn

	  main()      //  Program main().











Java CGI HOWTO Ķ							      6



5.2.2  аѾ\$3

CGI (section 5.1, page 4).

5.2.3  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

5.3.1  Oyk

public class Email extends Text

5.3.2  Oyz

T Text O add*() kҫإߡA[JqllMΪkD
ATQe쥦تaD

oO ``Orbits.net'' ]ˤD

5.3.3  Kn

	  Email()      //  غcl
	  send()       //  eXqllT
	  sendTo()     //  W[Tتa
	  subject()    //  ]wTDD

5.3.4  аѾ\$3

Email_Test, Text.

5.3.5  Email()

      ت
	    إߤ@]tqllTD

      yk
	    public Email()

      yz
	    إߤ@ŪTHQѦOk[HD








Java CGI HOWTO Ķ							      7



      аѾ.if 1=2 .ds li*c-mark аѾ
	    Text.

5.3.6  send()

      ت
	    eXqllTD

      yk
	    public void send ()

      yz
	    ksƨðeXTDpGت}٥]wAN|ʧ@o͡D

5.3.7  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

5.3.8  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
MB@`յ{D








Java CGI HOWTO Ķ							      8



5.4.1  Kn

	  main()      //  Program main().

5.4.2  аѾ\$3

Email (section 5.3, page 6).

5.4.3  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

5.5.1  Oyk

public class HTML extends Text

5.5.2  Oyz

T Text O add*() kҫإߡAå[J HTML MΪkD
ATQe쥦تaD

ثeA٨S~ˬdHTOCإߪkQHTǨϥΡD
]{]p̥ۦTwSH HTML ykD

oO ``Orbits.net'' ]ˤD

5.5.3  Kn

	  HTML()		  //  غcl
	  author()		  //  ]w@̪Wr
	  definitionList()	  //  _l@wqC
	  definitionListTerm()	  //  bwqCW[@
	  endList()		  //  C
	  listItem()		  //  bCW[@
	  send()		  //  eX HTML T
	  title()		  //  ]wDr











Java CGI HOWTO Ķ							      9



5.5.4  аѾ\$3

HTML_Test, Text.

5.5.5  HTML()

      ت
	    إߤ@]t HTML TD

      yk
	    public HTML()

      yz
	    إߤ@ŪTHQ HTML k[HD

      аѾ.if 1=2 .ds li*c-mark аѾ
	    Text.

5.5.6  author()

      ت
	    ]w@̪WrD

      yk
	    public void author ( String author )

      yz
	    N󪺧@̦Wr]w authorD

      Ѽ

		  author
			Ψӧ@T@̪rD

      аѾ.if 1=2 .ds li*c-mark title().

5.5.7  definitionList()

      ت
	    _l@wqCD

      yk
	    public void definitionList ()

      yz
	    _l@wqCD @өwqCO@دSOCACC@O
	     ۩wq r ҧΦD
	    @wqC_l(ܤ)@/rtHΤ@ endList()
	    kIsD Ъ`NAثeCO_D

      аѾ.if 1=2 .ds li*c-mark аѾ
	    definitionListTerm(), endList(), listItem().










Java CGI HOWTO Ķ							     10



5.5.8  definitionListTerm()

      ت
	    bwqCW[@ءD

      yk
	    public void definitionListTerm ()

      yz
	    bwqCW[@ءD
	    ثeCسrӦbkQIsåBb listItem
	    kQIse[JD

      аѾ.if 1=2 .ds li*c-mark аѾ
	    definitionList(), listItem().

5.5.9  endList()

      ت
	    @CD

      yk
	    public void endList ()

      yz
	    k@CD`NAثeCO_D

      аѾ.if 1=2 .ds li*c-mark аѾ
	    definitionList().

5.5.10	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تrbkQsæb䥦CkQIse[JD
	    bĤGβĤTاΦAitem
	    rQwkѼƦӤObQ[JD
	    ĤTاΦOwqCMΨåBPɫwCػPwqrD

      Ѽ










Java CGI HOWTO Ķ							     11



		  item
			CتrD

		  term
			wqCسrD

      аѾ.if 1=2 .ds li*c-mark definitionList(), definitionListTerm(),
	    endList().

5.5.11	send()

      ت
	    eX HTML TD

      yk
	    public void send ()

      yz
	    eX HTML TD

5.5.12	title()

      ت
	    ]wDrD

      yk
	    public void title ( String title )

      yz
	    ]w󪺼DrD

      Ѽ

		  title
			DrD

      аѾ.if 1=2 .ds li*c-mark author().

5.6  HTML_Test

oOѤ@Ӧpϥ HTML OҤlHΤ@ӥΨӽTw Java CGI
MB@`յ{D

5.6.1  Kn

	  main()      //  Program main().

5.6.2  аѾ\$3

HTML (section 5.5, page 8).

5.6.3  main()










Java CGI HOWTO Ķ							     12



      ت
	     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

5.7.1  Oyk

public abstract class Text

5.7.2  Oyz

O Email (section 5.3, page 6) P HTML (section 5.5, page 8) ¦OD
THOkإߡAåHlOkýsơD

oO ``Orbits.net'' ]ˤD

5.7.3  Kn

	  Text()	    //	غcl
	  add() 	    //	[Jr즹
	  addLineBreak()    //	[JŸ
	  addParagraph()    //	[JqŸ

5.7.4  аѾ\$3

Email (section 5.3, page 6), HTML (section 5.5, page 8).

5.7.5  add()

      ت
	    bؤ[JrD

      yk
	    public void add ( char addition )


	    public void add ( String addition )


	    public void add ( StringBuffer addition )










Java CGI HOWTO Ķ							     13



      yz
	    boӤrتe[J additionD

      Ѽ

		  addition
			[JrتrD

      аѾ.if 1=2 .ds li*c-mark addLineBreak(), addParagraph().

5.7.6  addLineBreak()

      ت
	    jbثermD

      yk
	    public void addLineBreak ()

      yz
	    bثem[J@ŸD

      аѾ.if 1=2 .ds li*c-mark аѾ
	    add(), addParagraph().

5.7.7  addParagraph()

      ت
	    _l@sqD

      yk
	    public void add ()

      yz
	    bثerm_l@sqD

      аѾ.if 1=2 .ds li*c-mark аѾ
	    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








Java CGI HOWTO Ķ							     14



	   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











Java CGI HOWTO Ķ							     15



7.1   0.3  0.4 ק

    WK HTML OѪ򥻥\D

    W[ HTML_Test OP javahtmltest.html-distD

    W[ HTML kӳBzwqCD

7.2   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.3   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



































Java CGI HOWTO Ķ							     16





































































				   CONTENTS



1. ² ..................................................................... 1
   1.1 wƪ ............................................................. 1
   1.2 o ............................................................. 1
   1.3 nM ............................................................. 1
   1.4 si@U ............................................................. 1

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

3. ]wAH Java CGI { (²g) .................................. 3

4. @ Java CGI { ................................................... 3
   4.1 H CGI Ҧ Java {ê ...................................... 3
   4.2  Java CGI ѨMD ............................................... 3

5. ϥ Java CGI O ....................................................... 4
   5.1 CGI .................................................................. 4
   5.2 CGI_Test ............................................................. 5
   5.3 Email ................................................................ 6
   5.4 Email_Test ........................................................... 7
   5.5 HTML ................................................................. 8
   5.6 HTML_Test ........................................................... 11
   5.7 Text ................................................................ 12

6. Ӫpe .............................................................. 13

7. קO ............................................................ 14
   7.1  0.3  0.4 ק ................................................ 15
   7.2  0.2  0.3 ק ................................................ 15
   7.3  0.1  0.2 ק ................................................ 15


















				       i


