程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> 使用JSP開發WebMail系統

使用JSP開發WebMail系統

編輯:關於JSP

電子郵件(E-mail)是Internet上使用最廣泛的服務之一,傳統的Email應用模式基於C/S結構,即用戶使用客戶端的郵件收發工具(如Outlook、Foxmail等)與提供郵件服務的服務器(如163.net、263.net、371.net)通信,在使用客戶端郵件工具之前,用戶要進行一些必要的設置,如指定郵件服務器的主機地址和通信端口等,這些工作對剛開始上網的用戶會有一定的困難,如果把E-mail和Web結合在一起,即通過Web編程和適當的系統設置,使用戶僅僅以訪問Web的方式就可以得到和使用完整的郵件服務,這樣將極大地方便上網用戶,這種系統稱為WebMail。WebMail是目前Internet上最受歡迎的服務之一,也是很多網站必備功能之一。另外WebMail同樣也適用於企業或校園網的應用。

通常在後台服務器的搭建和設置完成後實現WebMail系統,而前台的開發工作主要是開發工具與後台數據庫和郵件服務器的交互問題。在Linux平台上運行的各種服務器軟件穩定性和可靠性一直很好,而且選擇跨平台的Java開發工具使系統更穩定,具有更高的伸縮性。

JSP性能

盡管JSP提供強大的功能是建立在Servlet之上,但JSP的性能和Servlet相差無幾。JSP首先要編譯成Servlet,這只會增加少量的代碼,僅需編譯一次且可以預編譯,這就消除了運行時花費不必要的負擔。JSP與Servlet性能上的差異僅僅表現在返回的數據是二進制的。這是因為JSP返回時用的是PrintWriter,而Servlet可以應用於速度更快的OutputStream。

JSP自定義的標簽庫可以封裝大量的、復雜的Java操作在一個Form裡面,這些預先定義好的標簽可以很容易的被那些沒有Java知識的人調用。因此,JSP自定義的標簽庫可以有效地實現Java程序員和Web設計人員工作的劃分。然而,在頁面上應用的每一個標簽,Web容器都必須創建一個新的標簽句柄對象或從標簽緩沖中提取它。因此,過多的應用自定義的標簽將會帶來不必要的資源浪費。

BodyTags是一種特殊的定制標簽,可以提取在它之間封裝的內容或者替換那些內容。BodyTags之間的內容一般會備份在內存中。由於BodyTags之間能夠嵌套和重復,因此,在程序中應用了多級的BodyTags會占用大量寶貴的內存和系統資源。

實現WebMail的主要功能

該系統提供了獲取、閱讀、書寫、轉發、回復、打印、刪除及用戶管理的功能。考慮到系統的跨平台性,采用Java及相關技術產品為開發工具,特別是采用JSP作為服務程序,這樣對客戶端也沒有其它要求,同時系統的性能在高負荷下得到進一步提高。整個WebMail系統全部采用純Java代碼,服務器端每響應一個服務請求啟動一個線程,而不像CGI那樣啟動一個進程。這樣能夠節省系統資源,提高系統性能。

實現主要代碼

獲取用戶輸入的信息

對於用戶輸入內容獲取功能是通過getParameter方法來實現的,對於輸入的文本內容,通過如下代碼就能在服務器端獲取,程序代碼如下:

<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=550 align=center borderColorLight=black border=1>
<tr> <td class=code bgColor=#e6e6e6>
String username=request.getParameter("login");
String password=request.getParameter("password");
Session session2=Session.getInstance(System.getProperties() ,null);
Store store=session2.getStore("pop3");</td></tr>
</table>

根據用戶輸入的信息來連接服務器,程序代碼如下:

<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=550 align=center borderColorLight=black border=1>
<tr> <td class=code bgColor=#e6e6e6>
try{
store.connect(host,username+"%nyist.net", password);
}
catch(javax.mail.AuthenticationFailedException e)
{content="用戶名與密碼不匹配";}</td></tr>
</table>

接收郵件代碼段

根據獲取用戶輸入的信息來連接服務器,代碼為:

<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=550 align=center borderColorLight=black border=1>
<tr> <td class=code bgColor=#e6e6e6>
store.connect("nyist.net",-1,request.getParameter("username")+"%nyist.net",request
.getParameter("password"));</td></tr>
</table>

獲取服務器端的信息,代碼如下:

<table cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=550 align=center borderColorLight=black border=1>
<tr> <td class=code bgColor=#e6e6e6>
Folder folder = store.getFolder("INBOX");
Folder.open (Folder.READ_WRITE);
Message message[]=folder.getMessages();
FetchProfile fp=new FetchProfile();
fp.add(FetchProfile.Item.ENVELOPE);
fp.add(FetchProfile.Item.FLAGS);
fp.add("X-Mailer");
folder.fetch(message,fp);</td></tr>
</table>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved