freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于java的郵件客戶端的設計和實現(xiàn)畢業(yè)設計-在線瀏覽

2024-08-07 17:44本頁面
  

【正文】 到汽車導航平臺。Java的浪潮洶涌澎湃,席卷全球! Java標準技術要點 Java的特點一、Java的跨平臺性,即一次編譯到處運行 簡單地說Java的跨平臺性就是指,編譯后的Java程序可直接在不同的平臺上運行而不用重新編譯,這一特性使得Java隨著Web應用的普及而迅速普及起來。實際上,編譯后的Java代碼并不是傳統(tǒng)的二進制代碼(),而是Java字節(jié)碼,這種字節(jié)碼文件是不能直接在操作系統(tǒng)上執(zhí)行的。由于目前大多數(shù)操作系統(tǒng)已經實現(xiàn)了JVM,所以Java輕松實現(xiàn)跨平臺性。繼承的結果產生類的多態(tài)性,類的多態(tài)本質上講就是可以用父類的引用訪問繼承類的實現(xiàn)(子類對象),類的這種多態(tài)性最終形成了組件對象模型的基礎,即通過接口(父類)訪問實現(xiàn)(子類)。Java類庫中的File類不僅提供文件操作而且還包含文件夾操作,如下面這幾行代碼可以列出C盤根目錄下的所有文件: File f=new File(c://。 for(int i=0。 四、Java中的圖形及事件處理 可以用awt包或swing包的Java類來進行大部分的Java圖形界面設計,下面的幾行代碼將產生一個200*200像素的窗體: Frame f=new Frame(Wele。 (true)。為了使用戶按下關閉按鈕時能關閉Frame窗體,需要讓這個窗體響應一個WindowEvent事件,具體的做法就是給這個窗體添加一個事件監(jiān)聽器對象,這個事件監(jiān)聽器就是WindowListener接口的實現(xiàn)。 } } 這里用到一個無名內部類,無名內部類是Java中內部類的一種靈活運用方式。Java中的線程實現(xiàn)非常簡單,可以用兩種方式來創(chuàng)建線程,一種是實現(xiàn)Runnable接口,另一種是繼承Thread類重寫run()方法。 永遠都用start()方法來啟動一個線程,線程類中的run()可以被直接調用,但決不是啟動一個線程,二者有著本質的區(qū)別。 用Object類中的wait()和notify()方法可以實現(xiàn)線程間交互,但要記住wait()和notify()方法只有發(fā)生在同一個對象上才能真正實現(xiàn)線程間交互。notify()方法一次喚醒一個被wait()方法阻塞的線程,notifyAll()方法可以一次喚醒所有被wait()方法阻塞的線程。 可以將native方法比作Java程序同C程序的接口,其實現(xiàn)步驟: 1、在Java中聲明native()方法,然后編譯;  ?。?;   3、 ();   4;  ?。怠?)方法加載第四步產生的動態(tài)鏈接庫文件,這個native()方法就可以在Java中被訪問了。實際上Java的運用非常廣泛,而且每個方面都需要遵循不同的規(guī)范。(一)理解Java SDK的三個版本: Java SDK Micro Edition (J2ME) 用于開發(fā)掌上電腦、手機等移動通信設備上使用的應用程序。J2ME的集成開發(fā)工具(通常都有帶有一些仿真器)有 Sun 的J2ME Wireless Toolkit 、IBM的Visul Age Micro Edition 等。我們平時所說的JDK就指J2SE,而我們學Java就是從學習J2SE開始的。其中的核心是Entetprise Java Beans(EJB,分布式Java組件)的開發(fā)。由于Applet是被瀏覽器執(zhí)行的,所以Applet不需要一個main()方法。 (三)服務器端Java小程序 (Servlet) Servlet也是一個Java類,和Applet形成對比,Servlet是運行于服務器端的Java小程序,而且Servlet需要一個單獨的Web服務器(如Tomcat)做容器。下面是一個簡單的Servlet例子: public class Myservlet extends HttpServlet{ public void doGet(HttpServletRequest request,HttpServletResponse response) { try{ (text/html。 ()。 (Hello world)。 ()。 (四)Java Server Page (JSP) 同Servlet相似的是,JSP運行于Web服務器端,并且也需要Tomcat之類的容器??梢韵胂褡岄_發(fā)人員用Servlet寫一個花捎的Web頁面有多困難,所以JSP+Servlet混合Web應用是比較理想的選擇。所有的ASP頁面都是解釋運行的,而JSP頁在第一次被請求時會被編譯,(在Tomcat的Work文件夾下),所以JSP要比ASP速度上快許多。但通常情況下,由于Java Bean是被容器所創(chuàng)建(如Tomcat)的,所以Java Bean應具有一個無參的構造器,另外,通常Java Bean還要實現(xiàn)Serializable接口用于實現(xiàn)Bean的持久性。Enterprise Java Bean 相當于DCOM,即分布式組件。但EJB必須被布署在諸如Webspere、WebLogic這樣的容器中,EJB客戶從不直接訪問真正的EJB組件,而是通過其容器訪問??蛻敉ㄟ^容器來訪問真正的EJB組件。 總的說來,Java作為面向對象技術的一個代表,在當今商業(yè)應用中更容易開發(fā)出高效的、多層的分布式應用程序,而且,由于Java技術有很強的健壯性和易用性,加上同UML應用的結合,開發(fā)一個商業(yè)應用軟件的周期會大大縮短,所以Java會有不錯的前景。我們可用它來建立如Eudora、Foxmail、MS Outlook Express一般的郵件用戶代理程序(Mail User Agent,簡稱MUA)。從另外一個角度來看,我們這些電子郵件用戶日常用MUA程序來讀寫郵件,而MUA依賴著MTA處理郵件的遞送。第二個部分則是依賴特定協(xié)議的,比如SMTP、POP、IMAP、NNTP協(xié)議。以下便是大家日常所知、所樂于使用的4大信息傳輸協(xié)議:SMTP、POP、IMAP、MIME。理解這4個基本的協(xié)議有助于更好的使用JavaMail API。確切的說,如果使用的功能并不被選擇的協(xié)議支持,那么JavaMail API并不可能實現(xiàn)這種能力。在下文中,將使用基于JavaMail的程序與公司或者ISP的SMTP服務器進行通訊。這并不需要SMTP服務器使用支持授權的郵件轉發(fā),但是卻的確要注意SMTP服務器的正確設置(SMTP服務器的設置與JavaMail API無關)。POP定義了一種用戶如何獲得郵件的機制。大多數(shù)人在使用POP時所熟悉的功能并非都被支持,例如查看郵箱中的新郵件數(shù)量。因此在使用JavaMail API時需要注意,當需要獲得如前面所講的新郵件數(shù)量之類的信息時,不得不自己進行計算。需要注意的是在使用IMAP時,郵件服務器必須支持該協(xié)議。假如郵件服務器支持IMAP,那么郵件程序將能夠具有以下被IMAP所支持的特性:每個用戶在服務器上可具有多個目錄,這些目錄能在多個用戶之間共享。并且IMAP與POP的一個不同之處是POP用戶在接收郵件時將從郵件服務器上下載郵件,而IMAP允許用戶直接訪問郵件目錄,所以在郵件服務器進行備份作業(yè)時,由于每個長期使用此郵件系統(tǒng)的用戶所用的郵件目錄會占有很大的空間,這將直接導致郵件服務器上磁盤空間暴漲。一些RFC標準都涉及了MIME:RFC 822, RFC 2045, RFC 2046, RFC 2047。5. NNTP和其它的第三方協(xié)議正因為JavaMail API在設計時考慮到與第三方協(xié)議實現(xiàn)提供商之間的分離,故可以很容易的添加一些第三方協(xié)議。 APIA.縱覽JavaMail核心類結構,:Session、Message、Address、Authenticator、Transport、Store、Folder。就像Http會話那樣,進行收發(fā)郵件的工作都是基于這個會話的。Session類的構造方法是私有的,所以可以使用Session類提供的getDefaultInstance()這個靜態(tài)工廠方法獲得一個默認的Session對象:Properties props = new Properties()?;蛘呤褂胓etInstance()這個靜態(tài)工廠方法獲得自定義的Session: Properties props = new Properties()。從上面的兩個例子中不難發(fā)現(xiàn),getDefaultInstance()和getInstance()方法的第二個參數(shù)都是null,這是因為在上面的例子中并沒有使用到郵件授權,下文中將對授權進行詳細介紹。C.Message當我們建立了Session對象后,便可以構造被發(fā)送的信息體了。由于Message是一個抽象類,大多數(shù)情況下,該類是使用MIME類型、MIME信息頭的郵箱信息。為了建立一個MimeMessage對象,必須將Session對象作為MimeMessage構造方法的參數(shù)傳入:MimeMessage message = new MimeMessage(session)。在建立了MimeMessage對象后,需要設置它的各個part,對于MimeMessage類來說,這些part就是MimePart接口。然而,如果所使用的MimeMessage中信息內容是文本的話,便可以直接使用setText()方法來方便的設置文本內容。前面所講的兩種方法,對于文本信息,后者更為合適。使用setSubject()方法對郵件設置郵件主題:(First)。像Message一樣,Address類也是一個抽象類。 如果要在郵件地址后面增加名字的話,可以通過傳遞兩個參數(shù):代表郵件地址和名字的字符串來建立一個具有郵件地址和名字的郵件地址類:Address address = new InternetAddress(president, George Bush)。(address)。(address)。Address ccAddress = new InternetAddress()。(, ccAddress)。當然我們可以自己完成這個功能:驗證郵件地址的字符是否按照RFC822規(guī)定的格式書寫或者通過DNS服務器上的MX記錄驗證等。(Authenticator)。并且要在Session中進行注冊,使Session能夠了解在認證時該使用哪個類。Properties props = new Properties()。Session session = (props, auth)。這個類實現(xiàn)了發(fā)送信息的協(xié)議(通稱為SMTP),此類是一個抽象類,我們可以使用這個類的靜態(tài)方法send()來發(fā)送消息:(message)。我們也可由Session獲得相應協(xié)議對應的Transport實例。 // implicit with send()Transport transport = (smtp)。(message, ())。評論:上面的方法是一個很好的方法,尤其是在我們在同一個郵件服務器上發(fā)送多個郵件時。send()這個基本的方法是在每次調用時進行與郵件服務器的連接的,對于在同一個郵件服務器上發(fā)送多個郵件來講可謂低效的方式。G.Store和Folder接收郵件和發(fā)送郵件很類似都要用到Session。在連接Store的過程中,極有可能需要用到用戶名、密碼或者Authenticator。Store store = (pop3)。在連接到Store后,一個Folder對象即目錄對象將通過Store的getFolder()方法被返回,我們可從這個Folder中讀取郵件信息:Folder folder = (INBOX)。Message message[] = ()。注意:對于POP3協(xié)議只有一個名為INBOX的Folder有效,而對于IMAP協(xié)議,我們可以訪問多個Folder(想想前面講的IMAP協(xié)議)。在讀取郵件時,我們可以用Message類的getContent()方法接收郵件或是writeTo()方法將郵件保存,getContent()方法只接收郵件內容(不包含郵件頭),而writeTo()方法將包括郵件頭。在讀取郵件內容后,別忘記了關閉Folder和Store。()。 使用JavaMail API 發(fā)送郵件在獲得了Session后,建立并填入郵件信息,然后發(fā)送它到郵件服務器。String host = ...。String to = ...。// Setup mail server(, host)。// Define messageMimeMessage message = new MimeMessage(session)。(, new InternetAddress(to))。(Wele to JavaMail)。由于建立郵件信息和發(fā)送郵件的過程中可能會拋出異常,所以需要將上面的代碼放入到trycatch結構塊中。String host = ...。String password = ...。// Get sessionSession session = (props, null)。(host, username, password)。()。for (int i=0, n=。 i++) { (i + : + message[i].getFrom()[0] + \t + message[i].getSubject())。()。從技術角度講,這里存在著一個異常的可能:當發(fā)信人地址為空時,getFrom()[0]將拋出異常。BufferedReader reader = new BufferedReader (new InputStreamReader())。 for (int i=0, n=。 i++) { (i + : + message[i].getFrom()[0] + \t + message[i].getSubject())。 (Do
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1