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

正文內(nèi)容

基于ajax技術(shù)的郵件系統(tǒng)設(shè)計(jì)論文-資料下載頁

2024-11-08 05:45本頁面

【導(dǎo)讀】電子郵件是Inter應(yīng)用服務(wù)之一,也是使用最多的互聯(lián)網(wǎng)服務(wù)。電子郵件系統(tǒng)經(jīng)過幾十年的發(fā)展,已經(jīng)形成了完善的技術(shù)體系。端程序進(jìn)行郵件的收發(fā)已經(jīng)不能滿足用戶移動(dòng)辦公的需要。徹底解決了用戶辦公的需要,其快捷、方便的優(yōu)點(diǎn)吸引了眾多的網(wǎng)絡(luò)用戶。即可進(jìn)行Email收發(fā)及相關(guān)操作。本文著重闡述了實(shí)現(xiàn)基于J2EE的Hibernate技術(shù)和AJAX技術(shù)的Web郵件系。統(tǒng)的理論基礎(chǔ)、設(shè)計(jì)思想、系統(tǒng)架構(gòu)、開發(fā)過程以及對(duì)以上內(nèi)容的總結(jié)與展望。件系統(tǒng)的工作原理及郵件傳送過程,探尋如何開發(fā)郵件服務(wù)。簡(jiǎn)單介紹了與郵件。系統(tǒng)相關(guān)的幾個(gè)重要協(xié)議。論文后半部分是對(duì)系統(tǒng)的各個(gè)模塊進(jìn)行分析、設(shè)計(jì)和編碼。包括系統(tǒng)整體設(shè)計(jì)思。想,模塊設(shè)計(jì)思想以及各功能模塊實(shí)現(xiàn)的流程圖等。

  

【正文】 99vY 約束就是實(shí)體完整性的體現(xiàn)。 (2) 域完整性( Domain Integrity) 域完整性是指數(shù)據(jù)庫表中的列必須滿足某種特定的數(shù)據(jù)類型或約束。其中約束又包括取值范圍、 精度等規(guī)定。表中的 CHECK、 FOREIGN KEY 約束和DEFAULT、 NOT NULL 定義都屬于域完整性的范疇。 (3) 參照完整性( Referential Integrity) 參照完整性是指兩個(gè)表的主關(guān)鍵字和外關(guān)鍵字的數(shù)據(jù)應(yīng)對(duì)應(yīng)一致。它確保了 20 有主關(guān)鍵字的表中對(duì)應(yīng)其它表的外關(guān)鍵字的行存在,即保證了表之間的數(shù)據(jù)的一致性,防止了數(shù)據(jù)丟失或無意義的數(shù)據(jù)在數(shù)據(jù)庫中擴(kuò)散。參照完整性是建立在外關(guān)鍵字和主關(guān)鍵字之間或外關(guān)鍵字和惟一性關(guān)鍵字之間的關(guān)系上的。在 SQL Server 中,參照完整性作用表現(xiàn)在如下幾個(gè)方面 : ? 禁止在從表中插入包含主表中不存在的關(guān)鍵字的數(shù)據(jù)行 ; ? 禁止會(huì)導(dǎo)致從表中的相應(yīng)值孤立的主表中的外關(guān)鍵字值改變; ? 禁止刪除在從表中的有對(duì)應(yīng)記錄的主表記錄。 (4) 用戶定義的完整性( UserDefined Integrity) 不同的關(guān)系數(shù)據(jù)庫系統(tǒng)根據(jù)其應(yīng)用環(huán)境的不同,往往還需要一些特殊的約束條件。用戶定義的完整性即是針對(duì)某個(gè)特定關(guān)系數(shù)據(jù)庫的約束條件,它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求。 SQL Server 提供了定義和檢驗(yàn)這類完整性的機(jī)制,以便用統(tǒng)一的系統(tǒng)方法來處理它們,而不是用應(yīng)用程序來承 擔(dān)這一功能。其它的完整性類型都支持用戶定義的完整性。 SQL Server 提供了一些工具來幫助用戶實(shí)現(xiàn)數(shù)據(jù)完整性,其中最主要的是:規(guī)則( Rule)、缺省值( Default)、約束( Constraint)和觸發(fā)器( Trigger) 。 本章小結(jié) 本章主要介紹了數(shù)據(jù)庫設(shè)計(jì)的重要性并對(duì)自助裝機(jī)報(bào)價(jià)系統(tǒng)的數(shù)據(jù)庫進(jìn)行了分析與設(shè)計(jì)。通過分析,系統(tǒng)完成了郵件文件夾表、 郵件 表、附件表、標(biāo)簽表、聯(lián)系人組表、聯(lián)系人表等數(shù)據(jù)庫表的設(shè)計(jì),通過系統(tǒng)的需求分析來設(shè)計(jì)每個(gè)表的數(shù)據(jù)項(xiàng)。通過對(duì)數(shù)據(jù)庫概念結(jié)構(gòu)的設(shè)計(jì)和邏輯結(jié)構(gòu) 的設(shè)計(jì)清晰地展現(xiàn)了系統(tǒng)的數(shù)據(jù)庫總體設(shè)計(jì)以及主要的表中每一個(gè)字段屬性。最終通過對(duì)數(shù)據(jù)庫的需求分析實(shí)現(xiàn)后臺(tái)對(duì)表信息的管理。 21 第 5 章 系統(tǒng) 詳細(xì) 設(shè)計(jì)與實(shí)現(xiàn) 郵件管理設(shè)計(jì) 郵件管理是整個(gè)系統(tǒng)的核心功能區(qū)域,這一模塊主要是實(shí)現(xiàn)郵件的接收、發(fā)送和相關(guān)的郵件處理。下面將一一介紹郵件管理的設(shè)計(jì)和實(shí)現(xiàn)。 異步發(fā)送電子郵件 簡(jiǎn)單郵件傳輸協(xié)議 (SMTP)是為了保證電子郵件的可靠和高效傳送,它通過TCP/IP 網(wǎng)絡(luò)把消息從一個(gè)郵件服務(wù)器移動(dòng)到其它郵件服務(wù)器。 SMTP 是 Inter電子郵件服務(wù)的基礎(chǔ),在 TCP 上,它使用端口 25 進(jìn)行傳輸。 JavaMail 實(shí)現(xiàn)郵件發(fā)送的流程如圖 51 所示 : 圖 51 JavaMail 實(shí)現(xiàn)郵件發(fā)送流程 認(rèn)證通過后,用戶可以選擇發(fā)送郵件,完成 Email 的發(fā)送主要需要用到JavaMail 中的郵件發(fā)送功能,即利用了 JavaMail 的 SMTP 傳輸。發(fā)送電子郵件消息涉及到獲取會(huì)話、創(chuàng)建和填充消息并發(fā)送消息這些操作。在獲取 Session 時(shí),通過為要傳遞的 Properties 對(duì)象設(shè)置 屬性來指定所用的 SMTP 服務(wù)器。由于垃圾郵件日益增多讓人不勝厭煩,通常用于發(fā)送電 子郵件的 SMTP 服務(wù)器需要權(quán)限認(rèn)證,驗(yàn)證用戶是否在本服務(wù)器申請(qǐng)了賬戶,因?yàn)橹辉试S合法的用戶通過它發(fā)送信件,所以在發(fā)郵件時(shí)必須考慮 SMTP 認(rèn)證,這是基于安全性的考慮。 實(shí)現(xiàn) AJAX 異步發(fā)送郵件的功能就是在郵件發(fā)送階段完成的。就是將郵件的發(fā)送作為服務(wù)器處理,用戶通過郵件信息的輸入界面輸入要發(fā)送的郵件信息后, 22 向服務(wù)器發(fā)送傳輸郵件的請(qǐng)求,發(fā)送的請(qǐng)求通過 AJAX 做異步處理,從而實(shí)現(xiàn)郵件發(fā)送的異步化。 在編程過程中,將所需要的全部四個(gè)對(duì)象 (屬性對(duì)象、會(huì)話對(duì)象、傳輸對(duì)象、消息對(duì)象 ),以及 AJAX 的異步實(shí)現(xiàn)結(jié)合起來,其主要 過程如下 : (1) 客戶端郵件輸入頁面: ... ... ! 引入 dojo,設(shè)置 bind函數(shù) script type=text/javascript function sendPressed(transport){ ({ url: 39。39。, method:39。POST39。, handler:function(type, data, evt){ if (type == 39。error39。){ alert(讀取服務(wù)器數(shù)據(jù)出錯(cuò) )。 }else{ (show).innerHTML = data。 } } })。 } /script ... ... % //頁面單擊提交時(shí) if((submit) != null){ try{ String from = (from).toString()。 String to = Bytes((to))。 String cc = Bytes((cc))。 String bcc = Bytes((bcc))。 String subject = Bytes((subject))。 String body = Bytes((text))。 String file1 = Bytes((file1))。 String file2 = Bytes((file2))。 Properties props = new Properties()。 (, (smtp).toString())。 (,true)。 s = (props)。 23 (true)。 MimeMessage message = new MimeMessage(s)。 //給消息對(duì)象設(shè)置發(fā)件人、收件人、主題、發(fā)信時(shí)間 (new InterAddress(from))。 (, new InterAddress(to))。 if(cc != null amp。amp。 () 0 amp。amp。 (!())) (, new InterAddress((cc)))。 if(bcc != null amp。amp。 () 0 amp。amp。 (!())) (, new InterAddress((bcc)))。 (subject)。 (new Date())。 //新建一個(gè) MimeMultipart對(duì)象用來存放多個(gè) BodyPart對(duì)象 Multipart mp = new MimeMultipart()。 //設(shè)置信件文本內(nèi)容 //新建一個(gè)存放信件內(nèi)容的 BodyPart對(duì)象 BodyPart mbp = new MimeBodyPart()。 //給 BodyPart對(duì)象設(shè)置內(nèi)容和格式 /編碼方式 (body,text/html。charset=gbk)。 //將含有信件內(nèi)容的 BodyPart加入到 MimeMultipart對(duì)象中 (mbp)。 //設(shè)置信件的附件 1(直接將所設(shè)文本內(nèi)容加到自定義文件中作為附件發(fā)送 ) if(file1 != null amp。amp。 () 0 amp。amp。 (!())){ mbp = new MimeBodyPart()。//新建一個(gè)存放附件的 BodyPart FileDataSource fds = new FileDataSource(file1)。 DataHandler dh = new DataHandler(fds)。 //新建一個(gè) DataHandler對(duì)象 ,并設(shè)置其內(nèi)容和格式 /編碼方式 //加上這句將作為附件發(fā)送 ,否則將作為信件的文本內(nèi)容 (file1)。 (dh)。//給 BodyPart對(duì)象設(shè)置內(nèi)容為 dh //將含有附件的 BodyPart加入到 MimeMultipart對(duì)象中 (mbp)。 } //設(shè)置信件的附件 2(用本地上的文件作為附件 ) if(file2 != null amp。amp。 () 0 amp。amp。 (!())){ mbp = new MimeBodyPart()。 FileDataSource fds = new FileDataSource(file2)。 DataHandler dh = new DataHandler(fds)。 (file2)。//可以和原文件名不一 致 (dh)。 (mbp)。 } 24 (mp)。//把 mm作為消息對(duì)象的內(nèi)容 ()。 Transport transport = (smtp)。 (message,message)。 (transport,transport)。 % ! 調(diào)用異步發(fā)送函數(shù) script language=JavaScript type=text/javascript sendPressed()。 /script % }catch(Exception exc){ ()。 (發(fā)送失敗 )。 } } % 郵件輸入頁面效果如下圖 52 所示: 圖 52 新郵件的輸入頁面 (2) 服務(wù)器端發(fā)送郵件處理 : ... ... % try{ Message message = (Message)(message)。 Transport transport = (Transport)(transport)。 if(message == null amp。amp。 transport == null) 25 (發(fā)送失敗 )。 else{ ((smtp).toString(), (user).toString(), (pwd).toString())。 (message, ())。 ()。 (發(fā)送成功 )。 } }catch(Exception exc){ ()。 (發(fā)送失敗 )。 } % 郵件發(fā)送成功后,客戶端將會(huì)收到來自服務(wù)器端的回調(diào)信息,提示郵件已成功發(fā)送。 利用 POP3 協(xié)議接收電子郵件 完成 Email 的接收主要需要用到 JavaMail 中的郵件接收功能,即利用了JavaMail 的 POP3 存取。在郵件的接受過程中,完成了對(duì)郵件相關(guān)信息的數(shù)據(jù)庫存儲(chǔ)。 接收和處理 Email 的流程如圖 53 所示: 圖 53 接收和 Email 流程 JavaMail API 中定義了一個(gè) 類,它用于執(zhí)行郵件接收任務(wù),這個(gè)類的實(shí)例對(duì)象封裝了某種郵件接收協(xié)議的底層實(shí)施細(xì)節(jié),應(yīng)用程序調(diào)用這個(gè)類中的方法就可以獲得用戶郵箱中的各個(gè)郵件夾的信息。 JavaMail 使用 Folder 對(duì)象表示郵件夾,通過 Folder 對(duì)象的方法應(yīng)用程序進(jìn)而又可以獲得該郵件夾中的所有郵件信息,而每封郵件信息 JavaMail 又分別使用一個(gè) Message 對(duì)象進(jìn)行封裝。 26 JavaMail 中接收郵件的主要過程是: (1) 從 Session 對(duì)象中獲得實(shí)現(xiàn)了某種郵件接收協(xié)議的 Store 對(duì)象。 (2) 以某個(gè)郵箱帳戶的身份連接上 POP3 或 IMAP4 服務(wù)器。 (3) 調(diào)用 Store 的 getFolder 方法,獲取代表該賬戶的郵箱中的某個(gè)郵件夾的Fodler 的對(duì)象。 (4) 調(diào)用 Folder 對(duì)象中的 getMessages 或 getMessage 方法,獲取郵件夾中的所有郵件或某一一封郵件,每封郵件以一個(gè) Message 對(duì)象返回。 (5) 通過 Message 對(duì)象所提供的方法,解析顯示一封郵件,包括郵件的發(fā)送者地址、郵件主題、發(fā)送時(shí)間、郵件正文中的文本信息,郵件中的附件等信息。 數(shù)據(jù)庫中存取郵件信息是通過 Hibernate 中間件技術(shù)實(shí)現(xiàn)對(duì)數(shù)據(jù)的存儲(chǔ)操作 ,主要實(shí)現(xiàn)過程如下: ... ... Transaction tx = () .beginTransaction()。 MailFolderTable mailFolder = new MailFolderTable()。 (mailFolder + br)。 ()。 (())。 ()。 ().save(mailFolder)。 ()。 ().close()。 int folderIkey = ()。 (mailFolderTable,mailFolder)。 (folderIkey,folderIkey)。 //save message in MailTable (mailTable +
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1