\documentclass[letterpaper]{article}
\nonstopmode
\akai
\usepackage{linuxdoc-sgml}
\usepackage{qwertz}
\usepackage{url}
\usepackage[latin1]{inputenc}
\usepackage{t1enc}
\usepackage[english]{babel}
\usepackage{epsfig}
\usepackage{null}
\def\addbibtoc{
\addcontentsline{toc}{section}{\numberline{\mbox{}}\relax\bibname}
}%end-preamble
\setcounter{page}{1}
\title{Java CGI HOWTO ÖÐÒë°æ}
\author{×÷Õß: David H. Silber {\ttfamily \onlynameurl{javacgi-document@orbits.com}}\\ 
ÒëÕß: \onlynameurl{»ÆÖ¾Î°} {\ttfamily \onlynameurl{cwhuang@phys.ntu.edu.tw}}}
\date{v0.5, 1 December 1998
·­ÒëÈÕÆÚ: 17 December 1998}
\abstract{±¾ÎÄ½âÊÍÈçºÎÉè¶¨ÄãµÄËÅ·þÆ÷£¬Ê¹ÆäÄÜÊ¹ÓÃ Java À´Ð´ CGI ³ÌÊ½£¬ÒÔ¼°ÈçºÎÓÃ Java À´Ð´ CGI ³ÌÊ½£®ËäÈ» HOWTO ÎÄ¼þµÄÄ¿µÄÊÇÓÃÔÚ Linux ×÷ÒµÏµÍ³ÉÏ£¬µ«ÕâÆªÌØ±ðµÄÎÄÕÂÊÂÊµÉÏÓëÌØ¶¨°æ±¾µÄ UNIX ÏµÍ³ÎÞ¹Ø£®}


\begin{document}
\maketitle
\tableofcontents

\section{¼ò½é}

ÓÉì¶ Java µÄÉè¼Æ·½Ê½³ÌÊ½Éè¼ÆÊ¦Ã»ÓÐ¼òÒ×µÄ·½·¨¿ÉÒÔÈ¡µÃÏµÍ³µÄ»·¾³±äÊý£®
ÓÉì¶ Java ·¢Õ¹¹¤¾ß (JDK) ½¨Á¢µÄ·½Ê½£¬ºô½ÐÒ»¸ö³ÌÊ½±ØÐëÊ¹ÓÃ¶àÖØ±íáç(tokens)£¬
ÕâºÍ±ê×¼µÄ HTML forms/CGI ÔË×÷·½Ê½²»Ò×ÅäºÏ£®
ÓÐÒ»Ð©°ì·¨¿ÉÒÔ¿Ë·þÕâÐ©ÏÞÖÆ£¬¶øÎÒ¾ÍÊµ×÷ÁËÆäÖÐÒ»ÖÖ£®ÏêÇéÇë¼ûÏÂÊö£®

ÎÒÐ´ÏÂÇ°¶ÎµÄÊ±¼äÊÇ 1996. µ½ÏÖÔÚ Java µÄ¼¼ÊõÒÑ¾­ÓÐºÜ´óµÄ¸Ä±äÁË¡£
Ä¿Ç°¿ÉÄÜÓÐ¸üºÃµÄ·½·¨À´Ö´ÐÐËÅ·þÆ÷¶ËµÄ Java ³ÌÊ½ -- Ò²ÐíÄãÓ¦¸Ã¿´Ò»¿´ servlets(?).




\subsection{Ô¤±¸ÖªÊ¶}

ÎÒ¼Ù¶¨ÄãÓÐ HTML Óë CGI ¸ÅÄîµÄÒ»°ãÖªÊ¶£¬¶øÇÒÁË½â¹Øì¶ÄãµÄ HTTP ËÅ·þÆ÷µÄ×î»ù±¾ÖªÊ¶£®
ÄãÒ²Ó¦¸ÃÖªµÀÈçºÎÐ´ Java ³ÌÊ½£¬·ñÔòÕâÐ©¶¼Ã»ÓÐÒâÒå£®




\subsection{Õâ·ÝÎÄ¼þ}

±¾ÎÄµÄ×îÐÂ°æ±¾¿ÉÒÔ´Ó´ËÕÒµ½:
\onlynameurl{http://www.orbits.com/software/Java\_CGI.html}.




\subsection{ÈíÌåÌ×¼þ}

±¾ÎÄËùÌáµ½µÄÈíÌåÌ×¼þµÄ×îÐÂ°æ±¾¿ÉÓÉÄäÃû FTP È¡µÃ
\onlynameurl{ftp://ftp.orbits.com/pub/software/java\_cgi-0.5.tgz}.
ÕâÌ×¼þ°üº¬±¾ÎÄµÄ SGML Ô­Ê¼µµ£®

ÕâÐ©Ì×¼þµÄÉ¢²¼±ØÐëÒÀ¾Ý GNU Library General Public License.
±¾ÎÄ¿ÉÒÀ Linux HOWTO µÄ°æÈ¨ÉùÃ÷É¢²¼£®

Èç¹ûÄãÊ¹ÓÃ±¾ÈíÌå£¬ÇëÖÆ×÷Ò»Ð©²Î¿¼Ö¸Ïò \onlynameurl{http://www.orbits.com/software/Java\_CGI.html}£¬
ÒÔ±ãÈÃÆäËüÈËÄÜÕÒµ½ Java CGI µÄÀà±ð£®

ÎÒÒÑ¾­Ã»ÓÐÊ±¼äÔÙÈ¥Î¬»¤Õâ¸öÌ×¼þ£¬Òò´ËÕâ»òÐíÊÇ×îááÒ»°æÁË¡£
Èç¹ûÓÐÈË·Ç³£µØÏ²»¶Õâ¸ö³ÌÊ½£¬¶øÏë½ÓÊÖÎ¬»¤£¬ÇëÓëÎÒÁªÂç:
{\ttfamily \onlynameurl{javacgi-document@orbits.com}}




\subsection{The Mailing List
\label{mailing-list}}

ÎÒÒÑ¾­½¨ÁËÒ»¸ö majordomo Í¨ÐÅÂÛÌ³ÈÃÊ¹ÓÃ±¾³ÌÊ½µÄÈËÃÇ¿ÉÒÔ»¥Ïà°ïÃ¦½â¾öÎÊÌâ¡£
ÇëËÍÐÅ¼þµ½
{\ttfamily \onlynameurl{javacgi-request@orbits.com}}
ÄÚÈÝ°üº¬ {\itshape subscribe\/} Õâ¸ö×Ö¡£




\section{Éè¶¨ËÅ·þÆ÷ÒÔÖ´ÐÐ Java CGI ³ÌÊ½ (½âÊÍÆª)
\label{install-long}}

ÕâÒ»½Ú½ÌÄã°²×°ÎÒµÄ {\itshape Java CGI\/} Ì×¼þ£¬ÒÔ¼°´óÁ¿µÄ½âÊÍ£¬ÈÃÄãÄÜ¹»ÁË½âÄãµÄÐÐÎª»áµ¼ÖÂÊ²÷á½á¹û£®
Èç¹ûÄãÖ»Ïë°²×°³ÌÊ½¶ø²»ÏëÁË½âÎªÊ²÷á£¬Ö±½ÓÌøµ½ \ref{install-short} {(Éè¶¨ËÅ·þÆ÷ÒÔÖ´ÐÐ Java CGI ³ÌÊ½ (¼òÂÔÆª))}£®




\subsection{ÏµÍ³ÐèÇó}

±¾ÈíÌåÓ¦¸ÃÄÜÔÚÒÑ°²×° Java ³ÌÊ½·¢Õ¹¹¤¾ßµÄÈÎºÎÀà UNIX µÄ web ËÅ·þÆ÷ÉÏ°²×°£®
ÎÒ½«Ëü×°ÔÚÖ´ÐÐ {\itshape apache\/} ËÅ·þÆ÷µÄ {\itshape Debian Linux\/} ÏµÍ³ÉÏ£®
Èç¹ûÄã·¢¾õËüÎÞ·¨ÔÚÄãµÄËÅ·þÆ÷ÉÏÔË×÷£¬ÇëÀûÓÃÍ¨ÐÅÂÛÌ³.
Ï¸½ÚÇë¼û \ref{mailing-list} {(The Mailing List)}.

²»ÐÒµÄÊÇ£¬Java Ö´ÐÐÊ±ÆÚ½âÒëÆ÷ËÆºõÊÇ³Ô¼ÇÒäÌåµÄ¹ÖÎï -- 
Èç¹ûÄã½«Ê¹ÓÃÐí¶à Java CGI ³ÌÊ½µÄ»°Äã¿ÉÄÜÒªÔÙ¶ªÊý MB µÄ RAM µ½ÄãµÄËÅ·þÆ÷Àï£®




\subsection{Java CGI ¸¨ÖúÈíÌå}

ÎÒÐ´µÄ¸¨ÖúÈíÌå¾Í½Ð×ö {\itshape Java CGI\/}£®Äã¿É´Ó 
\onlynameurl{ftp://ftp.orbits.com/pub/software/java\_cgi-0.5.tgz}
È¡µÃ(°æ±¾ºÅÂë¿ÉÄÜ»á¸Ä±ä)£®




\subsection{½â¿ªÔ­Ê¼µµ}

ÕÒÒ»¸öºÏÊÊµÄÄ¿Â¼½«Ì×¼þ½â¿ª£®
(Èç¹ûÄã»¹Ã»ÓÐ±ê×¼·ÅÖÃÈíÌåµÄµØ·½£¬ÎÒ½¨ÒéÄã·ÅÔÚ {\ttfamily /usr/local/src}£®)
ÓÃÕâ¸öÖ¸Áî½â¿ªÌ×¼þ:
\begin{verbatim}
gzip -dc java_cgi-0.5.tgz | tar -xvf -
\end{verbatim}

Õâ»á²úÉúÒ»¸ö½Ð {\ttfamily java\_cgi-0.5} µÄÄ¿Â¼£®
ÔÚÄÇÀïÄã¿ÉÒÔÕÒµ½±¾ÎÄÆäËüµØ·½Ìáµ½µÄµµ°¸£®
(Èç¹û°æ±¾ºÅÂë¸Ä±äÁË£¬¾Í¸ÄÓÃÄÇÌ×¼þÀïµÄ£®)




\subsection{¾ö¶¨ÄãµÄ±¾µØÄ¿Â¼²ßÂÔ\label{make-programs}}

Äã±ØÐë¾ö¶¨ÈÃÄãµÄ Java CGI ³ÌÊ½×¡ÔÚÄÇÀï£®
Ò»°ãÀ´Ëµ£¬Äã»áÏ£Íû·ÅÔÚºÍÄãµÄ {\ttfamily cgi-bin} Æ½ÐÐµÄÄ¿Â¼£®
ÎÒµÄ {\itshape apache\/} ËÅ·þÆ÷Éè¶¨Ê¹ÓÃ {\ttfamily /var/www/cgi-bin} Îª {\ttfamily cgi-bin} Ä¿Â¼£¬
Òò´ËÎÒÓÃ {\ttfamily /var/www/javacgi} ×÷Îª·ÅÖÃ Java CGI ³ÌÊ½µÄµØ·½£®
Äã¿ÉÄÜ²»»áÏëÈÃ½«ÄãµÄ Java CGI ³ÌÊ½·Å½øÄ³Ò»ÒÑ´æÔÚµÄ {\ttfamily CLASSPATH} Ä¿Â¼£®
±à¼­ Makefile À´·´Ó¦ÄãµÄÏµÍ³ÅäÖÃ£®È·¶¨ÄãÓÃ root Ç©ÈëÈ»ááÖ´ÐÐ {\ttfamily make install}£®
Õâ½«±àÒë Java ³ÌÊ½£¬ÐÞ¸Ä {\ttfamily java.cgi} Ö¸Áî¸åÒÔ·ûºÏÄãµÄÏµÍ³£¬²¢ÇÒ½«³ÌÊ½°²×°½øÊÊµ±µÄÎ»ÖÃ£®
Èç¹ûÄãÏ£ÍûÓµÓÐ±¾ÎÄµÄ HTML °æ±¾ÒÔ¼°Ò»·Ý HTML ²âÊÔÎÄ¼þ£¬¸ÄÓÃ {\ttfamily make all}£®




\subsection{²âÊÔÄãµÄ°²×°\label{install-test}}

ÓÉ±¾Ì×¼þ°²×°µÄ HTML ÎÄ¼þ½Ð×ö {\ttfamily javacgitest.html}, {\ttfamily javaemailtest.html} ÒÔ¼° {\ttfamily javahtmltest.html}£®
Èç¹ûÄãÔÚÇ°½ÚÊ¹ÓÃ {\ttfamily make all}£¬ËüÃÇ»á·ÅÔÚÄãì¶ Makefile ÖÐÖ¸¶¨µÄ {\ttfamily WEBDIR} Ä¿Â¼ÖÐ£®
Èç¹û²»ÊÇ£¬Äã¿ÉÒÔÖ´ÐÐ {\ttfamily make test} ´Ó {\ttfamily javacgitest.html-dist}, {\ttfamily javaemailtest.html-dist} ÒÔ¼° {\ttfamily javahtmltest.html-dist} À´½¨Á¢ËüÃÇ£®

µ±ÄãÈ·¶¨ÄãµÄ°²×°¿ÉÒÔÕýÈ·ÔË×÷áá£¬Äã¿ÉÄÜÏ£Íû´ÓÄãµÄ JAVACGI Ä¿Â¼ÒÆ³ý {\ttfamily CGI\_Test}, {\ttfamily Email\_Test} ÒÔ¼° {\ttfamily HTML\_Test} Àà±ð£¬»¹ÓÐ´Ó {\ttfamily WEBDIR} Ä¿Â¼ÒÆ³ý {\ttfamily javacgitest.html}, {\ttfamily javaemailtest.html} ÒÔ¼°{\ttfamily javahtmltest.html}£¬ÒòÎªËüÃÇ»áÏÔÊ¾Ó¦¸ÃÖ»ÓÐËÅ·þÆ÷¹ÜÀíÕß²Å¿´µÃµ½µÄÊ¹ÓÃÕß×ÊÑ¶£®






\section{Éè¶¨ËÅ·þÆ÷ÒÔÖ´ÐÐ Java CGI ³ÌÊ½ (¼òÂÔÆª)
\label{install-short}}

\begin{enumerate}
\item ´Ó
\onlynameurl{ftp://ftp.orbits.com/pub/software/java\_cgi-0.5.tgz}.
È¡»Ø {\itshape Java CGI\/} Ì×¼þ£®(°æ±¾ºÅÂë¿ÉÄÜ»á¸Ä±ä£®)
\item ÓÃÕâ¸öÖ¸Áî½â¿ªÌ×¼þ:
\begin{verbatim}
gzip -dc java_cgi-0.5.tgz | tar -xvf -
\end{verbatim}

(Èç¹û°æ±¾ºÅÂë¸Ä±äÁË£¬¾Í¸ÄÓÃÄÇÌ×¼þÀïµÄ£®)
\item ÐÞ¸ÄÔÚÐÂ²úÉúµÄ {\ttfamily java\_cgi-0.5} Ä¿Â¼ÀïµÄ {\ttfamily Makefile} ÒÔ·ûºÏÄãµÄÏµÍ³£®
\item ÒÔ root Éí·Ý£¬Ö´ÐÐ {\ttfamily make install}£®
Õâ½«±àÒë Java ³ÌÊ½£¬¼ÓÉÏÄãÏµÍ³ÌØ¶¨µÄ×ÊÑ¶²¢°²×°Ðí¶àµµ°¸£®
Èç¹ûÄãÏ£ÍûÓµÓÐ±¾ÎÄµÄ HTML °æ±¾ÒÔ¼°Ò»·Ý HTML ²âÊÔÎÄ¼þ£¬¸ÄÓÃ {\ttfamily make all}£®
\item È»ááÓ¦¸Ã¾Í¿ÉÒÔÓÃÁË£®
\end{enumerate}







\section{Ö´ÐÐÒ»¸ö Java CGI ³ÌÊ½}




\subsection{ÒÔ CGI Ä£Ê½Ö´ÐÐ Java ³ÌÊ½µÄÕÏ°­}

´Ó web ËÅ·þÆ÷Ö´ÐÐ Java ³ÌÊ½ÓÐÁ½¸öÖ÷ÒªµÄÎÊÌâ:




\subsubsection{Äã²»ÄÜÏñÒ»°ãÖ´ÐÐµµÒ»ÑùÖ´ÐÐ Java ³ÌÊ½}

Äã±ØÐèÖ´ÐÐ Java µÄÖ´ÐÐÊ±¿Ì(run-time)½âÒëÆ÷²¢ÇÒÒÔÃüÁîÁÐµÄ·½Ê½Ìá¹©³õÊ¼Àà±ð(³ÌÊ½Ö´ÐÐËùÐè)£®
ÔÚÒ»¸ö HTML form ÀïÃæÃ»ÓÐ°ì·¨Ìá¹©ÃüÁîÁÐ¸ø web ËÅ·þÆ÷£®




\subsubsection{Java ³ÌÊ½Ã»ÓÐÒ»°ãµÄ·½·¨¿ÉÒÔÈ¡µÃ»·¾³±äÊý}

Java ³ÌÊ½ËùÐèµÄÃ¿¸ö»·¾³±äÊý¶¼±ØÐè±»´«Èë£®
(ÔÚ Java ³ÌÊ½ÖÐ)Ã»ÓÐÀàËÆ {\bfseries C} ÓïÑÔµÄ {\ttfamily getenv()} º¯Êý£®




\subsection{Ö´ÐÐ Java CGI ½â¾öÎÊÌâ}

ÎªÁË´¦ÀíÕâÐ©À§ÄÑ£¬ÎÒÐ´ÁËÒ»¸ö CGI Ö¸Áî¸å³ÌÊ½£¬Ìá¹© Java ½âÒëÆ÷ËùÐèµÄ×ÊÑ¶£®




\subsubsection{java.cgi Ö¸Áî¸å}

Õâ¸öÖ¸Áî¸å¹ÜÀí HTTP ËÅ·þÆ÷ÓëÄãÏ£ÍûÊ¹ÓÃµÄ Java CGI ³ÌÊ½Ö®¼äµÄ»¥¶¯£®
Ëü´Ó server ¶ËÌá¹©µÄ×ÊÁÏÖÐÈ¡³öÄãÏëÒªÖ´ÐÐ³ÌÊ½µÄÃû³Æ£®
Ëü½«ËùÓÐµÄ»·¾³±äÊý×ÊÁÏ½«÷Ûµ½Ò»¸öÔÝ´æµµÀï£®È»áá£¬Ëü½«Õâ¸öµµ°¸ÒÔ¼°³ÌÊ½Ãû³Æ¼ÓÃüÁîÁÐÖÐ£¬
Ö´ÐÐ Java µÄÖ´ÐÐÊ±¿Ì½âÒëÆ÷£®

{\ttfamily java.cgi} Ö¸Áî¸åµÄÉè¶¨Óë°²×°ÔÚ
\ref{make-programs} {(¾ö¶¨ÄãµÄ±¾µØÄ¿Â¼²ßÂÔ)}
Ò»½ÚËµÃ÷£®




\subsubsection{´Ó HTML form ÖÐÒý·¢ java.cgi}

Ê¹ÓÃ Java CGI ³ÌÊ½µÄ HTML form ÒÔÏÂÃæµÄ·½Ê½Ö¸¶¨ÆäÐÐÎª:
\begin{verbatim}
<form action="/cgi-bin/java.cgi/CGI_Test" method="POST">
\end{verbatim}

ÆäÖÐ {\ttfamily /cgi-bin/} ÊÇÄã±¾µØ¶ËµÄ CGI ¶þ½øÎ»Ö´ÐÐµµÄ¿Â¼£¬
{\ttfamily java.cgi} ÊÇÔÊÐíÎÒÃÇ´Ó web ÉÏÖ´ÐÐ Java ³ÌÊ½µÄÇ°¶Ë£¬
¶ø {\ttfamily CGI\_Test} ÊÇÒ»¸öÓûÖ´ÐÐµÄ Java ³ÌÊ½Ãû³ÆµÄÀý×Ó£®




\section{Ê¹ÓÃ Java CGI Àà±ð}

Ä¿Ç°ÎªÖ¹Ö§Ô®Èý¸öÖ÷ÒªÀà±ð -- \ref{cgi-class} {(CGI)}, \ref{email-class} {(Email)} ÒÔ¼° \ref{html-class} {(HTML)}£®
ÎÒÕýÔÚ¿¼ÂÇ·Ö±ð¼ÓÉÏ´¦Àí MIME ¸ñÊ½ÊäÈëÓëÊä³öµÄÀà±ð --    MIMEin \& MIMEout£®

Ò²ÓÐÒ»Ð©ÓÃÀ´Ö§Ô®ºÍ²âÊÔµÄÀà±ð£®
\ref{cgi-test-class} {(CGI\_Test)}, \ref{email-test-class} {(Email\_Test)} ÒÔ¼° \ref{email-test-class} {(HTML\_Test)} ÊÇÄÃÀ´²âÊÔÄãµÄ°²×°ÓÃµÄ£®
ÄãÒ²¿ÉÄÃÀ´µ±×öÄã×Ô¼º³ÌÊ½ÖÐÊ¹ÓÃÕâÐ©Àà±ð¿âµÄÆðµã£®
\ref{text-class} {(Text)} Àà±ðÊÇ {\ttfamily Email} Óë {\ttfamily HTML} µÄ»ùµ×Àà±ð£®




\subsection{CGI\label{cgi-class}}




\subsubsection{Àà±ðÓï·¨}

{\ttfamily public class CGI}




\subsubsection{Àà±ðÃèÊö}

CGI Àà±ð³ÖÓÐµÄ¡¸CGI ×ÊÑ¶¡¹ -- web ËÅ·þÆ÷ËùÉè¶¨µÄ»·¾³±äÊýÒÔ¼°°´ÏÂ {\bfseries submit} Ê±ÓÉ form Ëù´«ËÍÀ´µÄÃû³Æ/ÊýÖµ£®
ËùÓÐµÄ×ÊÑ¶¶¼±»´æ·ÅÔÚÀà±ðÎï¼þ {\ttfamily Properties} ÖÐ£®

Õâ¸öÀà±ðÎ»ì¶ ``Orbits.net'' °ü×°(package)ÖÐ£®




\subsubsection{³ÉÔ±ÕªÒª}

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        CGI()         //  ½¨¹¹×Ó
        getNames()    //  È¡µÃÃû³ÆµÄ´®ÁÐ
        getValue()    //  È¡µÃÖ¸¶¨Ãû³ÆµÄÖµ
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}





\subsubsection{Çë²ÎÔÄ}

{\ttfamily CGI\_Test}.




\subsubsection{CGI()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

½¨¹¹Ò»°üº¬¿ÉÓÃ CGI ×ÊÁÏµÄÎï¼þ

\item[Óï·¨] \mbox{}

{\ttfamily public CGI()}

\item[ÃèÊö] \mbox{}

µ±Ò» CGI Îï¼þ±»½¨Á¢Ê±£¬ËùÓÐ¿ÉÓÃµÄ CGI ×ÊÁÏ±»´æ·ÅÔÚÐÂÎï¼þµÄ¾Ö²¿´¢´æ¿Õ¼äÖÐ£®

\end{description}





\subsubsection{getNames()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

ÁÐ³öÒÑ¶¨Òå¶ÔÓ¦ÖµµÄÃû³Æ£®

\item[Óï·¨] \mbox{}

{\ttfamily public Enumeration getNames ()}

\item[ÃèÊö] \mbox{}

Ìá¹©ËùÓÐÒÑ¶¨Òå¶ÔÓ¦ÖµµÄÃû³ÆµÄÍêÕûÁÐ±í£®

\item[·µ»Ø ] \mbox{}

ËùÓÐÃû³ÆµÄ {\ttfamily Enumeration} Îï¼þ£®

\end{description}





\subsubsection{getValue()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

È¡»ØËùÖ¸¶¨¶ÔÓ¦ì¶ {\bfseries name} µÄ {\bfseries value}£®

\item[Óï·¨] \mbox{}

{\ttfamily public String getValue ( String name )}

\item[ÃèÊö] \mbox{}

Õâ¸ö·½·¨Ìá¹©ÓÉ HTML form ËÍÈëµÄ {\ttfamily names} Óë {\ttfamily values} Ö®¼äµÄ¶ÔÓ¦£®

\item[²ÎÊý] \mbox{}

\begin{description}
\item[name] \mbox{}

ËùÑ¡ÔñµÄ¼üÖµ£®

\end{description}


\item[·µ»Ø ] \mbox{}

Ò»¸ö°üº¬¶ÔÓ¦ÖµµÄ {\ttfamily String} Îï¼þ£®

\end{description}





\subsection{CGI\_Test\label{cgi-test-class}}

Õâ¸öÀà±ðÌá¹©Á½¸ö¹¦ÄÜ£¬Ò»¸öÈçºÎÊ¹ÓÃ {\ttfamily CGI} Àà±ðµÄÀý×ÓÒÔ¼°Ò»¸öÓÃÀ´È·¶¨ {\itshape Java CGI\/} Ì×¼þÔË×÷Õý³£µÄ²âÊÔ³ÌÊ½£® 




\subsubsection{³ÉÔ±ÕªÒª}

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        main()      //  Program main().
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}





\subsubsection{Çë²ÎÔÄ}

{\ttfamily \ref{cgi-class} {(CGI)}}.




\subsubsection{main()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

Ìá¹© {\ttfamily main()} ·½·¨£®

\item[Óï·¨] \mbox{}

{\ttfamily public static void main( String argv[] )}

\item[ÃèÊö] \mbox{}

ÕâÊÇ CGI ³ÌÊ½µÄÈë¿Ú£¬Ö»²»¹ý·µ»Ø¿ÉÓÃµÄÃû³Æ/ÊýÖµ¶ÔÓëÆäÏÖÖµµÄÁÐ±í£®

\item[²ÎÊý ] \mbox{}

\begin{description}
\item[argv{[}{]}] \mbox{}

ÓÉ {\ttfamily java.cgi} Ö¸Áî¸å´«ÈëµÄ²ÎÊý£®Ä¿Ç°Î´Ê¹ÓÃ£®

\end{description}


\end{description}





\subsection{Email\label{email-class}}




\subsubsection{Àà±ðÓï·¨}

{\ttfamily public class Email extends Text}




\subsubsection{Àà±ðÃèÊö}

Ñ¶Ï¢ÓÉ {\ttfamily Text} Àà±ðµÄ {\ttfamily add*()} ·½·¨Ëù½¨Á¢£¬¼ÓÈëµç×ÓÓÊ¼þ×¨ÓÃµÄ·½·¨£®
Íê³Éáá£¬Ñ¶Ï¢±»ËÍµ½ËüµÄÄ¿µÄµØ£®

Õâ¸öÀà±ðÎ»ì¶ ``Orbits.net'' °ü×°ÖÐ£®




\subsubsection{³ÉÔ±ÕªÒª}

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        Email()      //  ½¨¹¹×Ó
        send()       //  ËÍ³öµç×ÓÓÊ¼þÑ¶Ï¢
        sendTo()     //  Ôö¼ÓÑ¶Ï¢µÄÄ¿µÄµØ
        subject()    //  Éè¶¨Ñ¶Ï¢µÄÖ÷Ìâ
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}





\subsubsection{Çë²ÎÔÄ}

{\ttfamily Email\_Test, Text}.




\subsubsection{Email()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

½¨Á¢Ò»°üº¬µç×ÓÓÊ¼þÑ¶Ï¢µÄÎï¼þ£®

\item[Óï·¨] \mbox{}

{\ttfamily public Email()}

\item[ÃèÊö] \mbox{}

½¨Á¢Ò»¿ÕµÄÑ¶Ï¢ÒÔÀûÓÉ´ËÀà±ð·½·¨¼ÓÒÔÍê³É£®

\item[Çë²ÎÔÄ] \mbox{}

{\ttfamily Text}.

\end{description}





\subsubsection{send()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

ËÍ³öµç×ÓÓÊ¼þÑ¶Ï¢£®

\item[Óï·¨] \mbox{}

{\ttfamily public void send ()}

\item[ÃèÊö] \mbox{}

±¾·½·¨±àÅÅ²¢ËÍ³öÑ¶Ï¢£®Èç¹ûÄ¿µÄÎ»Ö·»¹Î´Éè¶¨£¬½«²»»áÓÐ¶¯×÷·¢Éú£®

\end{description}





\subsubsection{sendTo()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

Ôö¼Ó±¾Ñ¶Ï¢µÄÄ¿µÄµØ£®

\item[Óï·¨] \mbox{}

{\ttfamily public String sendTo ( String address )}

\item[ÃèÊö] \mbox{}

½« {\ttfamily address} ¼ÓÈëµ½Ä¿µÄµØÁÐ±íÖÐ£®Ò»·Ýµç×ÓÓÊ¼þÄ¿µÄµØµÄÊýÄ¿ÊÇÃ»ÓÐÏÞÖÆµÄ£®
²»¹ýÎÒÏàÐÅÈç¹ûÄã½¨ÁË¹ý´óµÄÁÐ±í£¬Äã½«¿ÉÄÜ»á³¬¹ýÄãµÄ{\itshape ÓÊ¼þ´«ËÍ´úÀí³ÌÊ½(MTA)\/} ËùÄÜ½ÓÊÜµÄ´óÐ¡»òÓÃ¹âÄãµÄ¼ÇÒäÌå£®

\item[²ÎÊý] \mbox{}

\begin{description}
\item[address] \mbox{}

±¾Ñ¶Ï¢ÓûËÍ´ïµÄÒ»¸öÄ¿µÄµØ£®

\end{description}


\end{description}





\subsubsection{subject()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

Éè¶¨±¾Ñ¶Ï¢µÄÖ÷Ìâ£®

\item[Óï·¨] \mbox{}

{\ttfamily public void subject ( String subject )}

\item[ÃèÊö] \mbox{}

±¾·½·¨Éè¶¨µç×ÓÓÊ¼þµÄ {\ttfamily Subject:} À¸Î»£®
Èç¹ûºô½Ð³¬¹ýÒ»´ÎÒÔÉÏ£¬»áÊ¹ÓÃ×îááÒ»´Îºô½ÐµÄ½á¹û£®

\item[²ÎÊý] \mbox{}

\begin{description}
\item[subject] \mbox{}

{\ttfamily Subject:} À¸Î»µÄÎÄ×Ö£®

\end{description}


\end{description}





\subsection{Email\_Test\label{email-test-class}}

Õâ¸öÀà±ðÌá¹©Ò»¸öÈçºÎÊ¹ÓÃ {\ttfamily Email} Àà±ðµÄÀý×ÓÒÔ¼°Ò»¸öÓÃÀ´È·¶¨ {\itshape Java CGI\/} Ì×¼þÔË×÷Õý³£µÄ²âÊÔ³ÌÊ½£® 




\subsubsection{³ÉÔ±ÕªÒª}

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        main()      //  Program main().
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}





\subsubsection{Çë²ÎÔÄ}

{\ttfamily \ref{email-class} {(Email)}}.




\subsubsection{main()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

Ìá¹© {\ttfamily main()} ·½·¨£®

\item[Óï·¨] \mbox{}

{\ttfamily public static void main( String argv[] )}

\item[ÃèÊö] \mbox{}

ÕâÊÇ CGI ³ÌÊ½µÄÈë¿Ú£¬·µ»Ø¿ÉÓÃµÄÃû³Æ/ÊýÖµ¶ÔÓëÆäÏÖÖµµÄÁÐ±í£®
ËüÒ²½«ÁÐ±íËÍµ½ÓÉ {\ttfamily Email} ±äÊýËùÖ¸¶¨µÄÎ»Ö·£®

\item[²ÎÊý ] \mbox{}

\begin{description}
\item[argv{[}{]}] \mbox{}

ÓÉ {\ttfamily java.cgi} Ö¸Áî¸å´«ÈëµÄ²ÎÊý£®Ä¿Ç°Î´Ê¹ÓÃ£®

\end{description}


\end{description}





\subsection{HTML\label{html-class}}






\subsubsection{Àà±ðÓï·¨}

{\ttfamily public class HTML extends Text}




\subsubsection{Àà±ðÃèÊö}

Ñ¶Ï¢ÓÉ {\ttfamily Text} Àà±ðµÄ {\ttfamily add*()} ·½·¨Ëù½¨Á¢£¬²¢¼ÓÈë HTML ×¨ÓÃµÄ·½·¨£®
Íê³Éáá£¬Ñ¶Ï¢±»ËÍµ½ËüµÄÄ¿µÄµØ£®

Ä¿Ç°£¬»¹Ã»ÓÐ´íÎó¼ì²é»úÖÆÒÔÈ·±£ÁÐ±í½¨Á¢µÄ·½·¨±»ÒÔÕýÈ·µÄË³ÐòÊ¹ÓÃ£®
Òò´Ë³ÌÊ½Éè¼ÆÕß±ØÐë×ÔÐÐÈ·¶¨Ã»ÓÐÎ¥·´ HTML µÄÓï·¨£®

Õâ¸öÀà±ðÎ»ì¶ ``Orbits.net'' °ü×°ÖÐ£®




\subsubsection{³ÉÔ±ÕªÒª}

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        HTML()                  //  ½¨¹¹×Ó
        author()                //  Éè¶¨ÎÄ¼þ×÷ÕßµÄÃû×Ö
        definitionList()        //  ÆðÊ¼Ò»¶¨ÒåÁÐ±í
        definitionListTerm()    //  ÔÚ¶¨ÒåÁÐ±íÖÐÔö¼ÓÒ»ÏîÄ¿
        endList()               //  ½áÊøÁÐ±í
        listItem()              //  ÔÚÁÐ±íÖÐÔö¼ÓÒ»ÏîÄ¿
        send()                  //  ËÍ³ö´Ë HTML Ñ¶Ï¢
        title()                 //  Éè¶¨ÎÄ¼þ±êÌâµÄÎÄ×Ö
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}





\subsubsection{Çë²ÎÔÄ}

{\ttfamily HTML\_Test, Text}.




\subsubsection{HTML()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

½¨Á¢Ò»°üº¬ HTML Ñ¶Ï¢µÄÎï¼þ£®

\item[Óï·¨] \mbox{}

{\ttfamily public HTML()}

\item[ÃèÊö] \mbox{}

½¨Á¢Ò»¿ÕµÄÑ¶Ï¢ÒÔÀûÓÉ HTML ·½·¨¼ÓÒÔÍê³É£®

\item[Çë²ÎÔÄ] \mbox{}

{\ttfamily Text}.

\end{description}





\subsubsection{author()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

Éè¶¨ÎÄ¼þ×÷ÕßµÄÃû×Ö£®

\item[Óï·¨] \mbox{}

{\ttfamily public void author ( String author )}

\item[ÃèÊö] \mbox{}

½«ÎÄ¼þµÄ×÷ÕßÃû×ÖÉè¶¨Îª {\ttfamily author}£®

\item[²ÎÊý] \mbox{}

\begin{description}
\item[author] \mbox{}

ÓÃÀ´×÷Îª´ËÑ¶Ï¢×÷ÕßµÄÎÄ×Ö£®

\end{description}


\item[Çë²ÎÔÄ] \mbox{}

{\ttfamily title()}.

\end{description}





\subsubsection{definitionList()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

ÆðÊ¼Ò»¶¨ÒåÁÐ±í£®

\item[Óï·¨] \mbox{}

{\ttfamily public void definitionList ()}

\item[ÃèÊö] \mbox{}

ÆðÊ¼Ò»¶¨ÒåÁÐ±í£®
Ò»¸ö{\itshape ¶¨ÒåÁÐ±í\/}ÊÇÒ»ÖÖÌØ±ðµÄÁÐ±í£¬ÁÐ±íÖÐµÄÃ¿Ò»ÏîÊÇÓÉ {\itshape ÏîÄ¿\/} Æäáá¸úÖø¶¨ÒåµÄ {\itshape ÎÄ×Ö\/} ËùÐÎ³ÉµÄ£®
Ò»¶¨ÒåÁÐ±íµÄÆðÊ¼Ó¦¸úÖø(ÖÁÉÙ)Ò»ÏîÄ¿/ÎÄ×ÖÅä¶ÔÒÔ¼°Ò»¸ö {\ttfamily endList()} ·½·¨µÄºô½Ð£®
{\itshape Çë×¢Òâ£¬Ä¿Ç°ÁÐ±í²»ÄÜÊÇ³²×´µÄ\/}£®

\item[Çë²ÎÔÄ] \mbox{}

{\ttfamily definitionListTerm()}, {\ttfamily endList()}, {\ttfamily listItem()}.

\end{description}





\subsubsection{definitionListTerm()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

ÔÚ¶¨ÒåÁÐ±íÖÐÔö¼ÓÒ»ÏîÄ¿£®

\item[Óï·¨] \mbox{}

{\ttfamily public void definitionListTerm ()}

\item[ÃèÊö] \mbox{}

ÔÚ¶¨ÒåÁÐ±íÖÐÔö¼ÓÒ»ÏîÄ¿£®
Ä¿Ç°ÁÐ±íµÄÏîÄ¿²¿·ÝµÄÎÄ×ÖÓ¦¸ÃÔÚ´Ë·½·¨±»ºô½Ðáá²¢ÇÒÔÚ¶ÔÓ¦µÄ {\ttfamily listItem} ·½·¨±»ºô½ÐÇ°¼ÓÈë£®

\item[Çë²ÎÔÄ] \mbox{}

{\ttfamily definitionList()}, {\ttfamily listItem()}.

\end{description}





\subsubsection{endList()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

½áÊøÒ»ÁÐ±í£®

\item[Óï·¨] \mbox{}

{\ttfamily public void endList ()}

\item[ÃèÊö] \mbox{}

±¾·½·¨½áÊøÒ»ÁÐ±í£®{\itshape ×¢Òâ£¬Ä¿Ç°ÁÐ±í²»ÄÜÊÇ³²×´µÄ\/}£®

\item[Çë²ÎÔÄ] \mbox{}

{\ttfamily definitionList()}.

\end{description}





\subsubsection{listItem()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

ÔÚÁÐ±íÖÐÔö¼ÓÒ»ÏîÄ¿£®

\item[Óï·¨] \mbox{}

{\ttfamily public void listItem ()}

\item[] \mbox{}

{\ttfamily public void listItem ( String item )}

\item[] \mbox{}

{\ttfamily public boolean listItem ( String term, String item )}

\item[ÃèÊö] \mbox{}

ÔÚÁÐ±íÖÐÔö¼ÓÒ»ÏîÄ¿£®
Èç¹ûÊ¹ÓÃµÚÒ»ÖÖÐÎÊ½£¬Ä¿Ç°ÁÐ±íÏîÄ¿µÄÎÄ×ÖÓ¦ÔÚ´Ë·½·¨±»½Ðáá²¢ÔÚÈÎºÎÆäËüÁÐ±í·½·¨±»ºô½ÐÇ°¼ÓÈë£®
ÔÚµÚ¶þ¼°µÚÈýÖÖÐÎÊ½ÖÐ£¬{\ttfamily item} ÎÄ×Ö±»Ö¸¶¨Îª·½·¨µÄ²ÎÊý¶ø²»ÊÇÔÚÆäáá±»¼ÓÈë£®
µÚÈýÖÖÐÎÊ½ÊÇ¶¨ÒåÁÐ±í×¨ÓÃ²¢ÇÒÍ¬Ê±Ö¸¶¨ÁÐ±íµÄÏîÄ¿Óë¶¨ÒåÎÄ×Ö²¿·Ý£®

\item[²ÎÊý] \mbox{}

\begin{description}
\item[item] \mbox{}

´ËÁÐ±íÏîÄ¿µÄÎÄ×Ö£®

\item[term] \mbox{}

´Ë¶¨ÒåÁÐ±íµÄÏîÄ¿²¿·ÝµÄÎÄ×Ö£®

\end{description}


\item[Çë²ÎÔÄ] \mbox{}

{\ttfamily definitionList()}, {\ttfamily definitionListTerm()}, {\ttfamily endList()}.

\end{description}





\subsubsection{send()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

ËÍ³ö´Ë HTML Ñ¶Ï¢£®

\item[Óï·¨] \mbox{}

{\ttfamily public void send ()}

\item[ÃèÊö] \mbox{}

ËÍ³ö´Ë HTML Ñ¶Ï¢£®

\end{description}





\subsubsection{title()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

Éè¶¨ÎÄ¼þ±êÌâµÄÎÄ×Ö£®

\item[Óï·¨] \mbox{}

{\ttfamily public void title ( String title )}

\item[ÃèÊö] \mbox{}

Éè¶¨´ËÎÄ¼þµÄ±êÌâÎÄ×Ö£®

\item[²ÎÊý] \mbox{}

\begin{description}
\item[title] \mbox{}

´ËÎÄ¼þ±êÌâµÄÎÄ×Ö£®

\end{description}


\item[Çë²ÎÔÄ] \mbox{}

{\ttfamily author()}.

\end{description}





\subsection{HTML\_Test\label{html-test-class}}

Õâ¸öÀà±ðÌá¹©Ò»¸öÈçºÎÊ¹ÓÃ {\ttfamily HTML} Àà±ðµÄÀý×ÓÒÔ¼°Ò»¸öÓÃÀ´È·¶¨ {\itshape Java CGI\/} Ì×¼þÔË×÷Õý³£µÄ²âÊÔ³ÌÊ½£® 




\subsubsection{³ÉÔ±ÕªÒª}

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        main()      //  Program main().
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}





\subsubsection{Çë²ÎÔÄ}

{\ttfamily \ref{html-class} {(HTML)}}.




\subsubsection{main()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

Ìá¹© {\ttfamily main()} ·½·¨£®

\item[Óï·¨] \mbox{}

{\ttfamily public static void main( String argv[] )}

\item[ÃèÊö] \mbox{}

ÕâÊÇ CGI ³ÌÊ½µÄÈë¿Ú£¬·µ»ØÔÚÒ» HTML ÎÄ¼þÖÐ¿ÉÓÃµÄÃû³Æ/ÊýÖµÅä¶ÔÓëÆäÏÖÖµµÄÁÐ±í£¬²¢½«Ã¿Ò»Ãû³Æ/ÊýÖµÅä¶ÔÏÔÊ¾ÔÚÒ»¶¨ÒåÁÐ±íµÄÔªËØÀï£®

\item[²ÎÊý ] \mbox{}

\begin{description}
\item[argv{[}{]}] \mbox{}

ÓÉ {\ttfamily java.cgi} Ö¸Áî¸å´«ÈëµÄ²ÎÊý£®Ä¿Ç°Î´Ê¹ÓÃ£®

\end{description}


\end{description}





\subsection{Text\label{text-class}}




\subsubsection{Àà±ðÓï·¨}

{\ttfamily public abstract class Text}




\subsubsection{Àà±ðÃèÊö}

±¾Àà±ðÎª {\ttfamily \ref{email-class} {(Email)}} Óë {\ttfamily \ref{html-class} {(HTML)}} µÄ»ù´¡Àà±ð£®
Ñ¶Ï¢ÒÔ´ËÀà±ðµÄ·½·¨½¨Á¢£¬²¢ÒÔÑÜÉúÀà±ðµÄ·½·¨Íê³É²¢±àÅÅ£®

Õâ¸öÀà±ðÎ»ì¶ ``Orbits.net'' °ü×°ÖÐ£®




\subsubsection{³ÉÔ±ÕªÒª}

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        Text()            //  ½¨¹¹×Ó
        add()             //  ¼ÓÈëÎÄ×Öµ½´ËÎï¼þ
        addLineBreak()    //  ¼ÓÈë·ÖÐÐ·ûºÅ
        addParagraph()    //  ¼ÓÈë·Ö¶Î·ûºÅ
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}





\subsubsection{Çë²ÎÔÄ}

{\ttfamily \ref{email-class} {(Email)}}, {\ttfamily \ref{html-class} {(HTML)}}.




\subsubsection{add()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

ÔÚ´ËÏîÄ¿ÖÐ¼ÓÈëÎÄ×Ö£®

\item[Óï·¨] \mbox{}

{\ttfamily public void add ( char addition )}

\item[] \mbox{}

{\ttfamily public void add ( String addition )}

\item[] \mbox{}

{\ttfamily public void add ( StringBuffer addition )}

\item[ÃèÊö] \mbox{}

ÔÚÕâ¸öÎÄ×ÖÏîÄ¿µÄÄÚÈÝÖÐ¼ÓÈë {\ttfamily addition}£®

\item[²ÎÊý] \mbox{}

\begin{description}
\item[addition] \mbox{}

¼ÓÈë´ËÎÄ×ÖÏîÄ¿µÄÎÄ×Ö£®

\end{description}


\item[Çë²ÎÔÄ] \mbox{}

{\ttfamily addLineBreak()}, {\ttfamily addParagraph()}.

\end{description}





\subsubsection{addLineBreak()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

Ç¿ÆÈÔÚÄ¿Ç°ÎÄ×ÖÎ»ÖÃ·ÖÐÐ£®

\item[Óï·¨] \mbox{}

{\ttfamily public void addLineBreak ()}

\item[ÃèÊö] \mbox{}

ÔÚÄ¿Ç°Î»ÖÃ¼ÓÈëÒ»·ÖÐÐ·ûºÅ£®

\item[Çë²ÎÔÄ] \mbox{}

{\ttfamily add()}, {\ttfamily addParagraph()}.

\end{description}





\subsubsection{addParagraph()}

\begin{description}
\item[Ä¿µÄ] \mbox{}

ÆðÊ¼Ò»ÐÂµÄ¶ÎÂä£®

\item[Óï·¨] \mbox{}

{\ttfamily public void add ()}

\item[ÃèÊö] \mbox{}

ÔÚÄ¿Ç°µÄÎÄ×ÖÎ»ÖÃÆðÊ¼Ò»ÐÂµÄ¶ÎÂä£®

\item[Çë²ÎÔÄ] \mbox{}

{\ttfamily add()}, {\ttfamily addLineBreak()}.

\end{description}





\section{Î´À´µÄ¼Æ»­}

\begin{itemize}
\item {\ttfamily Email} Àà±ðµÄÀ©³ä:
\begin{description}
\item[Email( int capacity )] \mbox{}

ÓÃÀ´µ±ÎÒÃÇÖªµÀÐè¶àÉÙ¿Õ¼äÀ´´¢´æÑ¶Ï¢Ê±£® 

\item[sendTo( String {[}{]} address )] \mbox{}

Ôö¼ÓÔ­Ê¼µç×ÓÓÊ¼þÄ¿µÄµØµÄÁÐ±í£®

\item[sendCc( String address )] \mbox{}

Ôö¼ÓÒ»¸ö¸´ÖÆµç×ÓÓÊ¼þÄ¿µÄµØ£®

\item[sendCc( String {[}{]} address )] \mbox{}

Ôö¼Ó¸´ÖÆµç×ÓÓÊ¼þÄ¿µÄµØµÄÁÐ±í£®

\item[sendBcc( String address )] \mbox{}

Ôö¼ÓÒ»¸ö Blind Carbon-Copy µÄµç×ÓÓÊ¼þÄ¿µÄµØ£®

\item[sendBcc( String {[}{]} address )] \mbox{}

Ôö¼Ó Blind Carbon-Copy µÄµç×ÓÓÊ¼þÄ¿µÄµØÁÐ±í

\end{description}
\item {\ttfamily HTML} Àà±ðµÄÀ©³ä:
\begin{description}
\item[HTML( int capacity )] \mbox{}

ÓÃÀ´µ±ÎÒÃÇÖªµÀÐè¶àÉÙ¿Õ¼äÀ´´¢´æÑ¶Ï¢Ê±£® 

\item[public void unorderedList()] \mbox{}

ÆðÊ¼Ò»ÎÞÐòÁÐ±í£®

\item[public void orderedList()] \mbox{}

ÆðÊ¼Ò»ÓÐÐòÁÐ±í£®

\item[public void directoryList()] \mbox{}

ÆðÊ¼Ò»Ä¿Â¼ÁÐ±í£®

\item[public void menuList()] \mbox{}

ÆðÊ¼Ò»Ñ¡µ¥ÁÐ±í£®

\item[void anchor( String anchorName )] \mbox{}

Ö¸¶¨Ò»Ãª(anchor)£®

\item[void link( String url, String text )] \mbox{}

Ö¸¶¨Ò»Á¬½á£®

\item[void applet( String url, String altText )] \mbox{}

Ö¸¶¨Ò» applet Á¬½á£®

\end{description}
\item ÔÊÐí³²×´µÄ HTML ÁÐ±í£®
\item Ôö¼Ó´íÎó¼ì²éÂëÒÔÇ¿ÆÈÐÞÕý HTML ÁÐ±í¸ñÊ½ÂëµÄË³Ðò£®
\item »·¾³±äÊý×ÊÁÏµÄµµ°¸Î»ÖÃÓ¦ÄÜÓÉ {\ttfamily Makefile} Éè¶¨£®
\item ³ýÈ¥ÔÚ´¦Àí GET ·½·¨µÄ×ÊÁÏ´«ËÍÊ±³öÏÖÖ®¼ÙµÄ¿ÕÃû³Æ/ÊýÖµ¶Ô£®
\item ¿¼ÂÇÈÃ {\ttfamily CGI} Êµ×÷ {\ttfamily java.util.Enumeration} ½çÃæÒÔÒÀÐòµØÌá¹©±äÊýÃû³Æ£®
\item ¼ÓÈëÒ» {\ttfamily Test} Àà±ð£¬Ê¹ÓÃ±¾Ì×¼þÖÐµÄÃ¿¸ö·½·¨£®
\item ËµÃ÷ {\ttfamily CGI\_Test}, {\ttfamily Email\_Test} Óë {\ttfamily HTML\_Test}
ÈçºÎÏà»¥½¨Á¢ÒÔÌá¹©Õì´íÄ¿µÄÓÃµÄ½¥½ø²âÊÔ£®
\item ËµÃ÷ÈçºÎ²âÊÔÊ¹ÓÃ±¾Ì×¼þµÄÃ¿Ò»¸öÌØáç£®
\end{itemize}







\section{°æ±¾ÐÞ¸Ä¼ÇÂ¼}




\subsection{ÓÉ 0.4 µ½ 0.5 µÄÐÞ¸Ä}

\begin{itemize}
\item ¸üÐÂÎÄ¼þÓë×¢½âÒÔ·´Ó¦ÐÂÊÍ³öµÄ°æ±¾¡£
\end{itemize}





\subsection{ÓÉ 0.3 µ½ 0.4 µÄÐÞ¸Ä}

\begin{itemize}
\item ÔöÌí {\ttfamily HTML} Àà±ðÌá¹©µÄ»ù±¾¹¦ÄÜ£®
\item Ôö¼Ó {\ttfamily HTML\_Test} Àà±ðÓë {\ttfamily javahtmltest.html-dist}£®
\item Ôö¼Ó HTML ·½·¨À´´¦Àí¶¨ÒåÁÐ±í£®
\end{itemize}





\subsection{ÓÉ 0.2 µ½ 0.3 µÄÐÞ¸Ä}

\begin{itemize}
\item ¼ÓÈë {\ttfamily Text} Óë {\ttfamily Email} Àà±ð£®
{\ttfamily HTML} Ò²±»¼ÓÈë£¬µ«´ËÊ±Ö»ÊÇÒ»Ð¡²¿·Ý¶øÒÑ£®
\item ½«²»Í¬µÄÀà±ð·ÅÈë°ü×°ÖÐ£®
Ö÷ÒªµÄÀà±ðÔÚ {\ttfamily Orbits.net.*}£¬Ö§Ô®ÓÃµÄÀà±ð {\ttfamily Text} ·ÅÔÚ {\ttfamily Orbits.text.Text}£®
\item ½« {\ttfamily CGItest} ¸ÄÎª {\ttfamily CGI\_Test}£®
\item Ôö¼Ó {\ttfamily Email\_Test} Àà±ð£®
\end{itemize}





\subsection{ÓÉ 0.1 µ½ 0.2 µÄÐÞ¸Ä}

\begin{itemize}
\item »·¾³±äÊý±»·ÅÈëÒ»ÔÝ´æµµÖÐ¶ø²»ÊÇÃãÇ¿¼·Èë Java ½âÒëÆ÷µÄÃüÁîÁÐÀï£®
{\ttfamily CGI} Àà±ðÓë {\ttfamily java.cgi} ÒÑ±»ÐÞ¸Ä£®
\item ½« {\ttfamily javacgitest.html} ÎÄ¼þ¼ÓÈë³ÉÎªÌ×¼þµÄÒ»²¿·Ý£®
\item °²×°Ê±ÓÉ {\ttfamily make} ËùÐÞ¸ÄµÄµµ°¸È«¶¼ÒÔ½áÎ² {\itshape -dist\/} À´ÃüÃû£®
\end{itemize}




\end{document}
