基于java的電子郵件收發(fā)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)】_第1頁(yè)
已閱讀1頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  本科畢業(yè)設(shè)計(jì)(論文)</p><p><b>  (二零 屆)</b></p><p>  基于java的電子郵件收發(fā)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  所在學(xué)院 </p><p>  專(zhuān)業(yè)班級(jí) 計(jì)算機(jī)科學(xué)與技術(shù) &l

2、t;/p><p>  學(xué)生姓名 學(xué)號(hào) </p><p>  指導(dǎo)教師 職稱(chēng) </p><p>  完成日期 年 月 </p><p>  摘要:電子郵件發(fā)展的初期,人們只能通過(guò)outlook、foxmail等客戶端軟件

3、來(lái)完成郵件的收發(fā)。隨著移動(dòng)辦公的出現(xiàn),人們發(fā)現(xiàn)普通的C/S模式結(jié)構(gòu)的電子郵件系統(tǒng)已不能滿足需要,基于B/S結(jié)構(gòu)的電子郵件系統(tǒng)在遵循郵件協(xié)議的前提下,以其快捷、方便的優(yōu)點(diǎn)吸引了大量的用戶。在這種模式下,用戶只需要安裝web瀏覽器這一最常用的軟件,通過(guò)登陸到郵箱的網(wǎng)頁(yè),即可完成郵件的收發(fā)及其他功能。</p><p>  關(guān)鍵詞:電子郵件;郵件協(xié)議;B/S</p><p>  Design an

4、d Implementation of Email System based on Java</p><p>  Abstract:At the beginning of the email’s developing,people send and receive emails by using client software,such as outlook、foxmail and so on。With the

5、appearance of mobile office,people find common email system could’t satisfied their requirements,on the premise of following the mail protocols,the email system which is based on the Brower/Server structure attracts many

6、 users by its advantages such as fast and convenient. In this kind of struct,users only need to install brower,a very common soft</p><p>  Keywords: email; mail protocol; brower/server </p><p>&

7、lt;b>  目 錄</b></p><p><b>  1 緒論1</b></p><p>  1.1 課題的研究背景1</p><p>  1.1.1 電子郵件的歷史背景1</p><p>  1.1.2 郵件系統(tǒng)的工作原理1</p><p>  1.2

8、 課題的研究?jī)?nèi)容1</p><p>  1.3 論文的內(nèi)容組織2</p><p>  2 基礎(chǔ)知識(shí)簡(jiǎn)介3</p><p>  2.1 HTML簡(jiǎn)介3</p><p>  2.2 JSP3</p><p>  2.3 Servlet4</p><p>  2.4 JavaM

9、ail4</p><p>  3 服務(wù)器環(huán)境搭建5</p><p>  3.1 java環(huán)境搭建5</p><p>  3.2 apache服務(wù)器5</p><p>  3.2.1 Apache簡(jiǎn)介5</p><p>  3.2.2 Apache的安裝與調(diào)試6</p><p&g

10、t;  3.3 tomcat服務(wù)器7</p><p>  3.3.1 Tomcat簡(jiǎn)介7</p><p>  3.3.2 Tomcat的安裝與調(diào)試7</p><p>  3.4 整合apache與tomcat8</p><p>  3.4.1 為什么要將兩者進(jìn)行整合8</p><p>  3.4.2

11、 整合的步驟與測(cè)試8</p><p>  3.5 sendmail(SMTP服務(wù)器)10</p><p>  3.5.1 Sendmail簡(jiǎn)介10</p><p>  3.5.2 Sendmail服務(wù)器的安裝與調(diào)試11</p><p>  3.6 dovecot(POP3服務(wù)器)12</p><p>

12、;  3.7 DNS服務(wù)器13</p><p>  3.8 服務(wù)器搭建部分總結(jié)14</p><p>  4 系統(tǒng)分析15</p><p>  4.1 需求分析15</p><p>  4.2 可行性分析15</p><p>  4.2.1 平臺(tái)可行性15</p><p>

13、  4.2.2 技術(shù)可行性16</p><p>  4.2.3 實(shí)用性16</p><p>  5 數(shù)據(jù)庫(kù)設(shè)計(jì)17</p><p>  5.1 E-R圖設(shè)計(jì)17</p><p>  5.2 數(shù)據(jù)表的邏輯結(jié)構(gòu)設(shè)計(jì)18</p><p>  5.3 表間的關(guān)系19</p><p&g

14、t;  6 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)21</p><p>  6.1 服務(wù)器上用戶家目錄設(shè)計(jì)21</p><p>  6.2 登錄模塊設(shè)計(jì)21</p><p>  6.2.1 新用戶注冊(cè)21</p><p>  6.2.2 已有賬號(hào)的用戶的登錄21</p><p>  6.3 發(fā)信模塊設(shè)計(jì)22</p

15、><p>  6.4 收信模塊設(shè)計(jì)23</p><p>  6.4.1 郵件分類(lèi)23</p><p>  6.4.2 讀取收件箱和垃圾箱中的郵件24</p><p>  6.4.3 讀取已發(fā)送和草稿箱內(nèi)的郵件25</p><p>  6.5 普通郵件的處理25</p><p> 

16、 6.6 含附件的郵件的處理25</p><p>  6.7 聯(lián)系人模塊26</p><p>  6.8 中文亂碼問(wèn)題的總結(jié)27</p><p>  6.8.1 頁(yè)面中文亂碼28</p><p>  6.8.2 數(shù)據(jù)庫(kù)中文亂碼28</p><p>  6.8.3 URL中含有中文參數(shù)值時(shí)亂碼28

17、</p><p>  6.8.4 附件名為中文時(shí)亂碼28</p><p>  7 系統(tǒng)測(cè)試與評(píng)價(jià)30</p><p>  7.1 系統(tǒng)測(cè)試的原則及方法30</p><p>  7.2 測(cè)試與評(píng)價(jià)30</p><p>  7.2.1 單元測(cè)試30</p><p>  7.2.2

18、 集成測(cè)試32</p><p>  7.2.3 系統(tǒng)測(cè)試與評(píng)價(jià)32</p><p>  8 總結(jié)及展望34</p><p>  致 謝錯(cuò)誤!未定義書(shū)簽。</p><p><b>  參考文獻(xiàn)35</b></p><p><b>  1 緒論</b><

19、/p><p>  1.1 課題的研究背景</p><p>  1.1.1 電子郵件的歷史背景[1]</p><p>  電子郵件(E-mail)又稱(chēng)電子信箱、電子郵政,它是—種用現(xiàn)代網(wǎng)絡(luò)技術(shù)提供信息交換的通信方式,不只局限于信件的傳遞,還可用來(lái)傳遞文件、聲音及圖片等不同類(lèi)型的信息,是因特網(wǎng)上使用最普遍的一項(xiàng)服務(wù)。通過(guò)連接全世界的Internet,實(shí)現(xiàn)各類(lèi)信息的傳送、

20、接收、存儲(chǔ)等處理,將郵件送到世界各地的各個(gè)角落,這種非交互式的通信方式,加速了信息的交流和數(shù)據(jù)的傳送。</p><p>  1.1.2 郵件系統(tǒng)的工作原理</p><p>  電子郵件是一種存儲(chǔ)轉(zhuǎn)發(fā)式的服務(wù),這正是電子信箱系統(tǒng)的核心。利用存儲(chǔ)轉(zhuǎn)發(fā)可以實(shí)現(xiàn)非實(shí)時(shí)通信,屬異步通信方式。即郵件發(fā)送者可以隨時(shí)隨地發(fā)送郵件,不需要接收者同時(shí)在場(chǎng)。即使對(duì)方現(xiàn)在不在,仍可將郵件立刻送到對(duì)方的信箱內(nèi),存

21、儲(chǔ)在對(duì)方的電子郵箱中。收信人可以在他認(rèn)為方便的時(shí)候收取信件,不受時(shí)間、地點(diǎn)的限制。在這里,“發(fā)送”郵件意味著將郵件放到收件人的信箱中,而“接收”郵件則是收信人從自己的信箱中讀取信件,信箱實(shí)際上是由文件管理系統(tǒng)支持的—個(gè)實(shí)體。電子郵件是通過(guò)郵件服務(wù)器來(lái)完成發(fā)送和接收的,通常郵件服務(wù)器是安裝有l(wèi)inux系統(tǒng)或者windows系統(tǒng)的計(jì)算機(jī),它們提供24小時(shí)的電子郵件服務(wù),用戶只要向郵件服務(wù)器的管理人員申請(qǐng)—個(gè)信箱帳號(hào),就可使用這項(xiàng)快速的郵件服

22、務(wù)。</p><p>  1.2 課題的研究?jī)?nèi)容</p><p>  隨著網(wǎng)絡(luò)的日益普及,互聯(lián)網(wǎng)大大改變了人們的工作和生活方式,作為互聯(lián)網(wǎng)上應(yīng)用最為廣泛的服務(wù)之一,電子郵件系統(tǒng)給予了人們別樣的感受。本系統(tǒng)使用Java語(yǔ)言來(lái)設(shè)計(jì)電子郵件系統(tǒng),將E-mail系統(tǒng)和web技術(shù)相結(jié)合,生成一種界面友好、操作方便、易擴(kuò)充的郵件收發(fā)系統(tǒng)。用戶通過(guò)瀏覽器直接訪問(wèn)電子郵件系統(tǒng),無(wú)須進(jìn)行任何配置。該系統(tǒng)開(kāi)

23、發(fā)完成后,主要實(shí)現(xiàn)以下功能:</p><p><b>  1) 用戶注冊(cè)</b></p><p>  新用戶根據(jù)自己的喜好申請(qǐng)一個(gè)郵箱名,在注冊(cè)成功后將會(huì)自動(dòng)獲得100MB的郵箱空間。</p><p><b>  2) 發(fā)信和收信</b></p><p>  用戶既可以向單個(gè)收信人發(fā)送郵件,也可以向

24、多個(gè)收信人同時(shí)發(fā)送郵件,實(shí)現(xiàn)郵件的群發(fā)功能。郵件不僅可以包含文本內(nèi)容,也可以包含圖片、音頻、視頻等多媒體信息。在郵件成功發(fā)送到收件人的郵箱后,系統(tǒng)將告知用戶郵件已成功發(fā)送的信息。若由于網(wǎng)絡(luò)擁堵或者其它原因致使郵件不能發(fā)送到收件人的郵箱,系統(tǒng)將提示郵件發(fā)送失敗,并將郵件的副本放入草稿箱,以備用戶下次發(fā)送時(shí)使用。</p><p><b>  3) 即時(shí)保存</b></p><

25、p>  在用戶編寫(xiě)郵件的過(guò)程中,可能會(huì)遇到計(jì)算機(jī)斷電、瀏覽器窗口意外關(guān)閉等突發(fā)狀況。為了使這些狀況對(duì)于用戶的損失降到最低程度,系統(tǒng)將對(duì)用戶的頁(yè)面數(shù)據(jù)每隔三十秒進(jìn)行自動(dòng)保存。在發(fā)生上述突發(fā)狀況后,用戶可以到草稿箱中尋找最近一次保存的文檔,并再次進(jìn)行編輯。</p><p>  4) 聯(lián)系人的編輯與查找</p><p>  用戶可以對(duì)聯(lián)系人的信息進(jìn)行編輯并分類(lèi)。在聯(lián)系人過(guò)多時(shí),可以使用查找

26、功能快速方便的找到所需要的用戶。</p><p>  5) 界面自定義功能</p><p>  用戶可以根據(jù)自己的喜好選擇一款適合自己的郵箱界面,并且可以隨時(shí)更換。</p><p><b>  6) 郵箱擴(kuò)容</b></p><p>  當(dāng)用戶認(rèn)為郵箱的大小不足以滿足自己的需要時(shí),可以向系統(tǒng)管理員申請(qǐng)擴(kuò)容。</p&

27、gt;<p>  1.3 論文的內(nèi)容組織</p><p>  論文共由七章組成。第1章緒論,主要介紹系統(tǒng)的研究背景、研究目的和意義、研究?jī)?nèi)容以及研究方法;第2章基礎(chǔ)知識(shí)簡(jiǎn)介,主要介紹系統(tǒng)開(kāi)發(fā)過(guò)程中會(huì)用到的相關(guān)技術(shù),主要有系統(tǒng)的開(kāi)發(fā)平臺(tái)J2EE,郵件服務(wù)器的介紹包括用于發(fā)信的smtp服務(wù)器sendmail和用于收信的POP3服務(wù)器dovecot,還介紹了相關(guān)的數(shù)據(jù)庫(kù)技術(shù);第3章系統(tǒng)分析,對(duì)系統(tǒng)總體功

28、能進(jìn)行闡述,說(shuō)明系統(tǒng)要實(shí)現(xiàn)的各個(gè)基本功能模塊,并對(duì)系統(tǒng)的可行性進(jìn)行分析;第4章概要設(shè)計(jì),介紹系統(tǒng)的總體框架及相關(guān)數(shù)據(jù)結(jié)構(gòu);第5章系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),主要介紹系統(tǒng)的硬、軟件環(huán)境、界面設(shè)計(jì)、功能實(shí)現(xiàn)、主要技術(shù)難點(diǎn);第6章系統(tǒng)測(cè)試與評(píng)價(jià),主要涉及系統(tǒng)的測(cè)試方法、數(shù)據(jù),結(jié)論以及對(duì)系統(tǒng)的性能進(jìn)行評(píng)價(jià);第7章總結(jié)與展望,主要闡述了本系統(tǒng)所完成的研究工作和存在的不足,以及希望在今后可以完善的地方。</p><p><b>

29、;  2 基礎(chǔ)知識(shí)簡(jiǎn)介</b></p><p>  2.1 HTML簡(jiǎn)介</p><p>  HTML(Hyper Text Markup Language)是一種超文本標(biāo)記語(yǔ)言,這種語(yǔ)言是由很多HTML標(biāo)簽組成的,用最簡(jiǎn)單的記事本工具即可編寫(xiě)HTML網(wǎng)頁(yè)。而以HTML編寫(xiě)的這種超文本文檔就稱(chēng)為HTML文檔。HTML是互聯(lián)網(wǎng)上各種瀏覽器所識(shí)別的語(yǔ)言,這種語(yǔ)言所編寫(xiě)的文檔一般

30、以html或htm為擴(kuò)展名。HTML采用超集方式進(jìn)行版本升級(jí),因此更加靈活方便。此外,可擴(kuò)展性也是HTML的一大特點(diǎn), HTML采取子類(lèi)元素的方式,為系統(tǒng)擴(kuò)展帶來(lái)保證。HTML具有平臺(tái)無(wú)關(guān)性,即不僅可以在臺(tái)式計(jì)算機(jī)上上網(wǎng),而且可以在掌上電腦、手機(jī)等終端上上網(wǎng),這更加證明了HTML是無(wú)處不在的。</p><p>  HTML的主要結(jié)構(gòu)可劃分為3個(gè)部分:</p><p>  1) HTML標(biāo)簽

31、:代表整篇文檔是一個(gè)網(wǎng)頁(yè)文件。</p><p>  2) HEAD標(biāo)簽:用于描述網(wǎng)頁(yè)的頭部信息。</p><p>  3) BODY標(biāo)簽:用于描述要顯示的內(nèi)容信息。</p><p><b>  2.2 JSP</b></p><p>  JSP (java Server Pages)是服務(wù)器端的腳本語(yǔ)言,以Java和S

32、ervlet為基礎(chǔ),是一種通過(guò)在HTML頁(yè)面中加入Java語(yǔ)言生成動(dòng)態(tài)頁(yè)面的技術(shù)[2]。JSP頁(yè)面由HTML代碼和嵌入其中的Java代碼所組成,服務(wù)器在頁(yè)面被客戶端所請(qǐng)求后對(duì)這些Java代碼進(jìn)行處理,然后將生成的HTML頁(yè)面返回給客戶端的瀏覽器。</p><p>  JSP 的執(zhí)行過(guò)程是:客戶端請(qǐng)求JSP頁(yè)面——>JSP Parser 解析*.jsp,編譯為*.java——>javac 命令編譯成*.

33、class——>執(zhí)行 class 文件——>響應(yīng) 返回結(jié)果給客戶端。</p><p>  JSP 代碼中包含JSP和Template data兩類(lèi)元素。Template data 是 JSP 引擎不處理的部分,即JSP 引擎會(huì)把標(biāo)記在<%...%>以外的部分直接傳遞出去而不進(jìn)行任何處理。 JSP 在第一次被訪問(wèn)或修改后都會(huì)調(diào)用 JSP Parser 將*.jsp 文件編譯成 servlet

34、 程序,所以速度比較慢。</p><p><b>  JSP有如下優(yōu)點(diǎn):</b></p><p>  1) 代碼的執(zhí)行效率高,即一次編譯,多次、多處運(yùn)行。</p><p>  當(dāng)JSP第一次被請(qǐng)求時(shí),JSP頁(yè)面轉(zhuǎn)換成servlet,然后被編譯成.calss文件,在這以后,除非頁(yè)面有改動(dòng)或Web服務(wù)器被重新啟動(dòng),否則當(dāng)再有客戶請(qǐng)求該JSP頁(yè)面時(shí),

35、JSP頁(yè)面不被重新編譯,而是直接執(zhí)行已編譯好的.class文件,因此代碼執(zhí)行效率高。</p><p><b>  2) 組件的重用性</b></p><p>  可重用的、跨平臺(tái)的JavaBeans和EJB(Enterprise JavaBeans)組件,為JSP程序的開(kāi)發(fā)提供方便,我們可以將復(fù)雜的處理程序(如頁(yè)面中需要顯示的動(dòng)態(tài)內(nèi)容及對(duì)數(shù)據(jù)庫(kù)的操作)放到組件中。&l

36、t;/p><p>  3) 內(nèi)容的生成和顯示分離</p><p>  由于使用了JSP標(biāo)識(shí)或者腳本來(lái)生成頁(yè)面上的動(dòng)態(tài)內(nèi)容,因此,生成動(dòng)態(tài)內(nèi)容的語(yǔ)句一般被封裝在JavaBean組件、EJB組件或JSP腳本段中。這樣,頁(yè)面的設(shè)計(jì)人員和頁(yè)面的編程人員可以同步進(jìn)行。同時(shí)在客戶端通過(guò)查看源文件,看不到JSP標(biāo)識(shí)的語(yǔ)句,更看不到JavaBean和EJB組件,也可以保護(hù)源程序的代碼。</p>

37、<p>  2.3 Servlet</p><p>  Servlet是作用于服務(wù)器端的java應(yīng)用程序,它的主要功能是交互式地瀏覽和修改數(shù)據(jù)生成動(dòng)態(tài)Web內(nèi)容[3]。其工作過(guò)程如下:</p><p>  1) 客戶端發(fā)送請(qǐng)求至服務(wù)器端</p><p>  2) 服務(wù)器將請(qǐng)求信息送至servlet</p><p>  3) Ser

38、vlet生成相應(yīng)內(nèi)容并將其傳給服務(wù)器</p><p>  4) 服務(wù)器將相應(yīng)動(dòng)態(tài)Web內(nèi)容返回給客戶端</p><p>  2.4 JavaMail</p><p>  JavaMail是由Sun公司發(fā)布用來(lái)處理Email的API。它可以方便地執(zhí)行一些常用的郵件傳輸。JavaMail中用于處理電子郵件的核心類(lèi)是:Session,Authenticator,Fold

39、er,Message, Address,Transport,Store等[4]。Session類(lèi)的主要作用是定義一個(gè)與郵件服務(wù)器的會(huì)話,其中的屬性值,例如服務(wù)器地址、所采用的通信協(xié)議等均可在Properties類(lèi)中設(shè)置。Folder類(lèi)是對(duì)服務(wù)器上的文件進(jìn)行操作,例如打開(kāi)文件的操作和以何種方式(只讀、讀寫(xiě))打開(kāi)文件。Message類(lèi)的作用是對(duì)郵件的內(nèi)容進(jìn)行操作,包括設(shè)置發(fā)送郵件和讀取郵件的內(nèi)容。Tranport類(lèi)的主要作用是發(fā)送郵件。&l

40、t;/p><p>  3 服務(wù)器環(huán)境搭建</p><p>  3.1 java環(huán)境搭建</p><p>  由于本系統(tǒng)采用java語(yǔ)言設(shè)計(jì),所以需要在服務(wù)器端安裝java的運(yùn)行環(huán)境,從http:// www.oracle.com/technetwork/java/javase/downloads/jdk-6u25-download-346242.html網(wǎng)站上下載j

41、dk6.0版本,由于是在linux環(huán)境上安裝,所以選擇.bin文件,下載后更改文件權(quán)限,通過(guò)命令將其更改為可執(zhí)行文件,如圖3-1所示,在文件存放目錄執(zhí)行“./jdk.bin”命令,安裝jdk。</p><p>  圖3-1:更改jdk.bin文件的權(quán)限,使其成為可執(zhí)行文件</p><p>  安裝好后還需配置環(huán)境變量,在linux環(huán)境中,通過(guò)編輯“/etc/profie”文件來(lái)設(shè)置環(huán)境變量

42、的值。在命令行中輸入“vi /etc/profile”,將光標(biāo)移到最后一行,按i鍵進(jìn)入編輯模式,如圖3-2所示,完成后按ESC鍵回到命令模式,保存退出。</p><p>  圖3-2:配置java環(huán)境變量</p><p>  此時(shí)環(huán)境變量的值還未得到應(yīng)用,應(yīng)執(zhí)行圖3-3命令將剛設(shè)置的參數(shù)添加到環(huán)境變量中。</p><p>  圖3-3:使配置的環(huán)境變量生效</

43、p><p>  完成后執(zhí)行“java –version”命令,若出現(xiàn)如圖3-5所示頁(yè)面,則表明java環(huán)境搭建成功。</p><p>  圖3-4:java的運(yùn)行環(huán)境搭建成功</p><p>  3.2 apache服務(wù)器</p><p>  3.2.1 Apache簡(jiǎn)介</p><p>  Apache源于NCSAh

44、ttpd服務(wù)器,經(jīng)過(guò)多次修改,成為世界上最流行的Web服務(wù)器軟件之一。Apache取自“a patchy server”的讀音,意思是充滿補(bǔ)丁的服務(wù)器,因?yàn)樗亲杂绍浖圆粩嘤腥藖?lái)為它開(kāi)發(fā)新的功能、增加新的特性、修改原來(lái)的缺陷。Apache的特點(diǎn)是簡(jiǎn)單、速度快、性能穩(wěn)定,并且可以作為代理服務(wù)器來(lái)使用。</p><p>  原來(lái)它只用于小型或試驗(yàn)Internet網(wǎng)絡(luò),后來(lái)逐步擴(kuò)展到各種Unix系統(tǒng)中,尤其對(duì)Li

45、nux的支持相當(dāng)完美[5]。Apache有多種產(chǎn)品,可以支持SSL技術(shù),也可以支持多個(gè)虛擬主機(jī)。Apache是以進(jìn)程為基礎(chǔ)的結(jié)構(gòu),進(jìn)程要比線程消耗更多的系統(tǒng)開(kāi)支,不太適合于多處理器環(huán)境,因此,在一個(gè)Apache Web站點(diǎn)擴(kuò)容時(shí),通常是增加服務(wù)器或擴(kuò)充群集節(jié)點(diǎn)而不是增加處理器。到目前為止Apache仍然是世界上用的最多的Web服務(wù)器,市場(chǎng)占有率達(dá)60%左右。世界上很多著名的網(wǎng)站如Amazon.com、Yahoo!、W3 Consorti

46、um、Financial Times等都是Apache的產(chǎn)物,它的成功之處主要在于它的源代碼開(kāi)放、有一支開(kāi)放的開(kāi)發(fā)隊(duì)伍、支持跨平臺(tái)的應(yīng)用(可以運(yùn)行在幾乎所有的Unix、Windows、Linux系統(tǒng)平臺(tái)上)以及它的可移植性等方面。</p><p>  3.2.2 Apache的安裝與調(diào)試</p><p>  從apache的官方網(wǎng)站http://httpd.apache.org/down

47、load.cgi#apache20上下載httpd-2.0.64. tar.gz,然后在本地用“tar -zxvf httpd-2.0.64.tar.gz”命令將該文件解壓縮。進(jìn)入解壓后的目錄后,執(zhí)行命令“./configure --prefix=/usr/local --enable-so”配置apache的安裝環(huán)境,其中“—prefix=/usr/local”的作用是將其安裝到/usr/local目錄下以方便管理。然后執(zhí)行make命

48、令將該二進(jìn)制源碼進(jìn)行編譯,這一步需要較長(zhǎng)的時(shí)間。若無(wú)錯(cuò)誤則執(zhí)行“make install”以安裝apache軟件。安裝完成后開(kāi)始編輯apache的配置文件。該配置文件的路徑為/usr/local/apache2/conf/ httpd.conf,打開(kāi)后修改apache的監(jiān)聽(tīng)ip及端口,如圖3-5所示。同時(shí)設(shè)置網(wǎng)站的根目錄,如圖3-6所示,將網(wǎng)站文件存放于該目錄下。找到DirectoryIndex這一參數(shù),該參數(shù)的作用是設(shè)置在網(wǎng)站根目錄尋

49、找首頁(yè)的順序,該參數(shù)的配置如圖3-7所示</p><p>  圖3-5:修改apache服務(wù)的監(jiān)聽(tīng)ip</p><p>  圖3-6:設(shè)置網(wǎng)站的根目錄</p><p>  圖3-7:設(shè)置網(wǎng)站首頁(yè)的搜索順序</p><p>  結(jié)合圖3-6和3-7可知,網(wǎng)站的首頁(yè)是/home/hwy/mail下的login.jsp文件,若無(wú)該文件,則將該目錄下

50、的index.html作為網(wǎng)站的首頁(yè),至此apache的初步配置完成,保存退出。為了驗(yàn)證是否安裝成功,我們可以執(zhí)行“/usr/local/apache2/bin/httpd &”命令來(lái)啟動(dòng)apache服務(wù),&符號(hào)的含義是將該服務(wù)放至后臺(tái)運(yùn)行,不占據(jù)前臺(tái)資源。然后在瀏覽器中輸入173.212.209.114,若出現(xiàn)如圖3-8所示頁(yè)面,則表明apache已被成功安裝。</p><p>  圖3-8:a

51、pache安裝完成后的畫(huà)面</p><p>  3.3 tomcat服務(wù)器</p><p>  3.3.1 Tomcat簡(jiǎn)介</p><p>  Tomcat是Apache軟件基金會(huì)(Apache Software Foundation)的Jakarta 項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache、Sun 和其他一些公司及個(gè)人共同開(kāi)發(fā)而成。它是一個(gè)輕量級(jí)應(yīng)用服務(wù)器,在

52、中小型系統(tǒng)和并發(fā)訪問(wèn)用戶不是很多的場(chǎng)合下被普遍使用,是開(kāi)發(fā)和調(diào)試JSP 程序的首選。當(dāng)在一臺(tái)機(jī)器上配置好Apache 服務(wù)器,可利用它響應(yīng)對(duì)HTML 頁(yè)面的訪問(wèn)請(qǐng)求。如果配置好tomcat服務(wù)器,則不僅可以處理HTML請(qǐng)求,還可以作為jsp和servlet的容器。不過(guò)tomcat處理html請(qǐng)求的能力不如apache,所以需要將兩者整合以發(fā)揮最大的效能,這將在下一節(jié)中詳細(xì)介紹</p><p>  3.3.2 T

53、omcat的安裝與調(diào)試</p><p>  如果下載的tomcat為免安裝版,則下載后只需執(zhí)行tar命令,將文件解壓縮到/usr /local目錄下即可使用。執(zhí)行“/usr/local/tomcat/bin/startup.sh”命令,在瀏覽器中輸入173.212.209.114:8080,若出現(xiàn)如圖3-9所示頁(yè)面,則表示tomcat服務(wù)可以正常使用。</p><p>  圖3-9:tom

54、cat成功安裝</p><p>  3.4 整合apache與tomcat</p><p>  3.4.1 為什么要將兩者進(jìn)行整合</p><p>  由于Apache只能處理靜態(tài)頁(yè)面,缺乏對(duì)動(dòng)態(tài)頁(yè)面的支持,因此在實(shí)際應(yīng)用環(huán)境下不能單獨(dú)將apache服務(wù)器作為網(wǎng)站服務(wù)器。Tomcat除了支持Java Servlet/JSP之外,也可以當(dāng)做網(wǎng)站服務(wù)器使用,但是對(duì)于

55、靜態(tài)的html、圖片文件等文件來(lái)說(shuō),tomcat的解析效率不如Apache。應(yīng)用tomcat的服務(wù)器如果網(wǎng)站的訪問(wèn)量較大,系統(tǒng)資源占用會(huì)明顯升高。因此,我們可以同時(shí)應(yīng)用tomcat和apache服務(wù)。由Apache負(fù)責(zé)靜態(tài)資源處理,tomcat負(fù)責(zé)jsp和java servlet等動(dòng)態(tài)資源的處理,因此可以將服務(wù)器的效能發(fā)揮到最大。具體的,我們可以利用tomcat-connectors這個(gè)軟件來(lái)完成apache和tomcat這兩個(gè)軟件的整

56、合。</p><p>  3.4.2 整合的步驟與測(cè)試</p><p>  從apache的官方網(wǎng)站http://tomcat.apache.org/download-connectors.cgi上可以下載tomcat-connectors軟件,這里使用的版本號(hào)為1.2.31。解壓該文件,通過(guò)閱讀它的安裝說(shuō)明文件BUILD.TXT可知,安裝該軟件只需要經(jīng)過(guò)如圖3-10所示的4個(gè)步驟即可。

57、</p><p>  圖3-10:安裝tomcat-connectors的四個(gè)步驟</p><p>  按步驟安裝完軟件后,將native目錄下apache-2.0文件夾中的mod_jk.so拷貝至apache安裝目錄下的modules文件夾中。然后切換至apache安裝目錄的conf文件夾,在該文件夾下建立mod_jk.conf和workers.properties兩個(gè)配置文件,編輯mo

58、d_jk.conf文件,如圖3-11所示,編輯workers.properties文件,如圖3-12所示。</p><p>  圖3-11:mod_jk.conf配置文件的內(nèi)容</p><p>  圖3-12:worker.propertie文件的配置</p><p>  在上面的配置結(jié)束后,還需要在apache的配置文件中增加關(guān)于加載mod_jk模塊的語(yǔ)句。打開(kāi)a

59、pache的配置文件httpd.conf,在最后一行寫(xiě)入如圖3-13所示內(nèi)容。</p><p>  圖3-13:令apache在啟動(dòng)時(shí)加載mod_jk模塊</p><p>  最后,編輯tomcat的配置文件server.xml,該文件所在路徑為/usr/local/tomcat/conf/ server.xml。在該文件的host字段中間,加入如圖3-14所示內(nèi)容</p>

60、<p>  圖3-14:server.xml中添加apache的主目錄</p><p>  至此,tomcat和apache整合的所有步驟已經(jīng)完成,為了驗(yàn)證是否成功,開(kāi)啟apache和tomcat進(jìn)程,然后在apache的主目錄(/home/hwy/mail)中添加一個(gè)welcome.jsp文件,文件內(nèi)容如圖3-15所示。然后在瀏覽器中輸入173.212.209.114/welcome.jsp。若出現(xiàn)如

61、圖3-16所示內(nèi)容,說(shuō)明整合成功。</p><p>  圖3-15:welcome.jsp的內(nèi)容</p><p>  圖3-16:apache和tomcat整合成功的結(jié)果</p><p>  3.5 sendmail(SMTP服務(wù)器)</p><p>  3.5.1 Sendmail簡(jiǎn)介</p><p>  sen

62、dmail是linux平臺(tái)上最重要的郵件傳輸代理程序(MTA mail transfer agent)。一般情況下,我們把電子郵件程序分解成用戶代理,傳輸代理和投遞代理。 用戶代理(如:outlook express、foxmail等)用來(lái)接受用戶的指令,將用戶的信件傳送至信件傳輸代理。而投遞代理則從信件傳輸代理取得信件傳送至最終用戶的郵箱,如:procmail。</p><p>  3.5.2 Sendmai

63、l服務(wù)器的安裝與調(diào)試</p><p>  按sendmail的安裝說(shuō)明文件搭建好服務(wù)器環(huán)境以后,我們還需要了解sendmail的幾個(gè)主要的配置文件sendmail.mc,sendmail.cf,access.db,access,local-host-names。其中sendmail.cf是sendmail的主配置文件,由于它的內(nèi)容比較難以讀懂,因此我們一般修改sendmail.mc這個(gè)配置文件,然后利用m4命令重

64、新生成一個(gè)sendmail.cf文件。access.db是sendmail的一個(gè)數(shù)據(jù)庫(kù)文件,其中記錄了可以利用該服務(wù)器進(jìn)行郵件轉(zhuǎn)發(fā)的ip地址的范圍。因?yàn)樗且粋€(gè)數(shù)據(jù)庫(kù)文件,不能直接編輯,所以修改access這個(gè)文件。由于sendmail.mc文件默認(rèn)只開(kāi)啟了對(duì)127.0.0.1這個(gè)網(wǎng)卡回環(huán)接口的監(jiān)聽(tīng),因此我們需要將其修改為0.0.0.0,即對(duì)本機(jī)的所有網(wǎng)卡地址進(jìn)行監(jiān)聽(tīng)(如圖3-17所示)。</p><p>  圖

65、3-17:sendmail監(jiān)聽(tīng)的地址,默認(rèn)為127.0.0.1</p><p>  其次,我們需要開(kāi)啟smtp的認(rèn)證功能,否則郵件不能發(fā)送,在配置文件中找到如圖3-18所示內(nèi)容,去掉其dnl注釋(在sendmail.mc中是以dnl作為注釋符號(hào)),保存退出。打開(kāi)access文件,添加0.0.0.0網(wǎng)段,如圖3-19所示,即對(duì)所有使用該服務(wù)器的主機(jī)進(jìn)行郵件的轉(zhuǎn)發(fā)服務(wù)。保存退出。執(zhí)行如圖3-20的命令產(chǎn)生一個(gè)新的數(shù)據(jù)

66、庫(kù)文件,然后執(zhí)行圖3-21所示命令產(chǎn)生一個(gè)郵件服務(wù)器所能識(shí)別的配置文件。至此,sendmail的基本配置完成。</p><p>  圖3-18:開(kāi)啟smtp認(rèn)證功能</p><p>  圖3-19:使服務(wù)器轉(zhuǎn)發(fā)所有ip發(fā)送的郵件</p><p>  圖3-20:生成新的數(shù)據(jù)庫(kù)文件</p><p>  圖3-21:使用m4命令生成新的配置文件&

67、lt;/p><p>  執(zhí)行service sendmail start命令來(lái)啟動(dòng)郵件服務(wù),在客戶端打開(kāi)命令提示符,執(zhí)行telnet mail.hwylxf.com 25即使用文本界面登錄到smtp服務(wù)器(25為smtp的端口號(hào)),若出現(xiàn)圖3-22所示內(nèi)容,則說(shuō)明sendmail服務(wù)器已經(jīng)可以使用。</p><p>  圖3-22:sendmail服務(wù)正常啟動(dòng)</p><p

68、>  3.6 dovecot(POP3服務(wù)器)</p><p>  從dovecot的官方網(wǎng)站http://www.dovecot.org/list/dovecot-news/2011-March/000186. html上可下載到dovecot軟件,這里的版本號(hào)為2.0.11。按照dovecot的配置文件安裝該軟件并啟動(dòng)dovecot服務(wù)后,在客戶端使用telnet工具連接服務(wù)器的110端口,始終會(huì)報(bào)告

69、一個(gè)不能通過(guò)pam驗(yàn)證的錯(cuò)誤,根據(jù)錯(cuò)誤提示,還需安裝一個(gè)pam驗(yàn)證的軟件,并在安裝dovecot的同時(shí)添加with-pam參數(shù)。安裝完成后,根據(jù)/usr/local/dovecot/etc/dovecot中的README中的內(nèi)容(圖3-23),將example-config下的配置文件拷貝至該目錄。還需要編輯dovecot.conf這個(gè)主配置文件,取消dovecot支持的協(xié)議一行的注釋?zhuān)鐖D3-24所示。</p><

70、p>  圖3-23:README的文件信息</p><p>  圖3-24:設(shè)置dovecot使用的協(xié)議</p><p>  圖3-25:設(shè)置郵件的投送位置</p><p>  另外,還需要編輯conf.d目錄下的10-mail.conf文件,取消對(duì)圖3-25中第二個(gè)mail_location的注釋。該條語(yǔ)句的作用是設(shè)置郵件的投送位置,若無(wú)此參數(shù),郵件將不能正

71、確投遞。配置完成后,在客戶端的命令提示符中輸入telnet mail.hwylxf.com 110(110為pop3端口號(hào)),若出現(xiàn)圖3-26內(nèi)容,則說(shuō)明dovecot已正確配置。</p><p>  圖3-26:成功登錄dovecot服務(wù)器</p><p>  3.7 DNS服務(wù)器</p><p>  域名管理系統(tǒng)DNS(Domain Name System)的

72、作用是把域名轉(zhuǎn)換成為網(wǎng)絡(luò)可以識(shí)別的ip地址.例如:上網(wǎng)時(shí)輸入的www.163.com,DNS會(huì)自動(dòng)將其轉(zhuǎn)換成為202.108.42.72。實(shí)際進(jìn)行郵件收發(fā)時(shí)還需要用到MX(Mail Exchanger),MX是郵件交換記錄,它指向一個(gè)郵件服務(wù)器,通過(guò)電子郵件系統(tǒng)發(fā)郵件時(shí)會(huì)根據(jù)收信人的地址后綴來(lái)定位郵件服務(wù)器。例如,當(dāng)Internet上的某用戶要發(fā)一封信給user@sina.com時(shí),該用戶的郵件系統(tǒng)通過(guò)DNS查找sina.com這個(gè)域名

73、的MX記錄,如果MX記錄存在, 用戶計(jì)算機(jī)就將郵件發(fā)送到MX記錄所指定的郵件服務(wù)器上。由于本系統(tǒng)將移至互聯(lián)網(wǎng)上進(jìn)行測(cè)試,因此DNS的配置須交由isp來(lái)完成,目前網(wǎng)站的域名為mail.hwylxf.com,對(duì)應(yīng)的ip地址為173.212.209.114。并且設(shè)置了一個(gè)MX記錄,其中MX記錄的查詢(xún)結(jié)果如圖3-26所示,域名解析的結(jié)果如圖3-27所示。</p><p>  圖3-26:MX記錄的查詢(xún)結(jié)果</p&g

74、t;<p>  圖3-27:域名解析的結(jié)果</p><p>  3.8 服務(wù)器搭建部分總結(jié)</p><p>  Linux下安裝軟件主要有rpm包安裝,二進(jìn)制源碼包安裝和yum安裝三種方法。rpm包比較簡(jiǎn)單,關(guān)鍵是要處理好包與包之間的依賴(lài)關(guān)系。二進(jìn)制源碼包(tar.gz)的安裝先使用tar命令解壓,然后進(jìn)入目錄中,閱讀INSTALL或者README文件,這兩個(gè)文件的內(nèi)容將提

75、示我們?nèi)绾伟惭b該軟件。一般分為配置編譯環(huán)境(configure)、編譯(make)、安裝(make install)三個(gè)步驟。其中可能需要我們事先手動(dòng)創(chuàng)建一些用戶或者文件,這些都可以在上述兩個(gè)文件中找到。安裝完軟件后軟件的配置文件一般在軟件安裝根目錄的etc或者conf文件中。根據(jù)需求編輯好配置文件,在安裝根目錄的bin或者sbin目錄中找到服務(wù)的啟動(dòng)命令,在后臺(tái)啟動(dòng)該服務(wù)。若無(wú)報(bào)錯(cuò)則啟動(dòng)成功。若啟動(dòng)失敗則會(huì)將錯(cuò)誤信息寫(xiě)入日志文件中,一

76、般在安裝根目錄的logs文件中。我們可以通過(guò)日志文件來(lái)排錯(cuò),保證服務(wù)器的正常運(yùn)行。</p><p><b>  4 系統(tǒng)分析</b></p><p>  4.1 需求分析[9]</p><p>  電子郵件是Internet資源中使用最多最廣泛的一種。隨著互聯(lián)網(wǎng)的飛速發(fā)展,電子郵件的用戶數(shù)量和業(yè)務(wù)量激增,這要求在電子郵件服務(wù)的種類(lèi)、容量、技

77、術(shù)支持等方面有所提高[6]。郵件服務(wù)系統(tǒng)在保留了電子郵件系統(tǒng)最初的收發(fā)郵件、存儲(chǔ)郵件等基本功能的同時(shí),還應(yīng)該融入更多的計(jì)算機(jī)與網(wǎng)絡(luò)技術(shù)。隨著系統(tǒng)用戶的增加,用戶郵箱數(shù)也不斷增加,這就要求有更好的管理機(jī)制實(shí)現(xiàn)用戶郵箱的組織和管理;對(duì)個(gè)人用戶和企業(yè)用戶而言,郵件越來(lái)越多,就需要有更好的閱讀、分類(lèi)、查詢(xún)、篩選等操作管理功能。另外,在信息時(shí)代的今天,用戶對(duì)電子郵件處理速度、信息傳遞速度和信息獲取速度都有所提高。</p><p

78、>  通常Internet上的個(gè)人用戶不能直接接收電子郵件,而是申請(qǐng)ISP主機(jī)的一個(gè)電子信箱,由ISP主機(jī)負(fù)責(zé)電子郵件的接收[7]。一旦有用戶的電子郵件到來(lái),ISP主機(jī)就將郵件移到用戶的電子信箱內(nèi),并通知用戶有新郵件。因此,當(dāng)從一個(gè)用戶(發(fā)送方)發(fā)送一封電子郵件到另一個(gè)用戶(接收方)時(shí),電子郵件首先從發(fā)送方的計(jì)算機(jī)發(fā)送到ISP主機(jī),再到Internet,再到收件人的ISP主機(jī),最后到接收方的個(gè)人計(jì)算機(jī)。</p>&l

79、t;p>  根據(jù)對(duì)目前郵件收發(fā)系統(tǒng)的分析,確定本系統(tǒng)的功能如圖4-1所示。</p><p>  圖4-1:系統(tǒng)功能圖</p><p>  4.2 可行性分析</p><p>  4.2.1 平臺(tái)可行性</p><p>  為了實(shí)現(xiàn)與qq、163等郵箱的通信,需要擁有一個(gè)遠(yuǎn)程的具有獨(dú)立公網(wǎng)IP的linux服務(wù)器,在其上可以安裝各種軟件

80、,這些軟件都是免費(fèi)的,可以協(xié)同完成web郵件服務(wù)。該主機(jī)的配置也滿足運(yùn)行所有軟件的需要。</p><p>  4.2.2 技術(shù)可行性</p><p>  在本次系統(tǒng)開(kāi)發(fā)中,主要用到j(luò)avamail這個(gè)jar包,它是提供給開(kāi)發(fā)者處理電子郵件相關(guān)的編程接口。它可以方便地實(shí)現(xiàn)一些常用的郵件傳輸。我們可以基于JavaMail開(kāi)發(fā)出類(lèi)似于Microsoft Outlook的應(yīng)用程序。在網(wǎng)頁(yè)技術(shù)方面

81、,主要采用jsp+html+css+javascript[8]完成頁(yè)面的布局與內(nèi)容的顯示。這些技術(shù)都已經(jīng)比較成熟。</p><p>  4.2.3 實(shí)用性</p><p>  在系統(tǒng)開(kāi)發(fā)完成后,可以與現(xiàn)有網(wǎng)絡(luò)上的郵件服務(wù)器進(jìn)行通信,發(fā)送的郵件能被其它服務(wù)器接收,從其它服務(wù)器接收的郵件也能得到正確的解析,這是本系統(tǒng)最大的特點(diǎn),也使它具有一定的實(shí)用性。</p><p>

82、;<b>  5 數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p>  5.1 E-R圖設(shè)計(jì)</p><p>  E-R圖是實(shí)體聯(lián)系圖,反應(yīng)的是實(shí)體和實(shí)體之間的聯(lián)系[10]。構(gòu)成E-R圖的基本要素是實(shí)體、屬性和聯(lián)系,其表示方法為:</p><p>  1) 實(shí)體(Entity):具有相同屬性的實(shí)體具有相同的特征和性質(zhì),用實(shí)體名及其屬性名集合來(lái)抽象和刻畫(huà)同

83、類(lèi)實(shí)體;在E-R圖中用矩形表示,矩形框內(nèi)寫(xiě)明實(shí)體名。</p><p>  2) 屬性(Attribute):實(shí)體所具有的某一特性,一個(gè)實(shí)體可由若干個(gè)屬性來(lái)刻畫(huà)。在E-R圖中用橢圓形表示,并用無(wú)向邊將其與相應(yīng)的實(shí)體連接起來(lái)。</p><p>  3) 聯(lián)系(Relationship):聯(lián)系也稱(chēng)關(guān)系,實(shí)體之間的聯(lián)系通常是指不同實(shí)體集之間的聯(lián)系。在E-R圖中用菱形表示,菱形框內(nèi)寫(xiě)明聯(lián)系名,并用無(wú)

84、向邊分別與有關(guān)實(shí)體連接起來(lái),同時(shí)在無(wú)向邊旁標(biāo)上聯(lián)系的類(lèi)型(1 : 1,1 : n或m : n)。</p><p>  本系統(tǒng)主要涉及的實(shí)體有:用戶信息,用戶的聯(lián)系人和用戶的郵件狀態(tài)。</p><p>  用戶信息表(user)的E-R圖如圖5-1所示。</p><p>  圖5-1:用戶信息的E-R圖</p><p>  郵件狀態(tài)(statu

85、s)的E-R圖如圖5-3所示。</p><p>  圖5-3:郵件狀態(tài)的E-R圖</p><p>  用戶聯(lián)系人(linker)的E-R圖如圖5-2所示。</p><p>  圖5-2:用戶聯(lián)系人的E-R圖</p><p>  5.2 數(shù)據(jù)表的邏輯結(jié)構(gòu)設(shè)計(jì)</p><p>  根據(jù)前面的分析,本系統(tǒng)使用一個(gè)名為use

86、r的數(shù)據(jù)庫(kù)用來(lái)保存與用戶有關(guān)的信息。其中主要包括一張user表、多張linkers表和多張status表。user表用來(lái)保存每個(gè)用戶的賬號(hào)信息,而每個(gè)用戶又各自有一張linkers表用來(lái)保存各自的聯(lián)系人,另外每個(gè)用戶還有一張status表用來(lái)保存各自郵件的狀態(tài)信息(已讀、已被刪除等)。結(jié)合實(shí)際,各實(shí)體對(duì)應(yīng)的關(guān)系表,表屬性,數(shù)據(jù)類(lèi)型的設(shè)計(jì)如下:</p><p>  表5-1 user表</p><

87、;p>  表5-2 status表</p><p>  表5-3 linkers表</p><p>  5.3 表間的關(guān)系</p><p>  在本系統(tǒng)的設(shè)計(jì)中,用戶數(shù)據(jù)表之間的聯(lián)系是通過(guò)表名來(lái)關(guān)聯(lián)的,而非外鍵[11]。表名的命名方式是“用戶名+表名”。在創(chuàng)建了一個(gè)名為bysjtest的用戶后,它的個(gè)人信息將會(huì)被存放在user表中,如圖5-4所示,同時(shí)也將創(chuàng)

88、建bysjtestLinkers表和bysjtestStatus表,如圖5-5所示。前者存放了bysjtest用戶的所有聯(lián)系人的信息(圖5-6),后者存放了bysjtest用戶的所有郵件的所處的狀態(tài)(圖5-7)。用戶登錄時(shí),用戶的賬號(hào)名稱(chēng)將被存放在一個(gè)session中,當(dāng)bysjtest用戶希望查看自己的聯(lián)系人時(shí),系統(tǒng)將根據(jù)session中的用戶名查找用戶的聯(lián)系人表,即bysjtestLinkser表。如此設(shè)計(jì)使用戶在讀取數(shù)據(jù)不會(huì)誤讀取

89、其他用戶的信息。</p><p>  圖5-4:user表中的內(nèi)容</p><p>  圖5-5:user數(shù)據(jù)庫(kù)中的所有表</p><p>  圖5-6:bysjtestLinkers表中的數(shù)據(jù)</p><p>  圖5-7:bysjteststatus表中的數(shù)據(jù)</p><p>  6 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)</p&

90、gt;<p>  6.1 服務(wù)器上用戶家目錄設(shè)計(jì)</p><p>  每個(gè)用戶在服務(wù)器上都有一個(gè)文件夾,該文件夾在/home分區(qū)下,因此稱(chēng)為家目錄。在本系統(tǒng)中用戶的家目錄下有個(gè)mail文件夾,在該文件夾下另有send、draft、uploads三個(gè)文件夾,如圖6-1所示,分別用以保存用戶已發(fā)送的文件、存為草稿的文件和上傳的附件。</p><p>  圖6-1:用戶家目錄設(shè)計(jì)

91、</p><p>  6.2 登錄模塊設(shè)計(jì)</p><p>  6.2.1 新用戶注冊(cè)</p><p>  該模塊主要實(shí)現(xiàn)新用戶的注冊(cè),包括系統(tǒng)注冊(cè)和系統(tǒng)分配兩個(gè)部分。用戶可以根據(jù)一定的規(guī)定選擇用戶名,并且為用戶名設(shè)定密碼。該用戶名和密碼同時(shí)也是登錄郵件服務(wù)器的賬戶名和密碼。新用戶注冊(cè)的界面如圖6-2所示。系統(tǒng)根據(jù)用戶提供的信息在mail.hwylxf.com這

92、臺(tái)服務(wù)器上創(chuàng)建該用戶,并在該用戶的家目錄下創(chuàng)建mail文件夾。同時(shí)在數(shù)據(jù)庫(kù)的user表中添加該條信息,并創(chuàng)建該用戶的linkers表和status表。</p><p>  圖6-2:新用戶注冊(cè)</p><p>  6.2.2 已有賬號(hào)的用戶的登錄</p><p>  該模塊根據(jù)用戶輸入的賬號(hào)和密碼,在數(shù)據(jù)庫(kù)中查找對(duì)應(yīng)的信息,如果查找成功則將跳轉(zhuǎn)到該用戶郵箱的主界面

93、,否則將提示用戶名或者密碼錯(cuò)誤。用戶登錄界面如圖6-3所示。</p><p>  圖6-3:已有賬號(hào)用戶的登錄</p><p>  6.3 發(fā)信模塊設(shè)計(jì)</p><p>  郵件的編輯頁(yè)面如圖6-4所示點(diǎn)擊左側(cè)的“發(fā)信”一欄可以打開(kāi)郵件的編輯頁(yè)面。</p><p>  圖6-4:郵件編輯頁(yè)面</p><p>  用戶

94、可以在收件人中手動(dòng)輸入地址,也可以從右側(cè)的聯(lián)系人列表中選擇收件人??梢酝瑫r(shí)向多人發(fā)送郵件,中間需要用“,”號(hào)分開(kāi)。點(diǎn)擊添加附件按鈕,可以從本地計(jì)算機(jī)選擇要上傳的附件,點(diǎn)擊確定后將自動(dòng)上傳附件,附件上傳的目錄為家目錄下的uploads文件夾。若上傳成功,系統(tǒng)將提示上傳成功,并在“添加附件”按鈕后添加上傳文件的文件名,點(diǎn)擊刪除可以刪除上傳的附件。點(diǎn)擊“保存到已發(fā)送”這個(gè)按鈕,郵件的發(fā)送的同時(shí)將自動(dòng)保存至服務(wù)器上用戶家目錄中mail下的sen

95、ds文件夾。用戶可以點(diǎn)擊左側(cè)“已發(fā)信息”查看相關(guān)內(nèi)容。當(dāng)點(diǎn)擊“存稿”按鈕的時(shí)候,郵件將會(huì)將被保存至服務(wù)器上用戶家目錄中mail下的draft文件夾。郵件發(fā)送的流程圖如圖6-5所示。</p><p>  圖6-5:發(fā)送郵件的流程圖</p><p>  6.4 收信模塊設(shè)計(jì)</p><p>  6.4.1 郵件分類(lèi)</p><p>  在Ja

96、vaMail中可以通過(guò)對(duì)單份郵件設(shè)置不同標(biāo)志的來(lái)標(biāo)記郵件的不同狀態(tài)[12],如圖6-6所示。假設(shè)某一個(gè)標(biāo)記上被設(shè)置了一個(gè)Flags.Flag.DELETED常量,則表示這封郵件已被刪除。但是通過(guò)實(shí)驗(yàn)及網(wǎng)上收集信息發(fā)現(xiàn),由于本系統(tǒng)采用的是pop3協(xié)議,所以只有Flag.Flag.DELETED 標(biāo)記有效,其它標(biāo)記只能對(duì)采用imap協(xié)議的系統(tǒng)產(chǎn)生作用。因此,本系統(tǒng)為每個(gè)用戶設(shè)計(jì)了一張status表來(lái)分別普通郵件、被移植垃圾箱但未被徹底刪除的

97、郵件、已發(fā)送郵件和草稿郵件。</p><p>  圖6-6:javamail api中郵件的標(biāo)志信息</p><p>  6.4.2 讀取收件箱和垃圾箱中的郵件</p><p>  在用戶點(diǎn)擊收件箱的時(shí)候,系統(tǒng)將從服務(wù)器上讀取所有郵件的messageID,messageID是一個(gè)16位的16進(jìn)制長(zhǎng)整數(shù),是郵件服務(wù)器在處理郵件的時(shí)候分配的獨(dú)一無(wú)二的符號(hào)。取得所有的m

98、essageID后,與數(shù)據(jù)庫(kù)中用戶的status表中的deleted列做比較,該列存儲(chǔ)的數(shù)據(jù)是每一次用戶暫時(shí)刪除郵件的messageID。比對(duì)后若有原messageID不存在于deleted一欄中,將被讀取并顯示在收件箱的郵件信息中。讀取已刪除內(nèi)容的時(shí)候,取得status表的deleted列所有的messageID,然后從服務(wù)器上取得對(duì)應(yīng)的郵件內(nèi)容顯示在用戶的瀏覽器中。該流程圖如圖6-7所示。</p><p> 

99、 圖6-7:收信流程圖</p><p>  6.4.3 讀取已發(fā)送和草稿箱內(nèi)的郵件</p><p>  首先介紹郵件是如何被保存至已發(fā)信息中的。在用戶發(fā)送郵件的時(shí)候,若選中了“保存至已發(fā)送”選項(xiàng),該郵件在被發(fā)送的同時(shí)將以二進(jìn)制流的形式被寫(xiě)入位于用戶家目錄send文件夾下一個(gè)eml文件,該文件的文件名是郵件發(fā)送的時(shí)間,精確到秒以保證文件名的不重復(fù)性。該時(shí)間同時(shí)將被寫(xiě)入數(shù)據(jù)庫(kù)中用戶的stat

100、us表的send列。</p><p>  讀取已發(fā)送郵件是上述過(guò)程的一個(gè)逆過(guò)程。首先從用戶的status表的send列中讀取所有內(nèi)容,然后在用戶的send文件夾下讀取對(duì)應(yīng)的eml文件,解析eml的內(nèi)容并將之顯示在已發(fā)送信息中。</p><p>  草稿箱和已發(fā)送的設(shè)計(jì)類(lèi)似,區(qū)別在于它的文件名寫(xiě)入數(shù)據(jù)庫(kù)的draft列中,文件存放于家目錄的draft文件夾中。</p><p

101、>  6.5 普通郵件的處理</p><p>  若郵件中只含有純文本內(nèi)容,應(yīng)該首先通過(guò)執(zhí)行如圖6-8所示的代碼打開(kāi)INBOX文件夾。在打開(kāi)文件夾后,使用Folder類(lèi)的getMessage()方法,該方法將返回一個(gè)含有所有郵件內(nèi)容的數(shù)組對(duì)象,再根據(jù)郵件在INBOX文件夾中的msgNum獲得郵件的具體內(nèi)容</p><p>  圖6-8:打開(kāi)INBOX文件夾以收取郵件</p&g

102、t;<p>  6.6 含附件的郵件的處理</p><p>  若郵件中含有附件,則需將郵件按圖6-9所示的代碼單獨(dú)處理附件若郵件中含有附件。當(dāng)郵件中含有附件時(shí),瀏覽器中將顯示附件的超鏈接,當(dāng)用戶點(diǎn)擊這個(gè)超鏈接時(shí),后臺(tái)將附件所屬的bodypart的序號(hào)發(fā)送給handAttach這個(gè)servlet,將附件以二進(jìn)制流的形式寫(xiě)入客戶端,完成附件下載的任務(wù)。</p><p>  圖

103、6-9:處理附件的代碼</p><p>  6.7 聯(lián)系人模塊</p><p>  聯(lián)系人相當(dāng)于手機(jī)的電話簿,該模塊主要是對(duì)聯(lián)系人進(jìn)行管理。而對(duì)聯(lián)系人的管理主要是指對(duì)用戶對(duì)應(yīng)的linkers表的增、刪、改、查的操作。它的主界面如圖6-10所示,該頁(yè)面展示的是聯(lián)系人的概要信息,點(diǎn)擊想要查看的內(nèi)容即可查看詳細(xì)信息,如圖6-11所示。</p><p>  圖6-10:聯(lián)

104、系人主界面</p><p>  圖6-11:聯(lián)系人的詳細(xì)信息</p><p>  添加聯(lián)系人的界面如圖6-12所示,用戶添加該聯(lián)系人后數(shù)據(jù)將被放入數(shù)據(jù)庫(kù),以便在寫(xiě)信的時(shí)候能從右側(cè)的聯(lián)系人列表中獲取聯(lián)系人。</p><p>  圖6-12:聯(lián)系人的添加</p><p>  6.8 中文亂碼問(wèn)題的總結(jié)</p><p> 

105、 中文亂碼是web系統(tǒng)開(kāi)發(fā)中較為常見(jiàn)的一個(gè)問(wèn)題。產(chǎn)生亂碼的原因是數(shù)據(jù)在各種環(huán)境下保存或者顯示的編碼不一致,例如Java在運(yùn)行期一律以Unicode來(lái)存儲(chǔ)字符,IE瀏覽器的默認(rèn)編碼為簡(jiǎn)體中文(GB2312),而mysql數(shù)據(jù)庫(kù)在保存數(shù)據(jù)時(shí)的編碼則為UTF-8。</p><p>  6.8.1 頁(yè)面中文亂碼</p><p>  解決方法:在servelt處理請(qǐng)求的時(shí)候,應(yīng)首先寫(xiě)入如圖6-13

106、中的語(yǔ)句,并且在將jsp頁(yè)面的格式設(shè)置為utf-8。</p><p>  圖6-13:處理頁(yè)面亂碼</p><p>  6.8.2 數(shù)據(jù)庫(kù)中文亂碼</p><p>  解決方法:在創(chuàng)建表時(shí)設(shè)定編碼為GBK(圖6-14),同時(shí)在JDBC連接數(shù)據(jù)庫(kù)的時(shí)也需設(shè)置編碼為GBK(圖6-15)。這樣數(shù)據(jù)庫(kù)中就能正確顯示中文[13] (圖6-16)。</p>&l

107、t;p>  圖6-14:創(chuàng)建數(shù)據(jù)表時(shí)設(shè)定字符編碼為GBK</p><p>  圖6-15:連接數(shù)據(jù)庫(kù)時(shí)設(shè)定編碼為GBK</p><p>  圖6-16:數(shù)據(jù)庫(kù)中正確顯示中文</p><p>  6.8.3 URL中含有中文參數(shù)值時(shí)亂碼</p><p>  解決方法:在tomcat的配置文件server.xml中修改Connector標(biāo)

108、簽,添加URIEncoding參數(shù),將它的值設(shè)為UTF-8,如圖6-17所示。</p><p>  圖6-17:修改Connector標(biāo)簽防止URL亂碼</p><p>  6.8.4 附件名為中文時(shí)亂碼</p><p>  解決方法:在發(fā)送附件前設(shè)定附件名時(shí)設(shè)定其編碼為GB2312,如圖6-18所示。</p><p>  圖6-18:附件

109、名亂碼的解決</p><p>  7 系統(tǒng)測(cè)試與評(píng)價(jià)</p><p>  7.1 系統(tǒng)測(cè)試的原則及方法</p><p>  系統(tǒng)測(cè)試,英文是System Testing。是將已經(jīng)確認(rèn)的軟件、計(jì)算機(jī)硬件、外設(shè)、網(wǎng)絡(luò)等其他元素結(jié)合在一起,進(jìn)行信息系統(tǒng)的各種組裝測(cè)試和確認(rèn)測(cè)試,系統(tǒng)測(cè)試是針對(duì)整個(gè)產(chǎn)品系統(tǒng)進(jìn)行的測(cè)試,目的是驗(yàn)證系統(tǒng)是否滿足了需求規(guī)格的定義,找出與需求規(guī)格

110、不符或與之矛盾的地方,從而提出更加完善的方案[14]。</p><p>  軟件測(cè)試包括單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試四個(gè)步份驟。本次測(cè)試以單元測(cè)試為主,分別完成每個(gè)單元的測(cè)試任務(wù),以確保每個(gè)模塊能正常工作。最后對(duì)本系統(tǒng)進(jìn)行系統(tǒng)測(cè)試,并進(jìn)行總體評(píng)價(jià)。</p><p>  7.2 測(cè)試與評(píng)價(jià)</p><p>  7.2.1 單元測(cè)試</p>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論