版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 基于Struts2的電子郵件設(shè)計與實(shí)現(xiàn)</p><p> ----郵件收發(fā)、郵件管理</p><p> Design and Implementation of the E-mail System on Struts2</p><p> ---- Send and receive mail, email management</p&
2、gt;<p> 指 導(dǎo) 老 師 : XXX </p><p> 姓 名 : XX </p><p> 學(xué) 號 : XX </p><p> 學(xué) 院 : 軟件學(xué)院 </p><p> 專 業(yè) : 軟件工程 &
3、lt;/p><p> 完 成 時 間 : 2012年4 月 </p><p><b> 摘要</b></p><p> 隨著互聯(lián)網(wǎng)快速、廣泛的普及應(yīng)用,電子郵件越來越受到人們的歡迎,其最大的特點(diǎn)是,人們可以在任何地方時間收、發(fā)信件,解決了時空的限制,大大提高了工作效率,為辦公自動化,商業(yè)活動提供了很大便利。各類企業(yè)、學(xué)校、甚至于個人之間的
4、業(yè)務(wù)交流越加依托于網(wǎng)絡(luò)通訊,電子郵件系統(tǒng)也越發(fā)成為企業(yè)、學(xué)校的主流級應(yīng)用。電子郵件為人們提供快速,安全,完善,經(jīng)濟(jì)的服務(wù),相對于傳統(tǒng)的信件效率大大的提高。通過本系統(tǒng)用戶可以隨時進(jìn)行收發(fā)郵件,還可以回復(fù)轉(zhuǎn)發(fā)并對郵件進(jìn)行全文模糊搜索,以便用戶更迅速的查找所需郵件。</p><p> 本小組通過分析現(xiàn)有的電子郵件系統(tǒng),致力于打造一個輕量級的電子郵件系統(tǒng)。系統(tǒng)以Java EE作為開發(fā)平臺,運(yùn)用MVC模式開發(fā)思想,采用S
5、truts2框架技術(shù)實(shí)現(xiàn)。系統(tǒng)具有收發(fā)郵件、郵件管理、通訊錄、搜索等功能,初步完成電子郵件系統(tǒng)的要求。</p><p> 本文以電子郵件系統(tǒng)為背景,詳細(xì)地闡述了基于UML的面向?qū)ο蟮南到y(tǒng)分析與建模過程及詳細(xì)設(shè)計過程,對電子郵件系統(tǒng)收發(fā)郵件、郵件管理等功能也進(jìn)行了較為詳細(xì)的闡述。</p><p> 關(guān)鍵詞: Struts;MVC;UML;郵件收發(fā);郵件管理</p><
6、p><b> Abstract</b></p><p> With the wide application of Internet, e-mail becomes more and more popular among people. People can send and receive e-mails anywhere at any time, increasing thei
7、r efficiency and making Office Automation and commercial activities more convenient. The communication between enterprises, schools, even people depends more on network communication. As a result, e-mail becomes the main
8、 application in enterprises and schools. Compared with traditional mail service, e-mail provides fast, safe and cheap</p><p> Having analyzed the existing e-mail system and aiming at providing a lightweight
9、 system, we choose J2EE as the develop platform and use MVC pattern and Stucts2 framework to implement it. The system provides functions such as mail sending, mail receiving, mail management, address book and searching.
10、We have accomplished the basic task of the system. </p><p> E-mail as the background, the article describe the object oriented system analysis based on UML, modeling process as well as detailed design in de
11、tail. Besides, the implementation of mail sending, mail receiving and mail management are described detailedly.Key words: Struts; MVC; UML; send and receive mails; e-mail management.</p><p><b> 目 錄&l
12、t;/b></p><p><b> 第1章 引言1</b></p><p> 1.1 電子郵件介紹1</p><p> 1.2 開發(fā)背景2</p><p> 1.3 開發(fā)環(huán)境2</p><p> 1.4 本人主要工作3</p><p> 1.5
13、 本文組織3</p><p> 第2章 系統(tǒng)相關(guān)技術(shù)概述4</p><p> 2.1 MVC模式4</p><p> 2.2 Struts2框架結(jié)構(gòu)及工作原理5</p><p> 2.3 JSP技術(shù)6</p><p> 2.4 MySQL 數(shù)據(jù)庫7</p><p> 2.
14、5 SMTP協(xié)議8</p><p> 2.6 POP3協(xié)議簡介9</p><p> 第3章 系統(tǒng)需求分析10</p><p> 3.1 系統(tǒng)目標(biāo)10</p><p> 3.2 系統(tǒng)的功能需求分析概述10</p><p> 3.2.1 收件箱10</p><p> 3.3
15、系統(tǒng)用例圖分析11</p><p> 3.3.1 收件箱用例分析11</p><p> 3.3.2收件箱包含的基本用例12</p><p> 3.3.3 寫信用例分析13</p><p> 3.3.4搜索郵件用例14</p><p> 第4章 系統(tǒng)設(shè)計16</p><p>
16、 4.1 系統(tǒng)的架構(gòu)設(shè)計16</p><p> 4.2 系統(tǒng)數(shù)據(jù)庫設(shè)計16</p><p> 4.2.1 數(shù)據(jù)庫概念設(shè)計16</p><p> 4.2.2 系統(tǒng)E-R圖的設(shè)計19</p><p> 4.2.3 數(shù)據(jù)庫邏輯結(jié)構(gòu)的設(shè)計19</p><p> 4.3 系統(tǒng)類圖的設(shè)計22</p&g
17、t;<p> 4.3.1 收件箱類圖的設(shè)計22</p><p> 4.3.2 發(fā)件箱類圖的設(shè)計23</p><p> 4.3.3 草稿箱類圖的設(shè)計23</p><p> 4.3.4 通訊錄類圖的設(shè)計24</p><p> 4.4 系統(tǒng)開發(fā)相關(guān)規(guī)范25</p><p> 4.4.1 開
18、發(fā)工具25</p><p> 4.4.2 編碼規(guī)范25</p><p> 第5章 系統(tǒng)實(shí)現(xiàn)27</p><p> 5.1 系統(tǒng)登錄和首頁27</p><p> 5.1.1 系統(tǒng)登錄27</p><p> 5.1.2 寫信28</p><p> 5.2 收件箱功能實(shí)現(xiàn)30
19、</p><p> 5.2.1 收取郵件30</p><p> 5.2.2 回復(fù)郵件31</p><p> 5.2.3 轉(zhuǎn)發(fā)郵件32</p><p> 5.3 搜索郵件實(shí)現(xiàn)32</p><p> 第6章 系統(tǒng)關(guān)鍵技術(shù)應(yīng)用34</p><p> 6.1郵件的批量刪除功能的實(shí)現(xiàn)
20、34</p><p> 6.2 分頁功能的實(shí)現(xiàn)34</p><p><b> 第7章 總結(jié)36</b></p><p><b> 參考文獻(xiàn)37</b></p><p><b> 致 謝38</b></p><p><b>
21、第1章 引言</b></p><p> 1.1 電子郵件介紹</p><p> 電子郵件【10】(簡稱E-mai1)又稱電子信箱、電子郵政,它是—種用電子手段提供信息交換的通信方式。它是全球多種網(wǎng)絡(luò)上使用最普遍的一項服務(wù)。這種非交互式的通信,加速了信息的交流及數(shù)據(jù)傳送,它是—個簡易、快速的方法。通過連接全世界的Internet,實(shí)現(xiàn)各類信號的傳送、接收、存貯等處理,將郵件送
22、到世界的各個角落。到目前為止,可以說電子郵件是Internet資源使用最多的一種服務(wù),E-mai1不只局限于信件的傳遞,還可用來傳遞文件、聲音及圖形、圖像等不同類型的信息。</p><p> 電子郵件不是一種“終端到終端”的服務(wù),是被稱為“存貯轉(zhuǎn)發(fā)式”服務(wù)。這正是電子信箱系統(tǒng)的核心,利用存貯轉(zhuǎn)發(fā)可進(jìn)行非實(shí)時通信,屬異步通信方式。即信件發(fā)送者可隨時隨地發(fā)送郵件,不要求接收者同時在場,即使對方現(xiàn)在不在,仍可將郵件立
23、刻送到對方的信箱內(nèi),且存儲在對方的電子郵箱中。接收者可在他認(rèn)為方便的時候讀取信件,不受時空限制。在這里,“發(fā)送”郵件意味著將郵件放到收件人的信箱中,而“接收”郵件則意味著從自己的信箱中讀取信件,信箱實(shí)際上是由文件管理系統(tǒng)支持的—個實(shí)體。因?yàn)殡娮余]件是通過郵件服務(wù)器(mai1 server)來傳遞檔的。通常mail server是執(zhí)行多任務(wù)操作系統(tǒng)UNIX的計算機(jī),它提供24小時的電子郵件服務(wù),用戶只要向 mail server管理人員申
24、請—個信箱賬號,就可使用這項快速的郵件服務(wù)。</p><p> 電子郵件的工作原理:</p><p> 1) 電子郵件系統(tǒng)是一種新型的信息系統(tǒng),是通信技術(shù)和計算機(jī)技術(shù)結(jié)合的產(chǎn)物。 </p><p> 電子郵件的傳輸是通過電子郵件簡單傳輸協(xié)議(Simple Mail Transfer Protocol,簡稱SMTP)這一系統(tǒng)軟件來完成的,它是Internet下的
25、一種電子郵件通信協(xié)議。 </p><p> 2) 電子郵件的基本原理,是在通信網(wǎng)上設(shè)立“電子信箱系統(tǒng)”,它實(shí)際上是一個計算機(jī)系統(tǒng)。系統(tǒng)的硬件是一個高性能、大容量的計算機(jī)。硬盤作為信箱的存儲介質(zhì),在硬盤上為用戶分一定的存儲空間作為用戶的“信箱”,每位用戶都有屬于自己的—個電子信箱。并確定—個用戶名和登錄密碼。存儲空間包含存放所收信件、編輯信件以及信件存盤三部分空間,用戶登錄系統(tǒng)就進(jìn)入了自己的信箱,并進(jìn)行發(fā)信、讀信
26、、編輯、轉(zhuǎn)發(fā)、存檔等各種操作。系統(tǒng)功能主要由軟件實(shí)現(xiàn)。</p><p> 3) 電子郵件的通信是在信箱之間進(jìn)行的。用戶首先開啟自己的信箱,然后將需要發(fā)送的郵件發(fā)到對方的信箱中。郵件在信箱之間進(jìn)行傳遞和交換,也可以與另—個郵件系統(tǒng)進(jìn)行傳遞和交換。收方在登錄郵箱之后,就可以提取新郵件。</p><p><b> 1.2 開發(fā)背景</b></p><
27、p> 隨著Internet的迅速普及,Email已成為了人與人溝通的主要手段,越來越成為生活中不可缺少的一部分。中國互聯(lián)網(wǎng)絡(luò)信息中心(CCNIC)2002年7月發(fā)布的“中國互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計報告”顯示,截止到2002年6月30日,我國上網(wǎng)用戶人數(shù)達(dá)4580萬人,與去年同期相比增長了72.8%,對大多數(shù)用戶來說,電子郵箱是他們最經(jīng)常用的網(wǎng)絡(luò)服務(wù)之一,中國網(wǎng)名人均擁有1.6個Email賬號。除了利用互聯(lián)網(wǎng)絡(luò)發(fā)送電子郵件外,隨著通訊
28、技術(shù)的快速發(fā)展,用手機(jī)發(fā)送電子郵件也正在迅速的變成現(xiàn)實(shí),每天收發(fā)Email已經(jīng)成為我們許多人生活中不可缺少的一部分。</p><p> 電子郵件除了在個人的生活中扮演著重要的角色外,在企業(yè)中也扮演著一個不可缺少的角色。在企業(yè)的發(fā)展過程中,人與人之間的交流,特別是同一個項目組之間的交流顯得越來越重要,而電子郵件在企業(yè)中的采用則能使企業(yè)員工通過電子郵件來聯(lián)系工作,可以節(jié)約大量的電話、傳真、郵寄等費(fèi)用,可以大大的提高
29、工作效率。</p><p> 當(dāng)前流行的各大郵件客戶端軟件的除了最主要的收發(fā)信件之外,功能越來越復(fù)雜,但是人們平常真正用到的功能很少,很多功能尤其對于那些計算機(jī),知識相對缺乏的人來說,更加顯得太過于華麗而不太實(shí)用。有鑒于此,我們開發(fā)了這個各種功能相對簡單實(shí)用的郵件客戶端程序,簡化了很多不必要的功能。</p><p><b> 1.3 開發(fā)環(huán)境</b></p&
30、gt;<p> AMD Athlon(TM),512M內(nèi)存,80G硬盤</p><p> Microsoft® Windows? XP Professional</p><p> MyEclipse 6.0</p><p> Apache Tomcat 5.5</p><p><b> MySQL
31、5.5</b></p><p> Apache James Mail Server 2.3.1</p><p> 1.4 本人主要工作</p><p> 本人在“IU電子郵箱系統(tǒng)”中主要完成網(wǎng)站的需求分析、建模、系統(tǒng)的主要功能及所有的動態(tài)顯示。分析解決關(guān)鍵技術(shù)問題,功能和性能的測試,以及畢業(yè)論文的撰寫,“IU電子郵箱系統(tǒng)”中本人完成的主要功能如下:
32、</p><p> 1.用戶注冊及登錄:客戶在注冊成功后成為系統(tǒng)的用戶,登錄后可以進(jìn)行郵件的收發(fā)等操作;</p><p> 2.收取郵件:用戶登錄系統(tǒng)時系統(tǒng)自動提取該用戶的郵件,用戶點(diǎn)擊獲取的郵件可以查看郵件;</p><p> 3.搜索郵件:用戶登錄系統(tǒng)后通過選定條件進(jìn)行模糊查詢,系統(tǒng)默認(rèn)是主體+正文的搜索條件;</p><p>
33、4.郵件回復(fù)及轉(zhuǎn)發(fā):用戶登錄系統(tǒng)后進(jìn)入單封郵件,點(diǎn)擊回復(fù)或轉(zhuǎn)發(fā)按鈕即可回復(fù)轉(zhuǎn)發(fā)郵件; </p><p> 5.寫信:用戶登錄系統(tǒng)后,點(diǎn)擊寫信按鈕即可寫信,用戶可以寫帶附件的郵件保存至草稿箱或發(fā)送出去。</p><p><b> 1.5 本文組織</b></p><p> 第1章 簡述了課題的開發(fā)背景和開發(fā)環(huán)境以及本人主要工作;</
34、p><p> 第2章 通過分析Java EE技術(shù),確立系統(tǒng)開發(fā)平臺,并對系統(tǒng)實(shí)現(xiàn)過程中用到的相關(guān)技術(shù)進(jìn)行簡單的介紹;</p><p> 第3章 使用用例分析技術(shù)對系統(tǒng)的需求進(jìn)行了詳細(xì)的分析;</p><p> 第4章 詳細(xì)闡述了系統(tǒng)數(shù)據(jù)庫設(shè)計全過程;</p><p> 第5章 詳細(xì)介紹了本人完成的系統(tǒng)收件箱,發(fā)件箱,草稿箱各模塊功
35、能的實(shí)現(xiàn);</p><p> 第6章 詳細(xì)介紹了系統(tǒng)使用的分頁技術(shù)和批量刪除技術(shù);</p><p> 第7章 全文的總結(jié),說明了在撰寫論文過程中的心得和體會,并總結(jié)系統(tǒng)開發(fā)過程中的經(jīng)驗(yàn)以及教訓(xùn),展望未來的應(yīng)用前景。</p><p> 第2章 系統(tǒng)相關(guān)技術(shù)概述</p><p> 在對系統(tǒng)開發(fā)本身的前景分析之后,接下來就是確定開發(fā)的目
36、標(biāo)和功能需求,最后就是確定開發(fā)工具以及運(yùn)用相關(guān)的技術(shù)來開發(fā)系統(tǒng)。系統(tǒng)開發(fā)時所采用的相關(guān)模式及開發(fā)技術(shù)有:MVC模式、Struts2、Jsp、MySQL、POP3和SMTP等。</p><p><b> 2.1 MVC模式</b></p><p> MVC【6】架構(gòu)是"Model(模型)View(試圖)Controller(控制)"三個單詞的首字
37、母縮寫。MVC模型是一中交互界面的結(jié)構(gòu)組織模型,它能夠使軟件的計算模型獨(dú)立于界面的構(gòu)成。MVC模型由Trygve Reenskaug提出,最早使用在SmallTalk-80環(huán)境中,并應(yīng)用于用戶交互應(yīng)用程序中。最smalltalk語言和java語言有很多相似的地方,比如都是面向?qū)ο笳Z言。Microsoft的MFC基礎(chǔ)類也遵循了MVC的思想。MVC設(shè)計模式更深層次的影響了軟件開發(fā)人員的分工,也更加便于分工。</p><p
38、> 事件(Event)導(dǎo)致控制器(Controller)改變模型(Model)或試圖(View),或者同時改變兩者。只要Controller發(fā)生了改變Model的數(shù)據(jù)或?qū)傩?,所有依賴的視圖都會自動更新。類似的,只要Controller改變了View,View會從Model中獲取數(shù)據(jù)來刷新自己。</p><p> MVC是一種架構(gòu),需要其他模式協(xié)作完成。Struts2只實(shí)現(xiàn)的是MVC中的View和Cont
39、roller兩個部分,Model部分需要開發(fā)者自己來實(shí)現(xiàn),Struts2提供了抽象類Action使開發(fā)者能將Model應(yīng)用于Struts2框架中。</p><p> MVC模型的原理如圖2.1所示:</p><p> 圖2.1 MVC模型原理圖</p><p> MVC三個部分在Java EE架構(gòu)中都有自己的位置。MVC與Java EE架構(gòu)的對應(yīng)關(guān)系是:Vie
40、w處于Web Tier或是Client Tier,通常是JSP/Servlet,即頁面顯示部分;Controller也處于Web Tier,通常用Struts2來實(shí)現(xiàn),即頁面顯示的邏輯部分實(shí)現(xiàn);Model處于Middle Tier,通常用服務(wù)端的spring或者EJB實(shí)現(xiàn),即業(yè)務(wù)邏輯部分的實(shí)現(xiàn)。</p><p> 2.2 Struts2框架結(jié)構(gòu)及工作原理</p><p> Struts
41、2【8】是Struts的下一代產(chǎn)品。是在struts和WebWork的技術(shù)基礎(chǔ)上進(jìn)行了合并,全新的Struts2框架。其全新的Struts2的體系結(jié)構(gòu)與Struts1的體系結(jié)構(gòu)的差別巨大。Struts2以WebWork為核心,采用攔截器的機(jī)制來處理用戶的請求,這樣的設(shè)計也使得業(yè)務(wù)邏輯控制器能夠與Servlet API完全脫離開,所以Struts2可以理解為WebWork的更新產(chǎn)品。因?yàn)镾truts2和Struts1有著太大的變化,但是相
42、對于WebWork,Struts2只有很小的變化。</p><p> Apache Struts2是一個優(yōu)雅的,可擴(kuò)展的Java EE web框架。框架設(shè)計的目標(biāo)貫穿整個開發(fā)周期,從開發(fā)到發(fā)布,包括維護(hù)的整個過程。</p><p> Apache Struts2是大家所熟知的WebWork2,在經(jīng)歷了幾年的各自發(fā)展后,WebWork和Struts社區(qū)決定合二為一而成的產(chǎn)品。</p
43、><p> Struts2的工作流程如圖2.2所示:</p><p> 1.首先Struts2接收到一個httprequest時Interceptor對其進(jìn)行一些攔截或者初始的工作。這時候如果有外部的httpservletrequest到來時,數(shù)據(jù)就會到servlet容器中,然后被傳遞給一個標(biāo)準(zhǔn)的過濾器鏈ActionContextCleanUp。</p><p>
44、 2.然后Struts2開始調(diào)用Dispatecher會去查找相應(yīng)的ActionMapper,如果找到了相應(yīng)的ActionMapper Struts2將會將控制權(quán)限交給ActionProxy。接著ActionProxy通過ConfigurationManager來查找配置struts.xml文件。</p><p> 3.最后Struts2通過ActionInvocation來負(fù)責(zé)命令模式的實(shí)現(xiàn),action返回
45、Result。(返回的Result類型可以是 jsp或者freeMark 等)。</p><p> 圖2.2 Struts2響應(yīng)用戶請求的工作流程</p><p><b> 2.3 JSP技術(shù)</b></p><p> JSP【13】(Java Server Pages)是由Sun Microsystems公司倡導(dǎo)、許多公司參與一起建立的
46、一種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。JSP技術(shù)有點(diǎn)類似ASP技術(shù),它是在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標(biāo)記(tag),從而形成JSP文件(*.jsp)。 用JSP開發(fā)的Web應(yīng)用是跨平臺的,既能在Linux下運(yùn)行,也能在其他操作系統(tǒng)上運(yùn)行。</p><p> JSP技術(shù)使用Java編程語言編寫類XML的tags和scriptlets,來封裝產(chǎn)生動態(tài)網(wǎng)頁的處
47、理邏輯。網(wǎng)頁還能通過tags和scriptlets訪問存在于服務(wù)端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設(shè)計和顯示分離,支持可重用的基于組件的設(shè)計,使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易。 </p><p> Web服務(wù)器在遇到訪問JSP網(wǎng)頁的請求時,首先執(zhí)行其中的程序段,然后將執(zhí)行結(jié)果連同JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁等,以實(shí)現(xiàn)建立動態(tài)網(wǎng)頁所需
48、要的功能。JSP網(wǎng)站基本結(jié)構(gòu)如圖2.3所示:</p><p> 圖2.3 Jsp 網(wǎng)站結(jié)構(gòu)示意圖</p><p> JSP與Java Servlet一樣,是在服務(wù)器端執(zhí)行的,通常返回給客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁面被客戶端請求以后對這些Java代碼進(jìn)行處理,然后將生成的HTML頁面返回給
49、客戶端的瀏覽器。Java Servlet 是JSP的技術(shù)基礎(chǔ),而且大型的Web應(yīng)用程序的開發(fā)需</p><p> 要Java Servlet和JSP配合才能完成。JSP具備了Java技術(shù)的簡單易用,完</p><p> 全的面向?qū)ο?,具有平臺無關(guān)性且安全可靠,主要面向因特網(wǎng)的所有特點(diǎn)。 </p><p> 自JSP推出后,眾多大公司都支持JSP技術(shù)的服務(wù)器,如
50、IBM、Oracle、Bea公司等,所以JSP迅速成為商業(yè)應(yīng)用的服務(wù)器端語言。 </p><p> JSP可用一種簡單易懂的等式表示為:HTML+Java=JSP。</p><p> 2.4 MySQL 數(shù)據(jù)庫</p><p> MySQL【15】是一個小型關(guān)系數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQL公司。在2008年1月16號被SUN公司收購,而2009年SU
51、N又被MySQL收購。目前MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。</p><p> 與其他的大型數(shù)據(jù)庫例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之處,如規(guī)模小、功能有限(MySQL Cluster的功能和效率都相對比較差)等,但是這絲毫也沒有減少它受歡迎的程度。對于一般的個人使用者和中小型企業(yè)來說,MySQL提供的功能已經(jīng)綽綽有余。由于其體積小、速度快、總體
52、擁有成本低,尤其是開放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。</p><p> 正是基于MySQL其自身是開放源碼軟件和成本低,經(jīng)濟(jì)而受到相當(dāng)多</p><p> 用戶的青睞,并且憑借其在存儲過程的優(yōu)越性能使得其實(shí)用性也遠(yuǎn)超其他數(shù)據(jù)庫模式,占據(jù)很大優(yōu)勢。</p><p> 2.5 SMTP協(xié)議</p>
53、<p> 由于要開發(fā)的是郵件客戶端程序,就不得不用到SMTP協(xié)議和POP協(xié)議。而我個人負(fù)責(zé)的是郵件發(fā)送功能的實(shí)現(xiàn),因此就必然會涉及到SMTP(Simple Mail Transfer Protocol)協(xié)議。SMTP被用來在因特網(wǎng)上發(fā)送郵件,該協(xié)議規(guī)定了一些基本的命令和方法使客戶端與服務(wù)器進(jìn)行交互,以達(dá)到發(fā)送郵件的目的。</p><p> SMTP命令定義了郵件傳輸或由用戶定義的系統(tǒng)功能。它的命
54、令是由<CRLF>結(jié)束的字符串。而在帶有參數(shù)的情況下,命令本身由<SP>和參數(shù)分開,如果未帶參數(shù)可以直接和<CRLF>連接。郵箱的語法格式必須和接收站點(diǎn)的格式一致。下面討論SMTP命令和應(yīng)答。</p><p> 發(fā)送郵件操作涉及到不同的數(shù)據(jù)對象,它們由不同的參數(shù)相互連接?;貜?fù)路徑就是MAIL命令的參數(shù),而轉(zhuǎn)發(fā)路徑則是RCPT命令的參數(shù),郵件日期是DATA命令的參數(shù)。這些參數(shù)或
55、者數(shù)據(jù)對象必須跟在命令后。這種模式也就要求有不同的緩沖區(qū)來存儲這些對象,也就是說,有一個回復(fù)路徑緩沖區(qū),一個轉(zhuǎn)發(fā)路徑緩沖區(qū),一個郵件內(nèi)容緩沖區(qū)。特定的命令產(chǎn)生自己的緩沖區(qū),或使一個或多個緩沖的內(nèi)容被清除。</p><p> 當(dāng)郵件被傳遞發(fā)送時,傳遞主機(jī)必須將自己的名稱由轉(zhuǎn)發(fā)路徑的開始處移至回復(fù)路徑的結(jié)束處。當(dāng)郵件最終到達(dá)目的地時,接收SMTP將以它的主機(jī)郵件格式自己的名稱插入目標(biāo)郵件中。例如,由傳遞主機(jī)A接收的
56、帶有如下參數(shù)的郵件時,</p><p> FROM:<USERX@HOSTY.ARPA></p><p> TO:<@HOSTA.ARPA,@HOSTB.ARPA:USERC@HOSTD.ARPA></p><p><b> 將會變成如下形式:</b></p><p> FROM:<
57、@HOSTA.ARPA:USERX@HOSTY.ARPA></p><p> TO:<@HOSTB.ARPA:USERC@HOSTD.ARPA>.</p><p> 此命令導(dǎo)致它的轉(zhuǎn)發(fā)路徑參數(shù)加入轉(zhuǎn)發(fā)路徑緩沖區(qū)中。</p><p> 2.6 POP3協(xié)議簡介</p><p> POP3,全名為“Post Office
58、 Protocol - Version 3”,即“郵局協(xié)議版本3”。是TCP/IP協(xié)議族中的一員,由RFC1939 定義。本協(xié)議主要用于支持使用客戶端遠(yuǎn)程管理在服務(wù)器上的電子郵件。提供了SSL加密的POP3協(xié)議被稱為POP3S。</p><p> POP3(Post Office Protocol 3)即郵局協(xié)議的第3個版本,它是規(guī)定個人計算機(jī)如何連接到互聯(lián)網(wǎng)上的郵件服務(wù)器進(jìn)行收發(fā)郵件的協(xié)議。它是因特網(wǎng)電子郵件
59、的第一個離線協(xié)議標(biāo)準(zhǔn),POP3協(xié)議允許用戶從服務(wù)器上把郵件存儲到本地主機(jī)(即自己的計算機(jī))上,同時根據(jù)客戶端的操作刪除或保存在郵件服務(wù)器上的郵件,而POP3服務(wù)器則是遵循POP3協(xié)議的接收郵件服務(wù)器,用來接收電子郵件的。POP3協(xié)議是TCP/IP協(xié)議族中的一員,由RFC 1939 定義。本協(xié)議主要用于支持使用客戶端遠(yuǎn)程管理在服務(wù)器上的電子郵件。</p><p> POP3 協(xié)議支持“離線”郵件處理。其具體過程是
60、:郵件發(fā)送到服務(wù)器上,電子郵件客戶端調(diào)用郵件客戶機(jī)程序以連接服務(wù)器,并下載所有未閱讀的電子郵件。這種離線訪問模式是一種存儲轉(zhuǎn)發(fā)服務(wù),將郵件從郵件服務(wù)器端送到個人終端機(jī)器上,一般是 PC機(jī)或 MAC。一旦郵件發(fā)送到 PC 機(jī)或 MAC上,郵件服務(wù)器上的郵件將會被刪除。但目前的POP3郵件服務(wù)器大都可以“只下載郵件,服務(wù)器端并不刪除”,也就是改進(jìn)的POP3協(xié)議。</p><p> 第3章 系統(tǒng)需
61、求分析</p><p><b> 3.1 系統(tǒng)目標(biāo)</b></p><p> “IU電子郵箱系統(tǒng)”致力于開發(fā)集發(fā)郵件(簡單郵件和帶附件帶格式的郵件)、收郵件、回復(fù)轉(zhuǎn)發(fā)郵件、刪除移動郵件和管理聯(lián)系人等功能于一身的客戶端電子郵箱系統(tǒng)。系統(tǒng)開發(fā)的主要目標(biāo)是實(shí)現(xiàn)電子郵箱系統(tǒng)管理的系統(tǒng)化、規(guī)范化和自動化,最終實(shí)現(xiàn)電子郵箱的高效化,其實(shí)現(xiàn)目標(biāo):</p><
62、p> 系統(tǒng)易操作:系統(tǒng)界面友好,操作簡單。</p><p> 2、需求功能完善:系統(tǒng)為用戶提供各種常用功能,這些功能相對簡單實(shí)用,簡化了很多不必要的功能。</p><p> 3、系統(tǒng)易維護(hù):系統(tǒng)為每個郵箱用戶分配一定的存儲空間,也就是有自己獨(dú)立的“郵箱”,用戶自己管理自己的郵件。這種方式便于對系統(tǒng)的管理。</p><p> 3.2 系統(tǒng)的功能需求分析概
63、述</p><p> 通過對系統(tǒng)進(jìn)行詳細(xì)的分析與研究,最終得出了IU電子郵箱系統(tǒng)的功能需求,系統(tǒng)主要由五個模塊構(gòu)成,系統(tǒng)結(jié)構(gòu)如下圖3.1所示:</p><p> 圖3.1 IU電子郵箱系統(tǒng)功能結(jié)構(gòu)圖</p><p><b> 3.2.1 收件箱</b></p><p> 收件箱模塊,郵箱用戶登錄IU郵箱時系統(tǒng)自動
64、提取服務(wù)器中用戶收到的新郵件并顯示到首頁。收件箱模塊由五個子模塊構(gòu)成,其結(jié)構(gòu)如下圖3.2所示:</p><p> 圖3.2收件箱結(jié)構(gòu)圖</p><p><b> 本人完成的功能有:</b></p><p><b> 1、收取郵件 </b></p><p> 1)當(dāng)用戶登錄郵箱時,系統(tǒng)自動為用
65、戶提取新郵件。</p><p> 2)用戶點(diǎn)擊收件箱時,系統(tǒng)提取新郵件。</p><p><b> 2、回復(fù)郵件 </b></p><p> 系統(tǒng)用戶可以回復(fù)發(fā)件人,也可以同時回復(fù)所有收到郵件的用戶。</p><p><b> 3、轉(zhuǎn)發(fā)郵件</b></p><p>
66、 系統(tǒng)用戶均可以轉(zhuǎn)發(fā)自己收到的郵件,轉(zhuǎn)發(fā)的過程類似于發(fā)送郵件。</p><p><b> 4、搜索郵件</b></p><p> 系統(tǒng)登錄用戶可以按照多種方式全文搜索郵件,如:按照主題搜索郵件,按照正文搜索郵件等,搜索郵件方便用戶快速找到所需要的郵件。</p><p><b> 4、查閱郵件</b></p>
67、;<p> 系統(tǒng)登錄用戶可以按照今天和更早兩種方式獲取郵件列表,點(diǎn)擊進(jìn)入單封郵件查閱郵件內(nèi)容。</p><p> 3.3 系統(tǒng)用例圖分析</p><p> 3.3.1 收件箱用例設(shè)計</p><p> 系統(tǒng)在收件箱可以查閱,回復(fù)、轉(zhuǎn)發(fā)、搜索、刪除、移動,標(biāo)記自己收到的郵件。具體用例圖如圖3.5所示:</p><p>
68、圖3.5 收件箱用例圖</p><p> 3.3.2收件箱包含的基本用例</p><p><b> 表3.1 閱讀郵件</b></p><p><b> 表3.2 回復(fù)郵件</b></p><p><b> 表3.3 轉(zhuǎn)發(fā)郵件</b></p><p&
69、gt; 表3.4 單封刪除郵件</p><p> 表3.5 多封刪除郵件</p><p> 3.3.3 寫信用例設(shè)計</p><p> 用戶進(jìn)入郵箱之后點(diǎn)擊寫信按鈕寫信用例開始。具體用例圖如圖3.7所示:</p><p> 圖3.6 寫信用例圖</p><p><b> 表3.6 寫信</b
70、></p><p> 3.3.4搜索郵件用例</p><p> 當(dāng)用戶鍵入關(guān)鍵字點(diǎn)擊站內(nèi)搜索按鈕,用例開始,用例圖如圖3.7所示:</p><p> 圖3.7 搜索用例圖</p><p><b> 表3.7 搜索郵件</b></p><p><b> 第4章 系統(tǒng)設(shè)計&l
71、t;/b></p><p> 系統(tǒng)需求分析完成后,進(jìn)入系統(tǒng)設(shè)計階段。整個系統(tǒng)開發(fā)過程中,系統(tǒng)分析設(shè)計是重中之重,還有系統(tǒng)完成前的測試。有了詳細(xì)和全面的系統(tǒng)設(shè)計,將會使后面的編碼階段更順利的進(jìn)行并提高編碼速度。</p><p> 4.1 系統(tǒng)的架構(gòu)設(shè)計</p><p> 整個系統(tǒng)架構(gòu)采用MVC模式的思想,主要采用Struts2技術(shù)開發(fā),前端用JSP顯示。開
72、發(fā)工具為:Myeclipse 6.0+Tomcat 5.5+MySQL 5.5</p><p> 在線網(wǎng)站的設(shè)計采用了MVC三層模式進(jìn)行設(shè)計的。系統(tǒng)運(yùn)行后,用戶通過瀏覽器訪問系統(tǒng),看到的只能是視圖層,在視圖層上,用戶進(jìn)行相應(yīng)操作。視圖層由若干JSP頁面組成??刂破鞯暮诵氖荢truts.xml配置文件,它控制著頁面的跳轉(zhuǎn),是系統(tǒng)的控制中心。用戶發(fā)出請求,通過xml進(jìn)行控制跳轉(zhuǎn),進(jìn)入action類,通過Action
73、Servlet找到指定的Action,并通過調(diào)用ActionBean進(jìn)行業(yè)務(wù)邏輯方法的處理,返回ActionForward,最后ActionServlet根據(jù)返回的信息將請求再次發(fā)給JSP頁面。IU電子郵箱系統(tǒng)框架結(jié)構(gòu)圖見圖4.1:</p><p> 圖4.1 系統(tǒng)框架結(jié)構(gòu)圖</p><p> 4.2 系統(tǒng)數(shù)據(jù)庫設(shè)計</p><p> 4.2.1 數(shù)據(jù)庫概念設(shè)
74、計</p><p> 數(shù)據(jù)庫設(shè)計是系統(tǒng)實(shí)現(xiàn)的最重要的一步,良好的數(shù)據(jù)模型將會使用戶的需求清楚、準(zhǔn)確的描述出來。概念數(shù)據(jù)模型是一種面向問題的數(shù)據(jù)模型,是按照用戶最直觀的需求對數(shù)據(jù)建立的模型。經(jīng)過對數(shù)據(jù)的各種分析,該系統(tǒng)涉及到的實(shí)體有:用戶信息實(shí)體、密保問題實(shí)體、收件箱實(shí)體、附件列表實(shí)體、發(fā)件箱實(shí)體、草稿箱實(shí)體、圖標(biāo)實(shí)體、聯(lián)系人實(shí)體、通訊錄實(shí)體、用戶信息視圖。</p><p> 數(shù)據(jù)字典【
75、3】是關(guān)于數(shù)據(jù)的信息的集合,作為分析階段的工具有著重要的用途。數(shù)據(jù)字典是開發(fā)數(shù)據(jù)庫的第一步,因此本文將相關(guān)數(shù)據(jù)以表格的形式列舉出來如下所示:</p><p> 1.用戶信息數(shù)據(jù)字典</p><p> 表4.1 用戶信息數(shù)據(jù)字典</p><p> 2.密保問題數(shù)據(jù)字典</p><p> 表4.2 密保問題數(shù)據(jù)字典</p>
76、<p><b> 3.收件箱數(shù)據(jù)字典</b></p><p> 表4.3 收件箱數(shù)據(jù)字典</p><p> 4.附件列表數(shù)據(jù)字典</p><p> 表4.4 附件列表數(shù)據(jù)字典</p><p><b> 5.發(fā)件箱數(shù)據(jù)字典</b></p><p> 表4.
77、5 發(fā)件箱數(shù)據(jù)字典</p><p><b> 6.草稿箱數(shù)據(jù)字典</b></p><p> 表4.6 草稿箱數(shù)據(jù)字典</p><p> 7.圖標(biāo)信息數(shù)據(jù)字典</p><p> 表4.7 圖標(biāo)信息數(shù)據(jù)字典</p><p> 4.2.2 系統(tǒng)E-R圖的設(shè)計</p><p&
78、gt; 系統(tǒng)主要包括收件箱、發(fā)件箱、草稿箱和已刪除及通訊錄五個大模塊,每個模塊都涉及到不同的實(shí)體類,E-R圖的設(shè)計將會更直觀的顯示出系統(tǒng)各實(shí)體之間的聯(lián)系。</p><p> 系統(tǒng)涉及到的實(shí)體有收件箱、發(fā)件箱、草稿箱、通訊錄、聯(lián)系人、用戶。實(shí)體之間的聯(lián)系如圖4.2所示:</p><p> 圖4.2 IU電子郵箱系統(tǒng)E-R圖</p><p> 4.2.3 數(shù)據(jù)庫
79、邏輯結(jié)構(gòu)的設(shè)計</p><p> 每個系統(tǒng)都有不同功能模塊,每個模塊都涉及到一定量的數(shù)據(jù)表,數(shù)據(jù)表之間又有著一定的聯(lián)系。E-R圖的設(shè)計就是直觀地表現(xiàn)出個實(shí)體類數(shù)據(jù)表之間的聯(lián)系和各種動作,系統(tǒng)的功能幾乎都要涉及到數(shù)據(jù)庫中的不同的表,而數(shù)據(jù)庫中的表的設(shè)計和表之間關(guān)系的設(shè)計,是數(shù)據(jù)庫設(shè)計的重點(diǎn)。根據(jù)對系統(tǒng)的數(shù)據(jù)分析和各模塊E-R圖的設(shè)計,我們按照系統(tǒng)涉及到的實(shí)體進(jìn)行數(shù)據(jù)庫設(shè)計。</p><p>
80、; IU電子郵箱系統(tǒng)數(shù)據(jù)庫名為“email”,本數(shù)據(jù)庫包括以下表:</p><p> 表4.8 密保問題表</p><p><b> 表4.9 收件箱表</b></p><p><b> 表4.10 圖標(biāo)表</b></p><p> 表4.11 附件列表</p><p&
81、gt;<b> 表4.12 用戶表</b></p><p> 表4.13 發(fā)件箱表</p><p> 表4.14 草稿箱表</p><p> 4.3 系統(tǒng)類圖的設(shè)計</p><p> 類圖是顯示了模型的靜態(tài)結(jié)構(gòu),特別是模型中存在的類、類的內(nèi)部結(jié)構(gòu)以及它們與其他類的關(guān)系等,顯示出類、接口以及它們之間的靜態(tài)結(jié)構(gòu)和關(guān)
82、系,它用于描述系統(tǒng)的結(jié)構(gòu)化設(shè)計。</p><p> 可以把類看作理論上的對象,類創(chuàng)建的所有對象都有相同的成員:屬性、方法和事件。但是,每個對象都像一個獨(dú)立的實(shí)體一樣動作。類圖的作用就是以圖表的形式表現(xiàn)出不同實(shí)體不同對象所做的動作。</p><p> 4.3.1 收件箱類圖的設(shè)計</p><p> 此模塊針對用戶進(jìn)入收件箱后進(jìn)行收取郵件,查看郵件,搜索郵件等操作
83、,類圖設(shè)計如圖4.3:</p><p> 圖4.3 收件箱類圖</p><p> 4.3.2 發(fā)件箱類圖的設(shè)計</p><p> 此模塊記錄了用戶所有發(fā)出去的郵件,方便用戶查閱發(fā)送記錄,發(fā)件箱類圖如圖4.4所示:</p><p> 圖4.4 發(fā)件箱類圖設(shè)計</p><p> 4.3.3 草稿箱類圖的設(shè)計<
84、;/p><p> 草稿箱主要是保存用戶在暫時不發(fā)送的郵件或者編輯尚未完成的郵件,方便用戶管理自己未發(fā)送的郵件。</p><p> 草稿箱功能實(shí)現(xiàn)的類圖設(shè)計如圖4.5所示: </p><p> 圖4.5 草稿箱類圖</p><p> 4.3.4 通訊錄類圖的設(shè)計</p><p> 通訊錄主要是給用戶提供一個管理自己
85、郵件聯(lián)系人的平臺,用戶可以添加刪除修改自己聯(lián)系人信息,并對其進(jìn)行分組,通訊錄類圖類圖設(shè)計如圖4.6所示: </p><p> 圖4.6 通訊錄類圖</p><p> 4.4 系統(tǒng)開發(fā)相關(guān)規(guī)范</p><p> 4.4.1 開發(fā)工具</p><p> 1.Myeclipse6.0:是一個十分優(yōu)秀的用于開發(fā)Java,J2EE的Eclips
86、e插件集合,MyEclipse的功能非常強(qiáng)大,支持也十分廣泛,尤其是對各種開元產(chǎn)品的支持十分不錯。它是功能豐富的JavaEE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。是系統(tǒng)開發(fā)主要編碼工具。</p><p> 2.Mysql 5.5:系統(tǒng)采用MySQL數(shù)據(jù)庫。</p><p>
87、 3.Dreamweaver8:Dreamweaver是美國MACROMEDIA公司開發(fā)的集網(wǎng)頁制作和管理網(wǎng)站于一身的所見即所得網(wǎng)頁編輯器,它是第一套針對專業(yè)網(wǎng)頁設(shè)計師特別發(fā)展的視覺化網(wǎng)頁開發(fā)工具,利用它可以輕而易舉地制作出跨越平臺限制和跨越瀏覽器限制的充滿動感的網(wǎng)頁。系統(tǒng)靜態(tài)網(wǎng)頁的設(shè)計大多采用此軟件進(jìn)行編輯和設(shè)計。</p><p> 4.Navicat 9 for MySQL:MySQL數(shù)據(jù)庫自身沒有圖形界面
88、,是通過命令的形式進(jìn)行操作;此工具即MySQL的圖形界面,將會更直觀地了解數(shù)據(jù)庫的結(jié)構(gòu)和表與表間的關(guān)系。</p><p> 4.4.2 編碼規(guī)范</p><p><b> 1.資源規(guī)范</b></p><p> Struts2.1.8:系統(tǒng)采用Struts框架進(jìn)行開發(fā),系統(tǒng)采用的Struts標(biāo)準(zhǔn)為Struts2.1.8。</p>
89、;<p> Mysql-connector-java-3.1.12-bin.jar:系統(tǒng)數(shù)據(jù)庫采用MySQL,此jar包即是連接數(shù)據(jù)庫的驅(qū)動。 </p><p><b> 2.編碼規(guī)范</b></p><p> 編碼是軟件系統(tǒng)開發(fā)過程中最重要的部分之一,編碼就是系統(tǒng)實(shí)現(xiàn)。在系統(tǒng)實(shí)現(xiàn)過程中,不同的系統(tǒng)大小代碼量不同,需求也不同,在保證系統(tǒng)開發(fā)進(jìn)度和質(zhì)
90、量的前提下,就必須進(jìn)行開發(fā)人員的分工。分工意味著不同組員負(fù)責(zé)不同模塊的實(shí)現(xiàn),在負(fù)責(zé)不同模塊的同時,保證項目進(jìn)度和質(zhì)量,必定需要一定的編碼規(guī)范來約束和規(guī)范系統(tǒng)的編碼。良好的編碼規(guī)范會使項目的進(jìn)展更順利,并且能保證系統(tǒng)的質(zhì)量和具有很好的后期維護(hù)性。</p><p> 本系統(tǒng)的開發(fā),代碼結(jié)構(gòu)如下圖4.11所示:</p><p> 圖4.11 系統(tǒng)代碼結(jié)構(gòu)</p><p&g
91、t; mail.action,控制業(yè)務(wù)邏輯;</p><p> mail.dao,負(fù)責(zé)操作數(shù)據(jù)庫;</p><p> mail.domain,持久層類;</p><p> mail.service,數(shù)據(jù)服務(wù)層;</p><p> mail.toolsbean,一些工具類,比如MySQL連接數(shù)據(jù)庫的類,中文轉(zhuǎn)碼的類等等;</p&
92、gt;<p> Struts.xml,struts配置文件,控制器的核心,系統(tǒng)流程的方向;</p><p><b> 第5章 系統(tǒng)實(shí)現(xiàn)</b></p><p> 5.1 系統(tǒng)登錄和首頁</p><p> 5.1.1 系統(tǒng)登錄</p><p> 系統(tǒng)以綠色為基調(diào),實(shí)現(xiàn)“簡約而不簡單”的理念,所以登錄
93、功能在UI展現(xiàn)上左邊用鐘表來體現(xiàn)系統(tǒng)希望在功能上實(shí)現(xiàn)“快速,便捷,效率”。</p><p> 首頁的展示設(shè)計,在一定程度上決定著系統(tǒng)的成功與否,外觀是給用戶的第一感受。在“IU電子郵箱”系統(tǒng)界面設(shè)計過程中,經(jīng)小組成員分析研究認(rèn)為,作為郵箱系統(tǒng),主題風(fēng)格應(yīng)該是綠色的清新的,并且進(jìn)入系統(tǒng)后應(yīng)該一目了然地看到自己收到的新郵件。因此決定該系統(tǒng)采用綠色為主色調(diào)。</p><p> 用戶注冊IU電
94、子郵箱系統(tǒng)后,將會在系統(tǒng)數(shù)據(jù)庫用戶表(userInfo)中插入用戶數(shù)據(jù),并相應(yīng)的在用戶表視圖(V_UserInfo)中增加一行記錄;當(dāng)用戶登錄系統(tǒng)時候,頁面首先用javaScript對用戶名和密碼進(jìn)行格式校驗(yàn),若格式正確用戶點(diǎn)擊登陸button,頁面將用戶名和密碼傳到后臺的LogonAction中的logon方法,從數(shù)據(jù)庫中查詢與頁面獲得的帳號密碼相匹配的結(jié)果,若成功則將登錄用戶信息存入session,并給logon方法返回LogonS
95、uccess信息,若失敗logon方法返回LogonError信息,struts根據(jù)action的返回result,跳轉(zhuǎn)入不同的頁面顯示不同的結(jié)果。具體配置為:</p><p> <action name="login" class="mail.action.LogonAction" method="logon"></p>&
96、lt;p> <result name="loginSuccess" type ="redirectAction">receive.action</result></p><p> <result name="loginError">/email/error.jsp</result></act
97、ion></p><p> 當(dāng)用戶登錄成功后,struts根據(jù)action的值跳轉(zhuǎn)入receive.action去郵箱服務(wù)器中查詢是否有該用戶的新郵件,若有新郵件取出來插入receiveBox表,然后顯示到首頁供用戶查閱,此時郵箱服務(wù)器中對應(yīng)郵件將自動刪除。系統(tǒng)登錄界面如圖5.1所示,登錄成功后首頁UI如圖5.2所示。</p><p> 圖5.1 登陸頁面 </p>
98、<p> 圖5.2 登陸后首頁</p><p><b> 5.1.2 寫信</b></p><p> 寫信功能是IU郵箱系統(tǒng)最基本的功能,用戶可以寫一封帶附件郵件并發(fā)送或保存至草稿箱。</p><p> 用戶進(jìn)入系統(tǒng),點(diǎn)擊寫信進(jìn)入寫信頁面效果如圖5.3所示。用戶輸入收件人,主題,可選擇上傳附件,寫郵件正文。主題和郵件正文使用
99、頁面js不為空和字?jǐn)?shù)限制校驗(yàn)。當(dāng)郵件編輯完成后,用戶可以點(diǎn)擊發(fā)送button來發(fā)送郵件。此時,頁面js選擇跳入名為send的action,并傳送數(shù)據(jù)給后臺SendBoxAction中的send()方法,此方法首先會創(chuàng)建一個Properties 對象:Properties props = System.getProperties();并為該對象添加smtp郵箱服務(wù)器屬性;接著創(chuàng)建郵件回話Session對象mailSession,主要是進(jìn)行
100、一些郵箱權(quán)限的認(rèn)證。接著創(chuàng)建一個Mail對象mail,將從頁面取得的數(shù)據(jù)賦給該對象,mail通過調(diào)用Mail對象的sendMail方法,sendMail方法首先根據(jù)fileName判斷該郵件是否有附件 ,即:</p><p> if (filename != null && filename.length() != 0),發(fā)送帶附件的郵件分為兩部分,MultiPart和bodyPart,首先將郵
101、件內(nèi)容加入MultiPart,接著由FileDataSource得到數(shù)據(jù)源,接著得到附件本身并加入bodyPart,具體實(shí)現(xiàn)如下:</p><p> if(filename!= null&&!"".equals("filename")){</p><p> //發(fā)送附件 將BodyPart加入到MUltiPart中</p&
102、gt;<p> Multipart mp = new MimeMultipart();</p><p> MimeBodyPart mbp = new MimeBodypart();</p><p><b> //郵件內(nèi)容</b></p><p> mbp.setText(mailContent);</p>
103、<p> mp.addBodyPart(mbp);</p><p><b> //得到數(shù)據(jù)源</b></p><p> FileDataSource fds = new FileDataSource(filename);</p><p> //得到附件置入BodyPart</p><p> mbp.
104、setDataHandler(new DataHandler(fds));</p><p> 若不帶附件,直接設(shè)置內(nèi)容即可。無論是否帶附件都是通過Transport對象的send方法將郵件發(fā)送出去。當(dāng)郵件發(fā)出的時刻,同時要向數(shù)據(jù)庫的sendBox表和Attachment表插入數(shù)據(jù),以記錄用戶發(fā)送方便用戶查閱。若發(fā)送失敗,則系統(tǒng)進(jìn)入error.jsp,提示用戶郵件發(fā)送失敗,并提供發(fā)送郵件的鏈接;如果郵件發(fā)送成功,
105、系統(tǒng)顯示發(fā)送成功頁面。</p><p> 用戶點(diǎn)擊上傳文件,系統(tǒng)會檢查文件的格式和大小是否符合Struts2中的配置文件struts.xml中<param name="allowedTypes"></param name="allowedTypes">的規(guī)定類型和大小時,會返回一個字符error頁面通過接收的error字符跳入顯示上傳錯誤的信息頁面
106、。當(dāng)所有數(shù)據(jù)正確時,上傳文件,并且顯示進(jìn)度條,上傳成功頁面將會顯示用戶上傳的的資源列表。</p><p> 上傳文件時,頁面?zhèn)魅隺ction進(jìn)struts.xml,相應(yīng)的action類UploadResAction通過調(diào)用execute方法進(jìn)行文件上傳,通過FileOutputStream fos = new FileOutputStream(getSavePath() + "\\"+ ge
107、tResFileName());建立一個以資源存儲路徑和文件名的輸出流,F(xiàn)ileInputStream fis = new FileInputStream(getRes());建立一個輸出流,繼而將上傳的文件存入系統(tǒng)設(shè)置的文件夾中。</p><p> 當(dāng)用戶編輯好郵件,點(diǎn)擊存草稿button,此時js會跳入名為DraftBox_add的action,頁面?zhèn)魉蛿?shù)據(jù)給DraftBoxAction中的add方法,將郵
108、件信息保存入數(shù)據(jù)庫draftBox表。此時查閱草稿箱,將會有一封新草稿。</p><p><b> 圖5.3 寫信</b></p><p> 5.2 收件箱功能實(shí)現(xiàn)</p><p> 5.2.1 收取郵件</p><p> 用戶收取郵件有兩種方式:第一種是用戶登錄IU電子郵箱時,系統(tǒng)將會去郵箱服務(wù)器查詢有沒有當(dāng)前
109、用戶的郵件,有的話就取出來并顯示給用戶;第二種是當(dāng)用戶點(diǎn)擊收信的時候,頁面將會跳轉(zhuǎn)到名為receive的action,到ReceiveBoxAction中找到getMail()方法,首先創(chuàng)建Properties對象,Properties props = new Properties();根據(jù)對象創(chuàng)建創(chuàng)建郵件會話mailSession;接著獲取郵箱的pop3存儲對象store,store調(diào)用connect方法,與郵箱服務(wù)器取的聯(lián)系;然后就
110、可以從郵箱服務(wù)器的Inbox信箱里獲取郵件信息,把接收到郵件信息添加到本地數(shù)據(jù)庫,通過message[i].setFlag(Flags.Flag.DELETED, true)來刪除服務(wù)器端的郵件。用戶點(diǎn)擊收信后的顯示結(jié)果如圖5.4,由于系統(tǒng)返回來的結(jié)果類型是List,通過迭代器<s:iterator>來逐個顯示List列表中的元素,再通過<s:property>標(biāo)簽來把元素中的具體內(nèi)容顯示出來,即顯示單封郵件內(nèi)容
111、。代碼如下:</p><p> <s:iterator value="listInBox"> </p><p> <input type="checkbox" id="checkBoxList"</p><p> name="checkBoxList"value=
112、"<s:property value="ID" />" /></s:iterator></p><p> 圖5.4 點(diǎn)擊收信后頁面</p><p> 5.2.2 回復(fù)郵件</p><p> 當(dāng)用戶點(diǎn)擊收件箱進(jìn)入單封郵件可以回復(fù)郵件。用戶點(diǎn)擊回復(fù)button,效果如圖5.5;頁面將傳到后臺的R
113、eplyMailAction中的replyMail方法,首先創(chuàng)建Properties 對象,Properties props = new Properties();根據(jù)對象創(chuàng)建創(chuàng)建郵件會話mailSession;接著獲取郵箱的pop3存儲對象store,store調(diào)用connect方法,與郵箱服務(wù)器取的聯(lián)系;然后就可以定義郵件信息了,定義收件人,主題等等信息?;貜?fù)郵件跟發(fā)送的郵件都是使用send方法發(fā)送,不同的就是收件人默認(rèn)為發(fā)送給你郵
114、件的用戶。當(dāng)回復(fù)成功會提示郵件發(fā)送成功,并提供返回該郵件的鏈接。</p><p><b> 圖5.5 回復(fù)效果</b></p><p> 5.2.3 轉(zhuǎn)發(fā)郵件</p><p> 當(dāng)用戶點(diǎn)擊收件箱進(jìn)入單封郵件可以轉(zhuǎn)發(fā)郵件。用戶點(diǎn)擊轉(zhuǎn)發(fā)button,效果如圖5.6。頁面將傳到后臺的FwdMailAction中的fwdMail()方法,首先創(chuàng)建
115、Properties 對象,根據(jù)對象創(chuàng)建創(chuàng)建郵件會話mailSession,接著獲取郵箱的pop3存儲對象store,store調(diào)用connect方法,與郵箱服務(wù)器取的聯(lián)系;接下來定義轉(zhuǎn)發(fā)郵件信息了,定義收件人,主題等等信息?;貜?fù)郵件跟發(fā)送的郵件所不同的是,轉(zhuǎn)發(fā)是把一封信看成兩部分,一部分是message part,另一部分是multi-part。具體實(shí)現(xiàn)如下: BodyPart messageBodyPart = new MimeBo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于struts2技術(shù)的電子郵件系統(tǒng)的設(shè)計與實(shí)現(xiàn)-畢業(yè)論文
- struts2電影交流bbs論壇畢業(yè)論文
- 基于struts2的軟件項目開發(fā)管理系統(tǒng)的設(shè)計與實(shí)現(xiàn)【畢業(yè)論文】
- 基于struts2的求職網(wǎng)平臺的設(shè)計與實(shí)現(xiàn)【畢業(yè)論文】
- 基于struts2,spring,lucene靈活性搜索平臺的搭建---畢業(yè)論文
- 中油電子郵箱設(shè)置方法
- 電子郵箱申請表
- 基于struts2的電子商城系統(tǒng)的研究與實(shí)現(xiàn).pdf
- 免費(fèi)電子郵箱大全
- 電子郵箱開通申請表
- 廣州黨政機(jī)關(guān)電子郵箱業(yè)務(wù)
- 電子郵箱開通申請表
- struts2上傳文件
- 畢業(yè)設(shè)計--基于struts2技術(shù)bbs論壇系統(tǒng)的設(shè)計與實(shí)現(xiàn)
- struts2常用標(biāo)簽總結(jié)
- ognl,jstl,struts2標(biāo)簽
- 重構(gòu)struts2 jsp分頁
- struts2學(xué)習(xí)筆記-1
- struts2源代碼分析
- struts2框架搭建教程-
評論
0/150
提交評論