?? java-cgi-howto-5.html
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>Java CGI HOWTO 中譯版: 使用 Java CGI 類別</TITLE>
<LINK HREF="Java-CGI-HOWTO-6.html" REL=next>
<LINK HREF="Java-CGI-HOWTO-4.html" REL=previous>
<LINK HREF="Java-CGI-HOWTO.html#toc5" REL=contents>
</HEAD>
<BODY>
<A HREF="Java-CGI-HOWTO-6.html">Next</A>
<A HREF="Java-CGI-HOWTO-4.html">Previous</A>
<A HREF="Java-CGI-HOWTO.html#toc5">Contents</A>
<HR>
<H2><A NAME="s5">5. 使用 Java CGI 類別</A></H2>
<P>目前為止支援三個主要類別 --
<A HREF="#cgi-class">CGI</A>,
<A HREF="#email-class">Email</A> 以及
<A HREF="#html-class">HTML</A>.
我正在考慮分別加上處理 MIME 格式輸入與輸出的類別 -- MIMEin & MIMEout.
<P>也有一些用來支援和測試的類別.
<A HREF="#cgi-test-class">CGI_Test</A>,
<A HREF="#email-test-class">Email_Test</A> 以及
<A HREF="#email-test-class">HTML_Test</A> 是拿來測試你的安裝用的.
你也可拿來當做你自己程式中使用這些類別庫的起點.
<A HREF="#text-class">Text</A> 類別是 <CODE>Email</CODE> 與 <CODE>HTML</CODE> 的基底類別.
<P>
<H2><A NAME="cgi-class"></A> <A NAME="ss5.1">5.1 CGI</A>
</H2>
<P>
<H3>類別語法</H3>
<P><CODE>public class CGI</CODE>
<P>
<H3>類別描述</H3>
<P>CGI 類別持有的「CGI 資訊」 -- web 伺服器所設定的環境變數以及按下 <B>submit</B> 時由 form 所傳送來的名稱/數值.
所有的資訊都被存放在類別物件 <CODE>Properties</CODE> 中.
<P>這個類別位於 ``Orbits.net'' 包裝(package)中.
<P>
<H3>成員摘要</H3>
<P>
<HR>
<PRE>
CGI() // 建構子
getNames() // 取得名稱的串列
getValue() // 取得指定名稱的值
</PRE>
<HR>
<P>
<H3>請參閱</H3>
<P><CODE>CGI_Test</CODE>.
<P>
<H3>CGI()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>建構一包含可用 CGI 資料的物件
<DT><B>語法</B><DD><P><CODE>public CGI()</CODE>
<DT><B>描述</B><DD><P>當一 CGI 物件被建立時,所有可用的 CGI 資料被存放在新物件的局部儲存空間中.
</DL>
<P>
<H3>getNames()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>列出已定義對應值的名稱.
<DT><B>語法</B><DD><P><CODE>public Enumeration getNames ()</CODE>
<DT><B>描述</B><DD><P>提供所有已定義對應值的名稱的完整列表.
<DT><B>返回 </B><DD><P>所有名稱的 <CODE>Enumeration</CODE> 物件.
</DL>
<P>
<H3>getValue()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>取回所指定對應於 <B>name</B> 的 <B>value</B>.
<DT><B>語法</B><DD><P><CODE>public String getValue ( String name )</CODE>
<DT><B>描述</B><DD><P>這個方法提供由 HTML form 送入的 <CODE>names</CODE> 與 <CODE>values</CODE> 之間的對應.
<DT><B>參數</B><DD><P>
<DL>
<DT><B>name</B><DD><P>所選擇的鍵值.
</DL>
<DT><B>返回 </B><DD><P>一個包含對應值的 <CODE>String</CODE> 物件.
</DL>
<P>
<H2><A NAME="cgi-test-class"></A> <A NAME="ss5.2">5.2 CGI_Test</A>
</H2>
<P>這個類別提供兩個功能,一個如何使用 <CODE>CGI</CODE> 類別的例子以及一個用來確定 <EM>Java CGI</EM> 套件運作正常的測試程式.
<P>
<H3>成員摘要</H3>
<P>
<HR>
<PRE>
main() // Program main().
</PRE>
<HR>
<P>
<H3>請參閱</H3>
<P><CODE>
<A HREF="#cgi-class">CGI</A></CODE>.
<P>
<H3>main()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>提供 <CODE>main()</CODE> 方法.
<DT><B>語法</B><DD><P><CODE>public static void main( String argv[] )</CODE>
<DT><B>描述</B><DD><P>這是 CGI 程式的入口,只不過返回可用的名稱/數值對與其現值的列表.
<DT><B>參數 </B><DD><P>
<DL>
<DT><B>argv[]</B><DD><P>由 <CODE>java.cgi</CODE> 指令稿傳入的參數.目前未使用.
</DL>
</DL>
<P>
<H2><A NAME="email-class"></A> <A NAME="ss5.3">5.3 Email</A>
</H2>
<P>
<H3>類別語法</H3>
<P><CODE>public class Email extends Text</CODE>
<P>
<H3>類別描述</H3>
<P>訊息由 <CODE>Text</CODE> 類別的 <CODE>add*()</CODE> 方法所建立,加入電子郵件專用的方法.
完成後,訊息被送到它的目的地.
<P>這個類別位於 ``Orbits.net'' 包裝中.
<P>
<H3>成員摘要</H3>
<P>
<HR>
<PRE>
Email() // 建構子
send() // 送出電子郵件訊息
sendTo() // 增加訊息的目的地
subject() // 設定訊息的主題
</PRE>
<HR>
<P>
<H3>請參閱</H3>
<P><CODE>Email_Test, Text</CODE>.
<P>
<H3>Email()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>建立一包含電子郵件訊息的物件.
<DT><B>語法</B><DD><P><CODE>public Email()</CODE>
<DT><B>描述</B><DD><P>建立一空的訊息以利由此類別方法加以完成.
<DT><B>請參閱</B><DD><P><CODE>Text</CODE>.
</DL>
<P>
<H3>send()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>送出電子郵件訊息.
<DT><B>語法</B><DD><P><CODE>public void send ()</CODE>
<DT><B>描述</B><DD><P>本方法編排并送出訊息.如果目的位址還未設定,將不會有動作發生.
</DL>
<P>
<H3>sendTo()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>增加本訊息的目的地.
<DT><B>語法</B><DD><P><CODE>public String sendTo ( String address )</CODE>
<DT><B>描述</B><DD><P>將 <CODE>address</CODE> 加入到目的地列表中.一份電子郵件目的地的數目是沒有限制的.
不過我相信如果你建了過大的列表,你將可能會超過你的<EM>郵件傳送代理程式(MTA)</EM> 所能接受的大小或用光你的記憶體.
<DT><B>參數</B><DD><P>
<DL>
<DT><B>address</B><DD><P>本訊息欲送達的一個目的地.
</DL>
</DL>
<P>
<H3>subject()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>設定本訊息的主題.
<DT><B>語法</B><DD><P><CODE>public void subject ( String subject )</CODE>
<DT><B>描述</B><DD><P>本方法設定電子郵件的 <CODE>Subject:</CODE> 欄位.
如果呼叫超過一次以上,會使用最後一次呼叫的結果.
<DT><B>參數</B><DD><P>
<DL>
<DT><B>subject</B><DD><P><CODE>Subject:</CODE> 欄位的文字.
</DL>
</DL>
<P>
<H2><A NAME="email-test-class"></A> <A NAME="ss5.4">5.4 Email_Test</A>
</H2>
<P>這個類別提供一個如何使用 <CODE>Email</CODE> 類別的例子以及一個用來確定 <EM>Java CGI</EM> 套件運作正常的測試程式.
<P>
<H3>成員摘要</H3>
<P>
<HR>
<PRE>
main() // Program main().
</PRE>
<HR>
<P>
<H3>請參閱</H3>
<P><CODE>
<A HREF="#email-class">Email</A></CODE>.
<P>
<H3>main()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>提供 <CODE>main()</CODE> 方法.
<DT><B>語法</B><DD><P><CODE>public static void main( String argv[] )</CODE>
<DT><B>描述</B><DD><P>這是 CGI 程式的入口,返回可用的名稱/數值對與其現值的列表.
它也將列表送到由 <CODE>Email</CODE> 變數所指定的位址.
<DT><B>參數 </B><DD><P>
<DL>
<DT><B>argv[]</B><DD><P>由 <CODE>java.cgi</CODE> 指令稿傳入的參數.目前未使用.
</DL>
</DL>
<P>
<H2><A NAME="html-class"></A> <A NAME="ss5.5">5.5 HTML</A>
</H2>
<P>
<P>
<H3>類別語法</H3>
<P><CODE>public class HTML extends Text</CODE>
<P>
<H3>類別描述</H3>
<P>訊息由 <CODE>Text</CODE> 類別的 <CODE>add*()</CODE> 方法所建立,并加入 HTML 專用的方法.
完成後,訊息被送到它的目的地.
<P>目前,還沒有錯誤檢查機制以確保列表建立的方法被以正確的順序使用.
因此程式設計者必須自行確定沒有違反 HTML 的語法.
<P>這個類別位於 ``Orbits.net'' 包裝中.
<P>
<H3>成員摘要</H3>
<P>
<HR>
<PRE>
HTML() // 建構子
author() // 設定文件作者的名字
definitionList() // 起始一定義列表
definitionListTerm() // 在定義列表中增加一項目
endList() // 結束列表
listItem() // 在列表中增加一項目
send() // 送出此 HTML 訊息
title() // 設定文件標題的文字
</PRE>
<HR>
<P>
<H3>請參閱</H3>
<P><CODE>HTML_Test, Text</CODE>.
<P>
<H3>HTML()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>建立一包含 HTML 訊息的物件.
<DT><B>語法</B><DD><P><CODE>public HTML()</CODE>
<DT><B>描述</B><DD><P>建立一空的訊息以利由 HTML 方法加以完成.
<DT><B>請參閱</B><DD><P><CODE>Text</CODE>.
</DL>
<P>
<H3>author()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>設定文件作者的名字.
<DT><B>語法</B><DD><P><CODE>public void author ( String author )</CODE>
<DT><B>描述</B><DD><P>將文件的作者名字設定為 <CODE>author</CODE>.
<DT><B>參數</B><DD><P>
<DL>
<DT><B>author</B><DD><P>用來作為此訊息作者的文字.
</DL>
<DT><B>請參閱</B><DD><P><CODE>title()</CODE>.
</DL>
<P>
<H3>definitionList()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>起始一定義列表.
<DT><B>語法</B><DD><P><CODE>public void definitionList ()</CODE>
<DT><B>描述</B><DD><P>起始一定義列表.
一個<EM>定義列表</EM>是一種特別的列表,列表中的每一項是由 <EM>項目</EM> 其後跟著定義的 <EM>文字</EM> 所形成的.
一定義列表的起始應跟著(至少)一項目/文字配對以及一個 <CODE>endList()</CODE> 方法的呼叫.
<EM>請注意,目前列表不能是巢狀的</EM>.
<DT><B>請參閱</B><DD><P><CODE>definitionListTerm()</CODE>, <CODE>endList()</CODE>, <CODE>listItem()</CODE>.
</DL>
<P>
<H3>definitionListTerm()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>在定義列表中增加一項目.
<DT><B>語法</B><DD><P><CODE>public void definitionListTerm ()</CODE>
<DT><B>描述</B><DD><P>在定義列表中增加一項目.
目前列表的項目部份的文字應該在此方法被呼叫後并且在對應的 <CODE>listItem</CODE> 方法被呼叫前加入.
<DT><B>請參閱</B><DD><P><CODE>definitionList()</CODE>, <CODE>listItem()</CODE>.
</DL>
<P>
<H3>endList()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>結束一列表.
<DT><B>語法</B><DD><P><CODE>public void endList ()</CODE>
<DT><B>描述</B><DD><P>本方法結束一列表.<EM>注意,目前列表不能是巢狀的</EM>.
<DT><B>請參閱</B><DD><P><CODE>definitionList()</CODE>.
</DL>
<P>
<H3>listItem()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>在列表中增加一項目.
<DT><B>語法</B><DD><P><CODE>public void listItem ()</CODE>
<DT><B></B><DD><P><CODE>public void listItem ( String item )</CODE>
<DT><B></B><DD><P><CODE>public boolean listItem ( String term, String item )</CODE>
<DT><B>描述</B><DD><P>在列表中增加一項目.
如果使用第一種形式,目前列表項目的文字應在此方法被叫後并在任何其它列表方法被呼叫前加入.
在第二及第三種形式中,<CODE>item</CODE> 文字被指定為方法的參數而不是在其後被加入.
第三種形式是定義列表專用并且同時指定列表的項目與定義文字部份.
<DT><B>參數</B><DD><P>
<DL>
<DT><B>item</B><DD><P>此列表項目的文字.
<DT><B>term</B><DD><P>此定義列表的項目部份的文字.
</DL>
<DT><B>請參閱</B><DD><P><CODE>definitionList()</CODE>, <CODE>definitionListTerm()</CODE>, <CODE>endList()</CODE>.
</DL>
<P>
<H3>send()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>送出此 HTML 訊息.
<DT><B>語法</B><DD><P><CODE>public void send ()</CODE>
<DT><B>描述</B><DD><P>送出此 HTML 訊息.
</DL>
<P>
<H3>title()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>設定文件標題的文字.
<DT><B>語法</B><DD><P><CODE>public void title ( String title )</CODE>
<DT><B>描述</B><DD><P>設定此文件的標題文字.
<DT><B>參數</B><DD><P>
<DL>
<DT><B>title</B><DD><P>此文件標題的文字.
</DL>
<DT><B>請參閱</B><DD><P><CODE>author()</CODE>.
</DL>
<P>
<H2><A NAME="html-test-class"></A> <A NAME="ss5.6">5.6 HTML_Test</A>
</H2>
<P>這個類別提供一個如何使用 <CODE>HTML</CODE> 類別的例子以及一個用來確定 <EM>Java CGI</EM> 套件運作正常的測試程式.
<P>
<H3>成員摘要</H3>
<P>
<HR>
<PRE>
main() // Program main().
</PRE>
<HR>
<P>
<H3>請參閱</H3>
<P><CODE>
<A HREF="#html-class">HTML</A></CODE>.
<P>
<H3>main()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>提供 <CODE>main()</CODE> 方法.
<DT><B>語法</B><DD><P><CODE>public static void main( String argv[] )</CODE>
<DT><B>描述</B><DD><P>這是 CGI 程式的入口,返回在一 HTML 文件中可用的名稱/數值配對與其現值的列表,并將每一名稱/數值配對顯示在一定義列表的元素里.
<DT><B>參數 </B><DD><P>
<DL>
<DT><B>argv[]</B><DD><P>由 <CODE>java.cgi</CODE> 指令稿傳入的參數.目前未使用.
</DL>
</DL>
<P>
<H2><A NAME="text-class"></A> <A NAME="ss5.7">5.7 Text</A>
</H2>
<P>
<H3>類別語法</H3>
<P><CODE>public abstract class Text</CODE>
<P>
<H3>類別描述</H3>
<P>本類別為 <CODE>
<A HREF="#email-class">Email</A></CODE> 與 <CODE>
<A HREF="#html-class">HTML</A></CODE> 的基礎類別.
訊息以此類別的方法建立,并以衍生類別的方法完成并編排.
<P>這個類別位於 ``Orbits.net'' 包裝中.
<P>
<H3>成員摘要</H3>
<P>
<HR>
<PRE>
Text() // 建構子
add() // 加入文字到此物件
addLineBreak() // 加入分行符號
addParagraph() // 加入分段符號
</PRE>
<HR>
<P>
<H3>請參閱</H3>
<P><CODE>
<A HREF="#email-class">Email</A></CODE>, <CODE>
<A HREF="#html-class">HTML</A></CODE>.
<P>
<H3>add()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>在此項目中加入文字.
<DT><B>語法</B><DD><P><CODE>public void add ( char addition )</CODE>
<DT><B></B><DD><P><CODE>public void add ( String addition )</CODE>
<DT><B></B><DD><P><CODE>public void add ( StringBuffer addition )</CODE>
<DT><B>描述</B><DD><P>在這個文字項目的內容中加入 <CODE>addition</CODE>.
<DT><B>參數</B><DD><P>
<DL>
<DT><B>addition</B><DD><P>加入此文字項目的文字.
</DL>
<DT><B>請參閱</B><DD><P><CODE>addLineBreak()</CODE>, <CODE>addParagraph()</CODE>.
</DL>
<P>
<H3>addLineBreak()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>強迫在目前文字位置分行.
<DT><B>語法</B><DD><P><CODE>public void addLineBreak ()</CODE>
<DT><B>描述</B><DD><P>在目前位置加入一分行符號.
<DT><B>請參閱</B><DD><P><CODE>add()</CODE>, <CODE>addParagraph()</CODE>.
</DL>
<P>
<H3>addParagraph()</H3>
<P>
<DL>
<DT><B>目的</B><DD><P>起始一新的段落.
<DT><B>語法</B><DD><P><CODE>public void add ()</CODE>
<DT><B>描述</B><DD><P>在目前的文字位置起始一新的段落.
<DT><B>請參閱</B><DD><P><CODE>add()</CODE>, <CODE>addLineBreak()</CODE>.
</DL>
<P>
<HR>
<A HREF="Java-CGI-HOWTO-6.html">Next</A>
<A HREF="Java-CGI-HOWTO-4.html">Previous</A>
<A HREF="Java-CGI-HOWTO.html#toc5">Contents</A>
</BODY>
</HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -