








			     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

     Ľ趨ŷʹʹ Java д CGI ʽԼ
     Java д CGI ʽ Ȼ HOWTO ļĿ Linux
     ҵϵͳϣƪرʵض汾 UNIX ϵͳ޹أ



1.  

 Java Ʒʽʽʦûм׵ķȡϵͳĻ  Java
չ (JDK) ķʽһʽʹöر(tokens) ͱ׼
HTML forms/CGI ʽϣ
һЩ취Կ˷ЩƣҾʵһ֣

1.1  Ԥ֪ʶ

Ҽٶ HTML  CGI һ֪ʶ˽ HTTP
ŷ֪ʶ ҲӦ֪д Java ʽЩû壮

1.2  ļ

ĵ°汾ԴӴҵ: http://www.orbits.com/software/Java_CGI.html.

1.3  ׼

ᵽ׼°汾 FTP ȡ ftp://ftp.orbits.com/pub/soft
ware/java_cgi-0.4.tgz.	׼ĵ SGML ԭʼ

Щ׼ɢ GNU Library General Public License.  Ŀ Linux
HOWTO İȨɢ

ʹñ壬뽫ĳЩοָ http://www.orbits.com/soft
ware/Java_CGI.html Աҵ Java CGI 

1.4  һ

 Stellar Orbits Technology Services ṩ (뵽
http://www.orbits.com/ ˽ʲģ)





Java CGI HOWTO 							      1





Java CGI HOWTO 							      2



2.  趨ŷִ Java CGI ʽ (ƪ)

"

һڽ㰲װҵ Java CGI
׼ԼĽܹͣ˽Ϊᵼʲ
ֻ밲װʽ˽Ϊʲᣬֱ 趨ŷִ Java CGI ʽ
(ƪ) (section 3., page 3)

2.1  ϵͳ

ӦѰװ Java ʽչߵκ UNIX  web ŷϰװ
ҽװִ apache ŷ Debian Linux ϵͳϣ
㷢޷ŷ: dhs@orbits.com.

ҵǣJava ִʱڽƺǳԼĹ -- 㽫ʹ Java CGI
ʽĻҪٶ MB  RAM ŷ

2.2  Java CGI 

дĸͽ Java CGIɴ ftp://www.orbits.com/pub/soft
ware/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  ıĿ¼

"

 Java CGI ʽס һ˵ϣں cgi-bin
ƽеĿ¼ ҵ apache ŷ趨ʹ /var/web/cgi-bin Ϊ cgi-bin Ŀ¼
 /var/web/javacgi Ϊ Java CGI ʽĵط ܲý
Java CGI ʽŽĳһѴڵ CLASSPATH Ŀ¼ ༭ Makefile
Ӧϵͳãȷ root ǩȻִ make install ⽫ Java
ʽ޸ java.cgi ָԷϵͳҽʽװʵλã
ϣӵбĵ HTML 汾Լһ HTML ļ make all

2.5  İװ

"

ɱ׼װ HTML ļ javacgitest.html, javaemailtest.html Լ
javahtmltest.html ǰʹ make allǻ Makefile ָ
WEBDIR Ŀ¼У ǣִ make test  javacgitest.html-dist, javae
mailtest.html-dist Լ javahtmltest.html-dist ǣ








Java CGI HOWTO 							      3



ȷİװȷᣬϣ JAVACGI Ŀ¼Ƴ CGI_Test,
Email_Test Լ HTML_Test 𣬻д WEBDIR Ŀ¼Ƴ javacgitest.html, javae
mailtest.html Լjavahtml
test.htmlΪǻʾӦֻŷ߲ſõʹѶ


3.  趨ŷִ Java CGI ʽ (ƪ)

"

  1.   ftp://www.orbits.com/pub/software/java_cgi-0.4.tgz.  ȡ Java CGI
      ׼(汾ܻı䣮)

  2.  ָ⿪׼:

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


      (汾ıˣ͸׼ģ)

  3.  ޸² java_cgi-0.4 Ŀ¼ Makefile Էϵͳ

  4.   root ݣִ make install ⽫ Java
      ʽϵͳضѶװ൵ ϣӵбĵ HTML
      汾Լһ HTML ļ make all

  5.  ȻӦþͿˣ


4.  ִһ Java CGI ʽ

4.1   CGI ģʽִ Java ʽϰ

 web ŷִ Java ʽҪ:

4.1.1  㲻һִеһִ Java ʽ

ִ Java ִʱ(run-
time)еķʽṩʼ(ʽִ) һ HTML form
ûа취ṩи web ŷ

4.1.2  Java ʽûһķȡû

Java ʽÿ豻룮 ( Java ʽ)û C Ե
getenv() 

4.2  ִ Java CGI 

Ϊ˴Щѣдһ CGI ָʽṩ Java Ѷ

4.2.1  java.cgi ָ

ָ HTTP ŷϣʹõ Java CGI ʽ֮Ļ  server
ṩȡҪִгʽƣ








Java CGI HOWTO 							      4



еĻϽ۵һݴ浵ȻᣬԼʽƼУ
ִ Java ִʱ̽

java.cgi ָ趨밲װ ıĿ¼ (section 2.4, page 2)
һ˵

4.2.2   HTML form  java.cgi

ʹ Java CGI ʽ HTML form ķʽָΪ:

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


 /cgi-bin/ 㱾ض˵ CGI λִеĿ¼ java.cgi Ǵ web
ִ Java ʽǰˣ  CGI_Test һִе Java ʽƵӣ


5.  ʹ Java CGI 

ĿǰΪֹ֧ԮҪ -- CGI (section 5.1, page 4), Email (section 5.3, page
6) Լ HTML (section 5.5, page 8) ڿǷֱϴ MIME
ʽ --     MIMEin & MIMEout

ҲһЩ֧ԮͲԵ CGI_Test (section 5.2, page 5), Email_Test (sec
tion 5.4, page 7) Լ HTML_Test (section 5.4, page 7) İװõģ
ҲԼʽʹЩ㣮 Text (section 5.7, page 12)
 Email  HTML Ļ

5.1  CGI

5.1.1  ﷨

public class CGI

5.1.2  

CGI еġCGI Ѷ -- web ŷ趨ĻԼ submit ʱ
form /ֵ еѶ Properties У

λ ``Orbits.net'' װ(package)У

5.1.3  ԱժҪ

	  CGI() 	//  
	  getNames()	//  ȡƵĴ
	  getValue()	//  ȡָƵֵ

5.1.4  

CGI_Test.

5.1.5  CGI()










Java CGI HOWTO 							      5



      Ŀ
	    һ CGI ϵ

      ﷨
	    public CGI()

      
	    һ CGI ʱпõ CGI
	    ϱľֲռУ

5.1.6  getNames()

      Ŀ
	    гѶӦֵƣ

      ﷨
	    public Enumeration getNames ()

      
	    ṩѶӦֵƵб

      
	    Ƶ Enumeration 

5.1.7  getValue()

      Ŀ
	    ȡָӦ name  value

      ﷨
	    public String getValue ( String name )

      
	    ṩ HTML form  names  values ֮ĶӦ

      
	     "

		  name
			ѡļֵ

        һӦֵ String 

5.2  CGI_Test

ṩܣһʹ CGI Լһȷ Java CGI
׼ĲԳʽ

5.2.1  ԱժҪ

	  main()      //  Program main().











Java CGI HOWTO 							      6



5.2.2  

CGI (section 5.1, page 4).

5.2.3  main()

      Ŀ
	    ṩ main() 

      ﷨
	    public static void main( String argv[] )

      
	     CGI ʽڣֻؿõ/ֵֵб

      

		  argv[]
			 java.cgi ָ崫ĲĿǰδʹã

5.3  Email

5.3.1  ﷨

public class Email extends Text

5.3.2  

ѶϢ Text  add*() ʼרõķ
ᣬѶϢ͵Ŀĵأ

λ ``Orbits.net'' װУ

5.3.3  ԱժҪ

	  Email()      //  
	  send()       //  ͳʼѶϢ
	  sendTo()     //  ѶϢĿĵ
	  subject()    //  趨ѶϢ

5.3.4  

Email_Test, Text.

5.3.5  Email()

      Ŀ
	    һʼѶϢ

      ﷨
	    public Email()

      
	    һյѶϢɴ𷽷ɣ








Java CGI HOWTO 							      7



      
	    Text.

5.3.6  send()

      Ŀ
	    ͳʼѶϢ

      ﷨
	    public void send ()

      
	    ŲͳѶϢĿλַδ趨ж

5.3.7  sendTo()

      Ŀ
	    ӱѶϢĿĵأ

      ﷨
	    public String sendTo ( String address )

      
	     address
	    뵽ĿĵбУһݵʼĿĵصĿûƵģ
	    㽨˹б㽫ܻᳬʼʹʽ(MTA)
	    ܽܵĴСùļ壮

      

		  address
			ѶϢʹһĿĵأ

5.3.8  subject()

      Ŀ
	    趨ѶϢ⣮

      ﷨
	    public void subject ( String subject )

      
	    趨ʼ Subject: λ
	    гһϣʹһκеĽ

      

		  subject
			Subject: λ֣

5.4  Email_Test

ṩһʹ Email Լһȷ Java CGI
׼ĲԳʽ








Java CGI HOWTO 							      8



5.4.1  ԱժҪ

	  main()      //  Program main().

5.4.2  

Email (section 5.3, page 6).

5.4.3  main()

      Ŀ
	    ṩ main() 

      ﷨
	    public static void main( String argv[] )

      
	     CGI ʽڣؿõ/ֵֵб
	    Ҳб͵ Email ָλַ

      

		  argv[]
			 java.cgi ָ崫ĲĿǰδʹã

5.5  HTML

5.5.1  ﷨

public class HTML extends Text

5.5.2  

ѶϢ Text  add*()  HTML רõķ
ᣬѶϢ͵Ŀĵأ

Ŀǰûдȷбķȷ˳ʹã
˳ʽ߱ȷûΥ HTML ﷨

λ ``Orbits.net'' װУ

5.5.3  ԱժҪ

	  HTML()		  //  
	  author()		  //  趨ļߵ
	  definitionList()	  //  ʼһб
	  definitionListTerm()	  //  ڶбһĿ
	  endList()		  //  б
	  listItem()		  //  бһĿ
	  send()		  //  ͳ HTML ѶϢ
	  title()		  //  趨ļ











Java CGI HOWTO 							      9



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

      Ŀ
	    ʼһб

      ﷨
	    public void definitionList ()

      
	    ʼһб һбһرббеÿһ
	    Ŀ   γɵģ
	    һбʼӦ()һĿ/Լһ endList()
	    ĺУ ע⣬Ŀǰбǳ״ģ

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










Java CGI HOWTO 							     10



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 )

      
	    бһĿ
	    ʹõһʽĿǰбĿӦڴ˷Ტκбǰ룮
	    ڵڶʽУitem
	    ֱָΪĲᱻ룮
	    ʽǶбרòͬʱָбĿ붨ֲݣ

      










Java CGI HOWTO 							     11



		  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()      //  Program main().

5.6.2  

HTML (section 5.5, page 8).

5.6.3  main()

      Ŀ
	    ṩ main() 








Java CGI HOWTO 							     12



      ﷨
	    public static void main( String argv[] )

      
	     CGI ʽڣһ HTML
	    ļпõ/ֵֵбÿһ/ֵʾһбԪ

      

		  argv[]
			 java.cgi ָ崫ĲĿǰδʹã

5.7  Text

5.7.1  ﷨

public abstract class Text

5.7.2  

Ϊ Email (section 5.3, page 6)  HTML (section 5.5, page 8) Ļ
ѶϢԴķķɲţ

λ ``Orbits.net'' װУ

5.7.3  ԱժҪ

	  Text()	    //	
	  add() 	    //	ֵ
	  addLineBreak()    //	з
	  addParagraph()    //	ֶη

5.7.4  

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

5.7.5  add()

      Ŀ
	    ڴĿм֣

      ﷨
	    public void add ( char addition )


	    public void add ( String addition )


	    public void add ( StringBuffer addition )

      
	    Ŀм addition










Java CGI HOWTO 							     13



      

		  addition
			Ŀ֣

      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 )
		 ԭʼʼĿĵصб

	   sendCc( String address )
		 һƵʼĿĵأ

	   sendCc( String [] address )
		 ӸƵʼĿĵصб

	   sendBcc( String address )
		 һ Blind Carbon-Copy ĵʼĿĵأ








Java CGI HOWTO 							     14



	   sendBcc( String [] address )
		  Blind Carbon-Copy ĵʼĿĵб

    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 )
		 ָһ applet ᣮ

    ״ HTML б

    Ӵǿ HTML бʽ˳

    ϵĵλӦ Makefile 趨

    ȥڴ GET ϴʱ֮ٵĿ/ֵԣ

     CGI ʵ java.util.Enumeration ṩƣ

    һ Test ʹñ׼еÿ

    ˵ CGI_Test, Email_Test  HTML_Test
     ໥ṩĿõĽԣ

    ˵βʹñ׼ÿһ磮


7.  汾޸ļ¼

7.1   0.3  0.4 ޸

     HTML ṩĻܣ










Java CGI HOWTO 							     15



     HTML_Test  javahtmltest.html-dist

     HTML б

7.2   0.2  0.3 ޸

     Text  Email  HTML Ҳ룬ʱֻһСݶѣ

    ͬװУ Ҫ Orbits.net.*֧Ԯõ Text 
     Orbits.text.Text

     CGItest Ϊ CGI_Test

     Email_Test 

7.3   0.1  0.2 ޸

    һݴ浵жǿ Java  CGI 
     java.cgi ѱ޸ģ

     javacgitest.html ļΪ׼һݣ

    װʱ make ޸ĵĵȫԽβ -dist 







































Java CGI HOWTO 							     16





































































				   CONTENTS



1.  ..................................................................... 1
   1.1 Ԥ֪ʶ ............................................................. 1
   1.2 ļ ............................................................. 1
   1.3 ׼ ............................................................. 1
   1.4 һ ............................................................. 1

2. 趨ŷִ Java CGI ʽ (ƪ) .................................. 2
   2.1 ϵͳ ............................................................. 2
   2.2 Java CGI  .................................................... 2
   2.3 ⿪ԭʼ ........................................................... 2
   2.4 ıĿ¼ ................................................. 2
   2.5 İװ ......................................................... 2

3. 趨ŷִ Java CGI ʽ (ƪ) .................................. 3

4. ִһ Java CGI ʽ ................................................... 3
   4.1  CGI ģʽִ Java ʽϰ ...................................... 3
   4.2 ִ Java CGI  ............................................... 3

5. ʹ Java CGI  ....................................................... 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. δļƻ .............................................................. 13

7. 汾޸ļ¼ ............................................................ 14
   7.1  0.3  0.4 ޸ ................................................ 14
   7.2  0.2  0.3 ޸ ................................................ 15
   7.3  0.1  0.2 ޸ ................................................ 15


















				       i


