\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{¥»¤å¸ÑÄÀ¦p¦ó³]©w§Aªº¦øªA¾¹¡A¨Ï¨ä¯à¨Ï¥Î Java ¨Ó¼g CGI µ{¦¡¡A¥H¤Î¦p¦ó¥Î Java ¨Ó¼g CGI µ{¦¡¡DÁöµM HOWTO ¤å¥óªº¥Øªº¬O¥Î¦b Linux §@·~¨t²Î¤W¡A¦ý³o½g¯S§Oªº¤å³¹¨Æ¹ê¤W»P¯S©wª©¥»ªº UNIX ¨t²ÎµLÃö¡D}


\begin{document}
\maketitle
\tableofcontents

\section{Â²¤¶}

¥Ñ©ó Java ªº³]­p¤è¦¡µ{¦¡³]­p®v¨S¦³Â²©öªº¤èªk¥i¥H¨ú±o¨t²ÎªºÀô¹ÒÅÜ¼Æ¡D
¥Ñ©ó Java µo®i¤u¨ã (JDK) «Ø¥ßªº¤è¦¡¡A©I¥s¤@­Óµ{¦¡¥²¶·¨Ï¥Î¦h­«ªí¼x(tokens)¡A
³o©M¼Ð·Çªº HTML forms/CGI ¹B§@¤è¦¡¤£©ö°t¦X¡D
¦³¤@¨Ç¿ìªk¥i¥H§JªA³o¨Ç­­¨î¡A¦Ó§Ú´N¹ê§@¤F¨ä¤¤¤@ºØ¡D¸Ô±¡½Ð¨£¤U­z¡D

§Ú¼g¤U«e¬qªº®É¶¡¬O 1996. ¨ì²{¦b Java ªº§Þ³N¤w¸g¦³«Ü¤jªº§ïÅÜ¤F¡C
¥Ø«e¥i¯à¦³§ó¦nªº¤èªk¨Ó°õ¦æ¦øªA¾¹ºÝªº Java µ{¦¡ -- ¤]³\§AÀ³¸Ó¬Ý¤@¬Ý servlets(?).




\subsection{¹w³Æª¾ÃÑ}

§Ú°²©w§A¦³ HTML »P CGI ·§©Àªº¤@¯ëª¾ÃÑ¡A¦Ó¥B¤F¸ÑÃö©ó§Aªº HTTP ¦øªA¾¹ªº³Ì°ò¥»ª¾ÃÑ¡D
§A¤]À³¸Óª¾¹D¦p¦ó¼g Java µ{¦¡¡A§_«h³o¨Ç³£¨S¦³·N¸q¡D




\subsection{³o¥÷¤å¥ó}

¥»¤åªº³Ì·sª©¥»¥i¥H±q¦¹§ä¨ì:
\onlynameurl{http://www.orbits.com/software/Java\_CGI.html}.




\subsection{³nÅé®M¥ó}

¥»¤å©Ò´£¨ìªº³nÅé®M¥óªº³Ì·sª©¥»¥i¥Ñ°Î¦W FTP ¨ú±o
\onlynameurl{ftp://ftp.orbits.com/pub/software/java\_cgi-0.5.tgz}.
³o®M¥ó¥]§t¥»¤åªº SGML ­ì©lÀÉ¡D

³o¨Ç®M¥óªº´²¥¬¥²¶·¨Ì¾Ú GNU Library General Public License.
¥»¤å¥i¨Ì Linux HOWTO ªºª©ÅvÁn©ú´²¥¬¡D

¦pªG§A¨Ï¥Î¥»³nÅé¡A½Ð»s§@¤@¨Ç°Ñ¦Ò«ü¦V \onlynameurl{http://www.orbits.com/software/Java\_CGI.html}¡A
¥H«KÅý¨ä¥¦¤H¯à§ä¨ì Java CGI ªºÃþ§O¡D

§Ú¤w¸g¨S¦³®É¶¡¦A¥hºûÅ@³o­Ó®M¥ó¡A¦]¦¹³o©Î³\¬O³Ì«á¤@ª©¤F¡C
¦pªG¦³¤H«D±`¦a³ßÅw³o­Óµ{¦¡¡A¦Ó·Q±µ¤âºûÅ@¡A½Ð»P§ÚÁpµ¸:
{\ttfamily \onlynameurl{javacgi-document@orbits.com}}




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

§Ú¤w¸g«Ø¤F¤@­Ó majordomo ³q«H½×¾ÂÅý¨Ï¥Î¥»µ{¦¡ªº¤H­Ì¥i¥H¤¬¬ÛÀ°¦£¸Ñ¨M°ÝÃD¡C
½Ð°e«H¥ó¨ì
{\ttfamily \onlynameurl{javacgi-request@orbits.com}}
¤º®e¥]§t {\itshape subscribe\/} ³o­Ó¦r¡C




\section{³]©w¦øªA¾¹¥H°õ¦æ Java CGI µ{¦¡ (¸ÑÄÀ½g)
\label{install-long}}

³o¤@¸`±Ð§A¦w¸Ë§Úªº {\itshape Java CGI\/} ®M¥ó¡A¥H¤Î¤j¶qªº¸ÑÄÀ¡AÅý§A¯à°÷¤F¸Ñ§Aªº¦æ¬°·|¾É­P¤°»òµ²ªG¡D
¦pªG§A¥u·Q¦w¸Ëµ{¦¡¦Ó¤£·Q¤F¸Ñ¬°¤°»ò¡Aª½±µ¸õ¨ì \ref{install-short} {(³]©w¦øªA¾¹¥H°õ¦æ Java CGI µ{¦¡ (Â²²¤½g))}¡D




\subsection{¨t²Î»Ý¨D}

¥»³nÅéÀ³¸Ó¯à¦b¤w¦w¸Ë Java µ{¦¡µo®i¤u¨ãªº¥ô¦óÃþ UNIX ªº web ¦øªA¾¹¤W¦w¸Ë¡D
§Ú±N¥¦¸Ë¦b°õ¦æ {\itshape apache\/} ¦øªA¾¹ªº {\itshape Debian Linux\/} ¨t²Î¤W¡D
¦pªG§AµoÄ±¥¦µLªk¦b§Aªº¦øªA¾¹¤W¹B§@¡A½Ð§Q¥Î³q«H½×¾Â.
²Ó¸`½Ð¨£ \ref{mailing-list} {(The Mailing List)}.

¤£©¯ªº¬O¡AJava °õ¦æ®É´Á¸ÑÄ¶¾¹¦ü¥G¬O¦Y°O¾ÐÅéªº©Çª« -- 
¦pªG§A±N¨Ï¥Î³\¦h Java CGI µ{¦¡ªº¸Ü§A¥i¯à­n¦A¥á¼Æ MB ªº RAM ¨ì§Aªº¦øªA¾¹¸Ì¡D




\subsection{Java CGI »²§U³nÅé}

§Ú¼gªº»²§U³nÅé´N¥s°µ {\itshape Java CGI\/}¡D§A¥i±q 
\onlynameurl{ftp://ftp.orbits.com/pub/software/java\_cgi-0.5.tgz}
¨ú±o(ª©¥»¸¹½X¥i¯à·|§ïÅÜ)¡D




\subsection{¸Ñ¶}­ì©lÀÉ}

§ä¤@­Ó¦X¾Aªº¥Ø¿ý±N®M¥ó¸Ñ¶}¡D
(¦pªG§AÁÙ¨S¦³¼Ð·Ç©ñ¸m³nÅéªº¦a¤è¡A§Ú«ØÄ³§A©ñ¦b {\ttfamily /usr/local/src}¡D)
¥Î³o­Ó«ü¥O¸Ñ¶}®M¥ó:
\begin{verbatim}
gzip -dc java_cgi-0.5.tgz | tar -xvf -
\end{verbatim}

³o·|²£¥Í¤@­Ó¥s {\ttfamily java\_cgi-0.5} ªº¥Ø¿ý¡D
¦b¨º¸Ì§A¥i¥H§ä¨ì¥»¤å¨ä¥¦¦a¤è´£¨ìªºÀÉ®×¡D
(¦pªGª©¥»¸¹½X§ïÅÜ¤F¡A´N§ï¥Î¨º®M¥ó¸Ìªº¡D)




\subsection{¨M©w§Aªº¥»¦a¥Ø¿ýµ¦²¤\label{make-programs}}

§A¥²¶·¨M©wÅý§Aªº Java CGI µ{¦¡¦í¦b¨º¸Ì¡D
¤@¯ë¨Ó»¡¡A§A·|§Æ±æ©ñ¦b©M§Aªº {\ttfamily cgi-bin} ¥­¦æªº¥Ø¿ý¡D
§Úªº {\itshape apache\/} ¦øªA¾¹³]©w¨Ï¥Î {\ttfamily /var/www/cgi-bin} ¬° {\ttfamily cgi-bin} ¥Ø¿ý¡A
¦]¦¹§Ú¥Î {\ttfamily /var/www/javacgi} §@¬°©ñ¸m Java CGI µ{¦¡ªº¦a¤è¡D
§A¥i¯à¤£·|·QÅý±N§Aªº Java CGI µ{¦¡©ñ¶i¬Y¤@¤w¦s¦bªº {\ttfamily CLASSPATH} ¥Ø¿ý¡D
½s¿è Makefile ¨Ó¤ÏÀ³§Aªº¨t²Î°t¸m¡D½T©w§A¥Î root Ã±¤JµM«á°õ¦æ {\ttfamily make install}¡D
³o±N½sÄ¶ Java µ{¦¡¡A­×§ï {\ttfamily java.cgi} «ü¥O½Z¥H²Å¦X§Aªº¨t²Î¡A¨Ã¥B±Nµ{¦¡¦w¸Ë¶i¾A·íªº¦ì¸m¡D
¦pªG§A§Æ±æ¾Ö¦³¥»¤åªº HTML ª©¥»¥H¤Î¤@¥÷ HTML ´ú¸Õ¤å¥ó¡A§ï¥Î {\ttfamily make all}¡D




\subsection{´ú¸Õ§Aªº¦w¸Ë\label{install-test}}

¥Ñ¥»®M¥ó¦w¸Ëªº HTML ¤å¥ó¥s°µ {\ttfamily javacgitest.html}, {\ttfamily javaemailtest.html} ¥H¤Î {\ttfamily javahtmltest.html}¡D
¦pªG§A¦b«e¸`¨Ï¥Î {\ttfamily make all}¡A¥¦­Ì·|©ñ¦b§A©ó Makefile ¤¤«ü©wªº {\ttfamily WEBDIR} ¥Ø¿ý¤¤¡D
¦pªG¤£¬O¡A§A¥i¥H°õ¦æ {\ttfamily make test} ±q {\ttfamily javacgitest.html-dist}, {\ttfamily javaemailtest.html-dist} ¥H¤Î {\ttfamily javahtmltest.html-dist} ¨Ó«Ø¥ß¥¦­Ì¡D

·í§A½T©w§Aªº¦w¸Ë¥i¥H¥¿½T¹B§@«á¡A§A¥i¯à§Æ±æ±q§Aªº JAVACGI ¥Ø¿ý²¾°£ {\ttfamily CGI\_Test}, {\ttfamily Email\_Test} ¥H¤Î {\ttfamily HTML\_Test} Ãþ§O¡AÁÙ¦³±q {\ttfamily WEBDIR} ¥Ø¿ý²¾°£ {\ttfamily javacgitest.html}, {\ttfamily javaemailtest.html} ¥H¤Î{\ttfamily javahtmltest.html}¡A¦]¬°¥¦­Ì·|Åã¥ÜÀ³¸Ó¥u¦³¦øªA¾¹ºÞ²zªÌ¤~¬Ý±o¨ìªº¨Ï¥ÎªÌ¸ê°T¡D






\section{³]©w¦øªA¾¹¥H°õ¦æ Java CGI µ{¦¡ (Â²²¤½g)
\label{install-short}}

\begin{enumerate}
\item ±q
\onlynameurl{ftp://ftp.orbits.com/pub/software/java\_cgi-0.5.tgz}.
¨ú¦^ {\itshape Java CGI\/} ®M¥ó¡D(ª©¥»¸¹½X¥i¯à·|§ïÅÜ¡D)
\item ¥Î³o­Ó«ü¥O¸Ñ¶}®M¥ó:
\begin{verbatim}
gzip -dc java_cgi-0.5.tgz | tar -xvf -
\end{verbatim}

(¦pªGª©¥»¸¹½X§ïÅÜ¤F¡A´N§ï¥Î¨º®M¥ó¸Ìªº¡D)
\item ­×§ï¦b·s²£¥Íªº {\ttfamily java\_cgi-0.5} ¥Ø¿ý¸Ìªº {\ttfamily Makefile} ¥H²Å¦X§Aªº¨t²Î¡D
\item ¥H root ¨­¥÷¡A°õ¦æ {\ttfamily make install}¡D
³o±N½sÄ¶ Java µ{¦¡¡A¥[¤W§A¨t²Î¯S©wªº¸ê°T¨Ã¦w¸Ë³\¦hÀÉ®×¡D
¦pªG§A§Æ±æ¾Ö¦³¥»¤åªº HTML ª©¥»¥H¤Î¤@¥÷ HTML ´ú¸Õ¤å¥ó¡A§ï¥Î {\ttfamily make all}¡D
\item µM«áÀ³¸Ó´N¥i¥H¥Î¤F¡D
\end{enumerate}







\section{°õ¦æ¤@­Ó Java CGI µ{¦¡}




\subsection{¥H CGI ¼Ò¦¡°õ¦æ Java µ{¦¡ªº»ÙÃª}

±q web ¦øªA¾¹°õ¦æ Java µ{¦¡¦³¨â­Ó¥D­nªº°ÝÃD:




\subsubsection{§A¤£¯à¹³¤@¯ë°õ¦æÀÉ¤@¼Ë°õ¦æ Java µ{¦¡}

§A¥²»Ý°õ¦æ Java ªº°õ¦æ®É¨è(run-time)¸ÑÄ¶¾¹¨Ã¥B¥H©R¥O¦Cªº¤è¦¡´£¨Ñªì©lÃþ§O(µ{¦¡°õ¦æ©Ò»Ý)¡D
¦b¤@­Ó HTML form ¸Ì­±¨S¦³¿ìªk´£¨Ñ©R¥O¦Cµ¹ web ¦øªA¾¹¡D




\subsubsection{Java µ{¦¡¨S¦³¤@¯ëªº¤èªk¥i¥H¨ú±oÀô¹ÒÅÜ¼Æ}

Java µ{¦¡©Ò»Ýªº¨C­ÓÀô¹ÒÅÜ¼Æ³£¥²»Ý³Q¶Ç¤J¡D
(¦b Java µ{¦¡¤¤)¨S¦³Ãþ¦ü {\bfseries C} »y¨¥ªº {\ttfamily getenv()} ¨ç¼Æ¡D




\subsection{°õ¦æ Java CGI ¸Ñ¨M°ÝÃD}

¬°¤F³B²z³o¨Ç§xÃø¡A§Ú¼g¤F¤@­Ó CGI «ü¥O½Zµ{¦¡¡A´£¨Ñ Java ¸ÑÄ¶¾¹©Ò»Ýªº¸ê°T¡D




\subsubsection{java.cgi «ü¥O½Z}

³o­Ó«ü¥O½ZºÞ²z HTTP ¦øªA¾¹»P§A§Æ±æ¨Ï¥Îªº Java CGI µ{¦¡¤§¶¡ªº¤¬°Ê¡D
¥¦±q server ºÝ´£¨Ñªº¸ê®Æ¤¤¨ú¥X§A·Q­n°õ¦æµ{¦¡ªº¦WºÙ¡D
¥¦±N©Ò¦³ªºÀô¹ÒÅÜ¼Æ¸ê®Æ±Nìp¨ì¤@­Ó¼È¦sÀÉ¸Ì¡DµM«á¡A¥¦±N³o­ÓÀÉ®×¥H¤Îµ{¦¡¦WºÙ¥[©R¥O¦C¤¤¡A
°õ¦æ Java ªº°õ¦æ®É¨è¸ÑÄ¶¾¹¡D

{\ttfamily java.cgi} «ü¥O½Zªº³]©w»P¦w¸Ë¦b
\ref{make-programs} {(¨M©w§Aªº¥»¦a¥Ø¿ýµ¦²¤)}
¤@¸`»¡©ú¡D




\subsubsection{±q HTML form ¤¤¤Þµo java.cgi}

¨Ï¥Î Java CGI µ{¦¡ªº HTML form ¥H¤U­±ªº¤è¦¡«ü©w¨ä¦æ¬°:
\begin{verbatim}
<form action="/cgi-bin/java.cgi/CGI_Test" method="POST">
\end{verbatim}

¨ä¤¤ {\ttfamily /cgi-bin/} ¬O§A¥»¦aºÝªº CGI ¤G¶i¦ì°õ¦æÀÉ¥Ø¿ý¡A
{\ttfamily java.cgi} ¬O¤¹³\§Ú­Ì±q web ¤W°õ¦æ Java µ{¦¡ªº«eºÝ¡A
¦Ó {\ttfamily CGI\_Test} ¬O¤@­Ó±ý°õ¦æªº Java µ{¦¡¦WºÙªº¨Ò¤l¡D




\section{¨Ï¥Î Java CGI Ãþ§O}

¥Ø«e¬°¤î¤ä´©¤T­Ó¥D­nÃþ§O -- \ref{cgi-class} {(CGI)}, \ref{email-class} {(Email)} ¥H¤Î \ref{html-class} {(HTML)}¡D
§Ú¥¿¦b¦Ò¼{¤À§O¥[¤W³B²z MIME ®æ¦¡¿é¤J»P¿é¥XªºÃþ§O --    MIMEin \& MIMEout¡D

¤]¦³¤@¨Ç¥Î¨Ó¤ä´©©M´ú¸ÕªºÃþ§O¡D
\ref{cgi-test-class} {(CGI\_Test)}, \ref{email-test-class} {(Email\_Test)} ¥H¤Î \ref{email-test-class} {(HTML\_Test)} ¬O®³¨Ó´ú¸Õ§Aªº¦w¸Ë¥Îªº¡D
§A¤]¥i®³¨Ó·í°µ§A¦Û¤vµ{¦¡¤¤¨Ï¥Î³o¨ÇÃþ§O®wªº°_ÂI¡D
\ref{text-class} {(Text)} Ãþ§O¬O {\ttfamily Email} »P {\ttfamily HTML} ªº°ò©³Ãþ§O¡D




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




\subsubsection{Ãþ§O»yªk}

{\ttfamily public class CGI}




\subsubsection{Ãþ§O´y­z}

CGI Ãþ§O«ù¦³ªº¡uCGI ¸ê°T¡v -- web ¦øªA¾¹©Ò³]©wªºÀô¹ÒÅÜ¼Æ¥H¤Î«ö¤U {\bfseries submit} ®É¥Ñ form ©Ò¶Ç°e¨Óªº¦WºÙ/¼Æ­È¡D
©Ò¦³ªº¸ê°T³£³Q¦s©ñ¦bÃþ§Oª«¥ó {\ttfamily Properties} ¤¤¡D

³o­ÓÃþ§O¦ì©ó ``Orbits.net'' ¥]¸Ë(package)¤¤¡D




\subsubsection{¦¨­ûºK­n}

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        CGI()         //  «Øºc¤l
        getNames()    //  ¨ú±o¦WºÙªº¦ê¦C
        getValue()    //  ¨ú±o«ü©w¦WºÙªº­È
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}





\subsubsection{½Ð°Ñ¾\}

{\ttfamily CGI\_Test}.




\subsubsection{CGI()}

\begin{description}
\item[¥Øªº] \mbox{}

«Øºc¤@¥]§t¥i¥Î CGI ¸ê®Æªºª«¥ó

\item[»yªk] \mbox{}

{\ttfamily public CGI()}

\item[´y­z] \mbox{}

·í¤@ CGI ª«¥ó³Q«Ø¥ß®É¡A©Ò¦³¥i¥Îªº CGI ¸ê®Æ³Q¦s©ñ¦b·sª«¥óªº§½³¡Àx¦sªÅ¶¡¤¤¡D

\end{description}





\subsubsection{getNames()}

\begin{description}
\item[¥Øªº] \mbox{}

¦C¥X¤w©w¸q¹ïÀ³­Èªº¦WºÙ¡D

\item[»yªk] \mbox{}

{\ttfamily public Enumeration getNames ()}

\item[´y­z] \mbox{}

´£¨Ñ©Ò¦³¤w©w¸q¹ïÀ³­Èªº¦WºÙªº§¹¾ã¦Cªí¡D

\item[ªð¦^ ] \mbox{}

©Ò¦³¦WºÙªº {\ttfamily Enumeration} ª«¥ó¡D

\end{description}





\subsubsection{getValue()}

\begin{description}
\item[¥Øªº] \mbox{}

¨ú¦^©Ò«ü©w¹ïÀ³©ó {\bfseries name} ªº {\bfseries value}¡D

\item[»yªk] \mbox{}

{\ttfamily public String getValue ( String name )}

\item[´y­z] \mbox{}

³o­Ó¤èªk´£¨Ñ¥Ñ HTML form °e¤Jªº {\ttfamily names} »P {\ttfamily values} ¤§¶¡ªº¹ïÀ³¡D

\item[°Ñ¼Æ] \mbox{}

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

©Ò¿ï¾ÜªºÁä­È¡D

\end{description}


\item[ªð¦^ ] \mbox{}

¤@­Ó¥]§t¹ïÀ³­Èªº {\ttfamily String} ª«¥ó¡D

\end{description}





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

³o­ÓÃþ§O´£¨Ñ¨â­Ó¥\¯à¡A¤@­Ó¦p¦ó¨Ï¥Î {\ttfamily CGI} Ãþ§Oªº¨Ò¤l¥H¤Î¤@­Ó¥Î¨Ó½T©w {\itshape Java CGI\/} ®M¥ó¹B§@¥¿±`ªº´ú¸Õµ{¦¡¡D 




\subsubsection{¦¨­ûºK­n}

\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()} ¤èªk¡D

\item[»yªk] \mbox{}

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

\item[´y­z] \mbox{}

³o¬O CGI µ{¦¡ªº¤J¤f¡A¥u¤£¹Lªð¦^¥i¥Îªº¦WºÙ/¼Æ­È¹ï»P¨ä²{­Èªº¦Cªí¡D

\item[°Ñ¼Æ ] \mbox{}

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

¥Ñ {\ttfamily java.cgi} «ü¥O½Z¶Ç¤Jªº°Ñ¼Æ¡D¥Ø«e¥¼¨Ï¥Î¡D

\end{description}


\end{description}





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




\subsubsection{Ãþ§O»yªk}

{\ttfamily public class Email extends Text}




\subsubsection{Ãþ§O´y­z}

°T®§¥Ñ {\ttfamily Text} Ãþ§Oªº {\ttfamily add*()} ¤èªk©Ò«Ø¥ß¡A¥[¤J¹q¤l¶l¥ó±M¥Îªº¤èªk¡D
§¹¦¨«á¡A°T®§³Q°e¨ì¥¦ªº¥Øªº¦a¡D

³o­ÓÃþ§O¦ì©ó ``Orbits.net'' ¥]¸Ë¤¤¡D




\subsubsection{¦¨­ûºK­n}

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        Email()      //  «Øºc¤l
        send()       //  °e¥X¹q¤l¶l¥ó°T®§
        sendTo()     //  ¼W¥[°T®§ªº¥Øªº¦a
        subject()    //  ³]©w°T®§ªº¥DÃD
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}





\subsubsection{½Ð°Ñ¾\}

{\ttfamily Email\_Test, Text}.




\subsubsection{Email()}

\begin{description}
\item[¥Øªº] \mbox{}

«Ø¥ß¤@¥]§t¹q¤l¶l¥ó°T®§ªºª«¥ó¡D

\item[»yªk] \mbox{}

{\ttfamily public Email()}

\item[´y­z] \mbox{}

«Ø¥ß¤@ªÅªº°T®§¥H§Q¥Ñ¦¹Ãþ§O¤èªk¥[¥H§¹¦¨¡D

\item[½Ð°Ñ¾\] \mbox{}

{\ttfamily Text}.

\end{description}





\subsubsection{send()}

\begin{description}
\item[¥Øªº] \mbox{}

°e¥X¹q¤l¶l¥ó°T®§¡D

\item[»yªk] \mbox{}

{\ttfamily public void send ()}

\item[´y­z] \mbox{}

¥»¤èªk½s±Æ¨Ã°e¥X°T®§¡D¦pªG¥Øªº¦ì§}ÁÙ¥¼³]©w¡A±N¤£·|¦³°Ê§@µo¥Í¡D

\end{description}





\subsubsection{sendTo()}

\begin{description}
\item[¥Øªº] \mbox{}

¼W¥[¥»°T®§ªº¥Øªº¦a¡D

\item[»yªk] \mbox{}

{\ttfamily public String sendTo ( String address )}

\item[´y­z] \mbox{}

±N {\ttfamily address} ¥[¤J¨ì¥Øªº¦a¦Cªí¤¤¡D¤@¥÷¹q¤l¶l¥ó¥Øªº¦aªº¼Æ¥Ø¬O¨S¦³­­¨îªº¡D
¤£¹L§Ú¬Û«H¦pªG§A«Ø¤F¹L¤jªº¦Cªí¡A§A±N¥i¯à·|¶W¹L§Aªº{\itshape ¶l¥ó¶Ç°e¥N²zµ{¦¡(MTA)\/} ©Ò¯à±µ¨üªº¤j¤p©Î¥Î¥ú§Aªº°O¾ÐÅé¡D

\item[°Ñ¼Æ] \mbox{}

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

¥»°T®§±ý°e¹Fªº¤@­Ó¥Øªº¦a¡D

\end{description}


\end{description}





\subsubsection{subject()}

\begin{description}
\item[¥Øªº] \mbox{}

³]©w¥»°T®§ªº¥DÃD¡D

\item[»yªk] \mbox{}

{\ttfamily public void subject ( String subject )}

\item[´y­z] \mbox{}

¥»¤èªk³]©w¹q¤l¶l¥óªº {\ttfamily Subject:} Äæ¦ì¡D
¦pªG©I¥s¶W¹L¤@¦¸¥H¤W¡A·|¨Ï¥Î³Ì«á¤@¦¸©I¥sªºµ²ªG¡D

\item[°Ñ¼Æ] \mbox{}

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

{\ttfamily Subject:} Äæ¦ìªº¤å¦r¡D

\end{description}


\end{description}





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

³o­ÓÃþ§O´£¨Ñ¤@­Ó¦p¦ó¨Ï¥Î {\ttfamily Email} Ãþ§Oªº¨Ò¤l¥H¤Î¤@­Ó¥Î¨Ó½T©w {\itshape Java CGI\/} ®M¥ó¹B§@¥¿±`ªº´ú¸Õµ{¦¡¡D 




\subsubsection{¦¨­ûºK­n}

\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()} ¤èªk¡D

\item[»yªk] \mbox{}

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

\item[´y­z] \mbox{}

³o¬O CGI µ{¦¡ªº¤J¤f¡Aªð¦^¥i¥Îªº¦WºÙ/¼Æ­È¹ï»P¨ä²{­Èªº¦Cªí¡D
¥¦¤]±N¦Cªí°e¨ì¥Ñ {\ttfamily Email} ÅÜ¼Æ©Ò«ü©wªº¦ì§}¡D

\item[°Ñ¼Æ ] \mbox{}

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

¥Ñ {\ttfamily java.cgi} «ü¥O½Z¶Ç¤Jªº°Ñ¼Æ¡D¥Ø«e¥¼¨Ï¥Î¡D

\end{description}


\end{description}





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






\subsubsection{Ãþ§O»yªk}

{\ttfamily public class HTML extends Text}




\subsubsection{Ãþ§O´y­z}

°T®§¥Ñ {\ttfamily Text} Ãþ§Oªº {\ttfamily add*()} ¤èªk©Ò«Ø¥ß¡A¨Ã¥[¤J HTML ±M¥Îªº¤èªk¡D
§¹¦¨«á¡A°T®§³Q°e¨ì¥¦ªº¥Øªº¦a¡D

¥Ø«e¡AÁÙ¨S¦³¿ù»~ÀË¬d¾÷¨î¥H½T«O¦Cªí«Ø¥ßªº¤èªk³Q¥H¥¿½Tªº¶¶§Ç¨Ï¥Î¡D
¦]¦¹µ{¦¡³]­pªÌ¥²¶·¦Û¦æ½T©w¨S¦³¹H¤Ï HTML ªº»yªk¡D

³o­ÓÃþ§O¦ì©ó ``Orbits.net'' ¥]¸Ë¤¤¡D




\subsubsection{¦¨­ûºK­n}

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        HTML()                  //  «Øºc¤l
        author()                //  ³]©w¤å¥ó§@ªÌªº¦W¦r
        definitionList()        //  °_©l¤@©w¸q¦Cªí
        definitionListTerm()    //  ¦b©w¸q¦Cªí¤¤¼W¥[¤@¶µ¥Ø
        endList()               //  µ²§ô¦Cªí
        listItem()              //  ¦b¦Cªí¤¤¼W¥[¤@¶µ¥Ø
        send()                  //  °e¥X¦¹ HTML °T®§
        title()                 //  ³]©w¤å¥ó¼ÐÃDªº¤å¦r
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}





\subsubsection{½Ð°Ñ¾\}

{\ttfamily HTML\_Test, Text}.




\subsubsection{HTML()}

\begin{description}
\item[¥Øªº] \mbox{}

«Ø¥ß¤@¥]§t HTML °T®§ªºª«¥ó¡D

\item[»yªk] \mbox{}

{\ttfamily public HTML()}

\item[´y­z] \mbox{}

«Ø¥ß¤@ªÅªº°T®§¥H§Q¥Ñ HTML ¤èªk¥[¥H§¹¦¨¡D

\item[½Ð°Ñ¾\] \mbox{}

{\ttfamily Text}.

\end{description}





\subsubsection{author()}

\begin{description}
\item[¥Øªº] \mbox{}

³]©w¤å¥ó§@ªÌªº¦W¦r¡D

\item[»yªk] \mbox{}

{\ttfamily public void author ( String author )}

\item[´y­z] \mbox{}

±N¤å¥óªº§@ªÌ¦W¦r³]©w¬° {\ttfamily author}¡D

\item[°Ñ¼Æ] \mbox{}

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

¥Î¨Ó§@¬°¦¹°T®§§@ªÌªº¤å¦r¡D

\end{description}


\item[½Ð°Ñ¾\] \mbox{}

{\ttfamily title()}.

\end{description}





\subsubsection{definitionList()}

\begin{description}
\item[¥Øªº] \mbox{}

°_©l¤@©w¸q¦Cªí¡D

\item[»yªk] \mbox{}

{\ttfamily public void definitionList ()}

\item[´y­z] \mbox{}

°_©l¤@©w¸q¦Cªí¡D
¤@­Ó{\itshape ©w¸q¦Cªí\/}¬O¤@ºØ¯S§Oªº¦Cªí¡A¦Cªí¤¤ªº¨C¤@¶µ¬O¥Ñ {\itshape ¶µ¥Ø\/} ¨ä«á¸òµÛ©w¸qªº {\itshape ¤å¦r\/} ©Ò§Î¦¨ªº¡D
¤@©w¸q¦Cªíªº°_©lÀ³¸òµÛ(¦Ü¤Ö)¤@¶µ¥Ø/¤å¦r°t¹ï¥H¤Î¤@­Ó {\ttfamily endList()} ¤èªkªº©I¥s¡D
{\itshape ½Ðª`·N¡A¥Ø«e¦Cªí¤£¯à¬O±_ª¬ªº\/}¡D

\item[½Ð°Ñ¾\] \mbox{}

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

\end{description}





\subsubsection{definitionListTerm()}

\begin{description}
\item[¥Øªº] \mbox{}

¦b©w¸q¦Cªí¤¤¼W¥[¤@¶µ¥Ø¡D

\item[»yªk] \mbox{}

{\ttfamily public void definitionListTerm ()}

\item[´y­z] \mbox{}

¦b©w¸q¦Cªí¤¤¼W¥[¤@¶µ¥Ø¡D
¥Ø«e¦Cªíªº¶µ¥Ø³¡¥÷ªº¤å¦rÀ³¸Ó¦b¦¹¤èªk³Q©I¥s«á¨Ã¥B¦b¹ïÀ³ªº {\ttfamily listItem} ¤èªk³Q©I¥s«e¥[¤J¡D

\item[½Ð°Ñ¾\] \mbox{}

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

\end{description}





\subsubsection{endList()}

\begin{description}
\item[¥Øªº] \mbox{}

µ²§ô¤@¦Cªí¡D

\item[»yªk] \mbox{}

{\ttfamily public void endList ()}

\item[´y­z] \mbox{}

¥»¤èªkµ²§ô¤@¦Cªí¡D{\itshape ª`·N¡A¥Ø«e¦Cªí¤£¯à¬O±_ª¬ªº\/}¡D

\item[½Ð°Ñ¾\] \mbox{}

{\ttfamily definitionList()}.

\end{description}





\subsubsection{listItem()}

\begin{description}
\item[¥Øªº] \mbox{}

¦b¦Cªí¤¤¼W¥[¤@¶µ¥Ø¡D

\item[»yªk] \mbox{}

{\ttfamily public void listItem ()}

\item[] \mbox{}

{\ttfamily public void listItem ( String item )}

\item[] \mbox{}

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

\item[´y­z] \mbox{}

¦b¦Cªí¤¤¼W¥[¤@¶µ¥Ø¡D
¦pªG¨Ï¥Î²Ä¤@ºØ§Î¦¡¡A¥Ø«e¦Cªí¶µ¥Øªº¤å¦rÀ³¦b¦¹¤èªk³Q¥s«á¨Ã¦b¥ô¦ó¨ä¥¦¦Cªí¤èªk³Q©I¥s«e¥[¤J¡D
¦b²Ä¤G¤Î²Ä¤TºØ§Î¦¡¤¤¡A{\ttfamily item} ¤å¦r³Q«ü©w¬°¤èªkªº°Ñ¼Æ¦Ó¤£¬O¦b¨ä«á³Q¥[¤J¡D
²Ä¤TºØ§Î¦¡¬O©w¸q¦Cªí±M¥Î¨Ã¥B¦P®É«ü©w¦Cªíªº¶µ¥Ø»P©w¸q¤å¦r³¡¥÷¡D

\item[°Ñ¼Æ] \mbox{}

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

¦¹¦Cªí¶µ¥Øªº¤å¦r¡D

\item[term] \mbox{}

¦¹©w¸q¦Cªíªº¶µ¥Ø³¡¥÷ªº¤å¦r¡D

\end{description}


\item[½Ð°Ñ¾\] \mbox{}

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

\end{description}





\subsubsection{send()}

\begin{description}
\item[¥Øªº] \mbox{}

°e¥X¦¹ HTML °T®§¡D

\item[»yªk] \mbox{}

{\ttfamily public void send ()}

\item[´y­z] \mbox{}

°e¥X¦¹ HTML °T®§¡D

\end{description}





\subsubsection{title()}

\begin{description}
\item[¥Øªº] \mbox{}

³]©w¤å¥ó¼ÐÃDªº¤å¦r¡D

\item[»yªk] \mbox{}

{\ttfamily public void title ( String title )}

\item[´y­z] \mbox{}

³]©w¦¹¤å¥óªº¼ÐÃD¤å¦r¡D

\item[°Ñ¼Æ] \mbox{}

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

¦¹¤å¥ó¼ÐÃDªº¤å¦r¡D

\end{description}


\item[½Ð°Ñ¾\] \mbox{}

{\ttfamily author()}.

\end{description}





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

³o­ÓÃþ§O´£¨Ñ¤@­Ó¦p¦ó¨Ï¥Î {\ttfamily HTML} Ãþ§Oªº¨Ò¤l¥H¤Î¤@­Ó¥Î¨Ó½T©w {\itshape Java CGI\/} ®M¥ó¹B§@¥¿±`ªº´ú¸Õµ{¦¡¡D 




\subsubsection{¦¨­ûºK­n}

\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()} ¤èªk¡D

\item[»yªk] \mbox{}

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

\item[´y­z] \mbox{}

³o¬O CGI µ{¦¡ªº¤J¤f¡Aªð¦^¦b¤@ HTML ¤å¥ó¤¤¥i¥Îªº¦WºÙ/¼Æ­È°t¹ï»P¨ä²{­Èªº¦Cªí¡A¨Ã±N¨C¤@¦WºÙ/¼Æ­È°t¹ïÅã¥Ü¦b¤@©w¸q¦Cªíªº¤¸¯À¸Ì¡D

\item[°Ñ¼Æ ] \mbox{}

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

¥Ñ {\ttfamily java.cgi} «ü¥O½Z¶Ç¤Jªº°Ñ¼Æ¡D¥Ø«e¥¼¨Ï¥Î¡D

\end{description}


\end{description}





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




\subsubsection{Ãþ§O»yªk}

{\ttfamily public abstract class Text}




\subsubsection{Ãþ§O´y­z}

¥»Ãþ§O¬° {\ttfamily \ref{email-class} {(Email)}} »P {\ttfamily \ref{html-class} {(HTML)}} ªº°òÂ¦Ãþ§O¡D
°T®§¥H¦¹Ãþ§Oªº¤èªk«Ø¥ß¡A¨Ã¥H­l¥ÍÃþ§Oªº¤èªk§¹¦¨¨Ã½s±Æ¡D

³o­ÓÃþ§O¦ì©ó ``Orbits.net'' ¥]¸Ë¤¤¡D




\subsubsection{¦¨­ûºK­n}

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        Text()            //  «Øºc¤l
        add()             //  ¥[¤J¤å¦r¨ì¦¹ª«¥ó
        addLineBreak()    //  ¥[¤J¤À¦æ²Å¸¹
        addParagraph()    //  ¥[¤J¤À¬q²Å¸¹
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}





\subsubsection{½Ð°Ñ¾\}

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




\subsubsection{add()}

\begin{description}
\item[¥Øªº] \mbox{}

¦b¦¹¶µ¥Ø¤¤¥[¤J¤å¦r¡D

\item[»yªk] \mbox{}

{\ttfamily public void add ( char addition )}

\item[] \mbox{}

{\ttfamily public void add ( String addition )}

\item[] \mbox{}

{\ttfamily public void add ( StringBuffer addition )}

\item[´y­z] \mbox{}

¦b³o­Ó¤å¦r¶µ¥Øªº¤º®e¤¤¥[¤J {\ttfamily addition}¡D

\item[°Ñ¼Æ] \mbox{}

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

¥[¤J¦¹¤å¦r¶µ¥Øªº¤å¦r¡D

\end{description}


\item[½Ð°Ñ¾\] \mbox{}

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

\end{description}





\subsubsection{addLineBreak()}

\begin{description}
\item[¥Øªº] \mbox{}

±j­¢¦b¥Ø«e¤å¦r¦ì¸m¤À¦æ¡D

\item[»yªk] \mbox{}

{\ttfamily public void addLineBreak ()}

\item[´y­z] \mbox{}

¦b¥Ø«e¦ì¸m¥[¤J¤@¤À¦æ²Å¸¹¡D

\item[½Ð°Ñ¾\] \mbox{}

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

\end{description}





\subsubsection{addParagraph()}

\begin{description}
\item[¥Øªº] \mbox{}

°_©l¤@·sªº¬q¸¨¡D

\item[»yªk] \mbox{}

{\ttfamily public void add ()}

\item[´y­z] \mbox{}

¦b¥Ø«eªº¤å¦r¦ì¸m°_©l¤@·sªº¬q¸¨¡D

\item[½Ð°Ñ¾\] \mbox{}

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

\end{description}





\section{¥¼¨Óªº­pµe}

\begin{itemize}
\item {\ttfamily Email} Ãþ§OªºÂX¥R:
\begin{description}
\item[Email( int capacity )] \mbox{}

¥Î¨Ó·í§Ú­Ìª¾¹D»Ý¦h¤ÖªÅ¶¡¨ÓÀx¦s°T®§®É¡D 

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

¼W¥[­ì©l¹q¤l¶l¥ó¥Øªº¦aªº¦Cªí¡D

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

¼W¥[¤@­Ó½Æ»s¹q¤l¶l¥ó¥Øªº¦a¡D

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

¼W¥[½Æ»s¹q¤l¶l¥ó¥Øªº¦aªº¦Cªí¡D

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

¼W¥[¤@­Ó Blind Carbon-Copy ªº¹q¤l¶l¥ó¥Øªº¦a¡D

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

¼W¥[ Blind Carbon-Copy ªº¹q¤l¶l¥ó¥Øªº¦a¦Cªí

\end{description}
\item {\ttfamily HTML} Ãþ§OªºÂX¥R:
\begin{description}
\item[HTML( int capacity )] \mbox{}

¥Î¨Ó·í§Ú­Ìª¾¹D»Ý¦h¤ÖªÅ¶¡¨ÓÀx¦s°T®§®É¡D 

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

°_©l¤@µL§Ç¦Cªí¡D

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

°_©l¤@¦³§Ç¦Cªí¡D

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

°_©l¤@¥Ø¿ý¦Cªí¡D

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

°_©l¤@¿ï³æ¦Cªí¡D

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

«ü©w¤@Áã(anchor)¡D

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

«ü©w¤@³sµ²¡D

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

«ü©w¤@ applet ³sµ²¡D

\end{description}
\item ¤¹³\±_ª¬ªº HTML ¦Cªí¡D
\item ¼W¥[¿ù»~ÀË¬d½X¥H±j­¢­×¥¿ HTML ¦Cªí®æ¦¡½Xªº¶¶§Ç¡D
\item Àô¹ÒÅÜ¼Æ¸ê®ÆªºÀÉ®×¦ì¸mÀ³¯à¥Ñ {\ttfamily Makefile} ³]©w¡D
\item °£¥h¦b³B²z GET ¤èªkªº¸ê®Æ¶Ç°e®É¥X²{¤§°²ªºªÅ¦WºÙ/¼Æ­È¹ï¡D
\item ¦Ò¼{Åý {\ttfamily CGI} ¹ê§@ {\ttfamily java.util.Enumeration} ¬É­±¥H¨Ì§Ç¦a´£¨ÑÅÜ¼Æ¦WºÙ¡D
\item ¥[¤J¤@ {\ttfamily Test} Ãþ§O¡A¨Ï¥Î¥»®M¥ó¤¤ªº¨C­Ó¤èªk¡D
\item »¡©ú {\ttfamily CGI\_Test}, {\ttfamily Email\_Test} »P {\ttfamily HTML\_Test}
¦p¦ó¬Û¤¬«Ø¥ß¥H´£¨Ñ°»¿ù¥Øªº¥Îªºº¥¶i´ú¸Õ¡D
\item »¡©ú¦p¦ó´ú¸Õ¨Ï¥Î¥»®M¥óªº¨C¤@­Ó¯S¼x¡D
\end{itemize}







\section{ª©¥»­×§ï°O¿ý}




\subsection{¥Ñ 0.4 ¨ì 0.5 ªº­×§ï}

\begin{itemize}
\item §ó·s¤å¥ó»Pµù¸Ñ¥H¤ÏÀ³·sÄÀ¥Xªºª©¥»¡C
\end{itemize}





\subsection{¥Ñ 0.3 ¨ì 0.4 ªº­×§ï}

\begin{itemize}
\item ¼W²K {\ttfamily HTML} Ãþ§O´£¨Ñªº°ò¥»¥\¯à¡D
\item ¼W¥[ {\ttfamily HTML\_Test} Ãþ§O»P {\ttfamily javahtmltest.html-dist}¡D
\item ¼W¥[ HTML ¤èªk¨Ó³B²z©w¸q¦Cªí¡D
\end{itemize}





\subsection{¥Ñ 0.2 ¨ì 0.3 ªº­×§ï}

\begin{itemize}
\item ¥[¤J {\ttfamily Text} »P {\ttfamily Email} Ãþ§O¡D
{\ttfamily HTML} ¤]³Q¥[¤J¡A¦ý¦¹®É¥u¬O¤@¤p³¡¥÷¦Ó¤w¡D
\item ±N¤£¦PªºÃþ§O©ñ¤J¥]¸Ë¤¤¡D
¥D­nªºÃþ§O¦b {\ttfamily Orbits.net.*}¡A¤ä´©¥ÎªºÃþ§O {\ttfamily Text} ©ñ¦b {\ttfamily Orbits.text.Text}¡D
\item ±N {\ttfamily CGItest} §ï¬° {\ttfamily CGI\_Test}¡D
\item ¼W¥[ {\ttfamily Email\_Test} Ãþ§O¡D
\end{itemize}





\subsection{¥Ñ 0.1 ¨ì 0.2 ªº­×§ï}

\begin{itemize}
\item Àô¹ÒÅÜ¼Æ³Q©ñ¤J¤@¼È¦sÀÉ¤¤¦Ó¤£¬O«j±jÀ½¤J Java ¸ÑÄ¶¾¹ªº©R¥O¦C¸Ì¡D
{\ttfamily CGI} Ãþ§O»P {\ttfamily java.cgi} ¤w³Q­×§ï¡D
\item ±N {\ttfamily javacgitest.html} ¤å¥ó¥[¤J¦¨¬°®M¥óªº¤@³¡¥÷¡D
\item ¦w¸Ë®É¥Ñ {\ttfamily make} ©Ò­×§ïªºÀÉ®×¥þ³£¥Hµ²§À {\itshape -dist\/} ¨Ó©R¦W¡D
\end{itemize}




\end{document}
