亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

使用JSP開發WebMail系統

2024-09-05 00:19:04
字體:
來源:轉載
供稿:網友


電子郵件(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方法來實現的,對于輸入的文本內容,通過如下代碼就能在服務器端獲取,程序代碼如下:

ffffff cellpadding=2 width=550 align=center bordercolorlight=black border=1>
string username=request.getparameter("login");string password=request.getparameter("password");session session2=session.getinstance(system.getproperties() ,null);store store=session2.getstore("pop3");


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

try{ store.connect(host,username+"%nyist.net", password);}catch(javax.mail.authenticationfailedexception e){content="用戶名與密碼不匹配";}


接收郵件代碼段

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

store.connect("nyist.net",-1,request.getparameter("username")+"%nyist.net",request.getparameter("password"));


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

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);


根據服務器上信息的不同格式,使用不同的方式來讀?。?

string contentbody="";object o=message[j].getcontent();


若其type為tex/plain就可直接讀出,代碼如下:

if (message[j].ismimetype("text/plain")) { contentbody=(string)+"</td>"; stringbuffer  buf=new  stringbuffer(contentbody.length()+6); char  ch=' '; for(int  p=0;p<contentbody.length();p++)//若遇到換行就轉為<br> {ch=contentbody.charat(p);  if(ch=='/n')buf.append("<br>");  else  buf.append(ch); } contentbody=buf.tostring();}


如果信息類型為text/html,不同的信息類型處理的方式稍有不同(如下段代碼),由于篇幅有限不再一一說明。

else if (message[j].ismimetype("text/html"))  contentbody=(string)o+"</td>";


發送郵件代碼段

根據用戶輸入的內容,獲取郵件頭信息代碼如下:

string host = "nyist.net";string from = request.getparameter("from");string to = request.getparameter("to");string subject = request.getparameter("subject");string content = request.getparameter("content");properties props = system.getproperties();//設置郵件服務props.put("mail.smtp.host", host);session session2 =session.getinstance(props, null);


設置郵件頭信息代碼如下:

mimemessage message =new mimemessage(session2);message.setfrom(new internetaddress(from));message.addrecipient(message.recipienttype.to,new internetaddress(to));message.setsubject(subject);message.setsentdate(new date());// create the message partmimebodypart messagebodypart =new mimebodypart();


設置郵件內容,構建程序段如下:

messagebodypart.settext(content);multipart multipart = new mimemultipart();multipart.addbodypart(messagebodypart);


用戶在發送郵件時常常帶有附件,就是將瀏覽器客戶端用戶本地的文件傳送到pop客戶端,實現代碼如下:

for (int i=0;i<mysmartupload.getfiles().getcount();i++){ com.jspsmart.upload.file myfile = mysmartupload.getfiles().getfile(i); if (!myfile.ismissing()) { myfile.saveas("/upload/" + myfile.getfilename());  count ++;}


在上傳附件的同時,對上傳文件的數量進行統計,并通過out.println("上傳了"+count + "個文件")將其在屏幕上顯示出來。

在發送的信件中如果有附件,使用如下代碼進行發送:

for(int i=0;request.getparameter("file"+i)!=null;i++){ messagebodypart = new mimebodypart(); file file=new file("/home/mengyu/root/upload/",request.getparameter("file"+i)); datasource source =new filedatasource(file); messagebodypart.setdatahandler(new datahandler(source)); messagebodypart.setfilename(request.getparameter("file"+i)); multipart.addbodypart(messagebodypart);}// put parts in messagemessage.setcontent(multipart);


調用transport的send方法,將構造好mime message對象發送出去,代碼如下:

transport.send(message);


刪除電子郵件代碼段

在通過web界面使用電子郵件過程中,經常要對接收到垃圾郵件或已查看過的郵件進行刪除,這也是電子郵件中必不可少的一個功能,所以我們設計了web界面中刪除電子郵件的相應功能,主要程序代碼段如下:

folder folder=store.getfolder("inbox");folder.open(folder.read_write);message message[]=folder.getmessages();string msg[]=request.getparametervalues("msg");for(int i=0,n=msg.length;i<n;i++) message[double.valueof(msg[i]).intvalue()].setflag(flags.flag.deleted,true);folder.close(true);


用戶管理

在使用系統運行的過程中,通過管理界面添加用戶,刪除不必要的用戶,修改用戶的密碼,這是程序運行過程中必要的模塊,代碼如下:

//添加用戶runtime.getruntime().exec("/home/vpopmail/bin/vadduser"+request.getparameter("username")+"@nyist.net "+request.getparameter("passwd"));//刪除用戶runtime.getruntime().exec("/home/vpopmail/bin/vdeluser"+request.getparameter("username")+"@nyist.net");//修改用戶密碼runtime.getruntime().exec("/home/vpopmail/bin/vpasswd"+request.getparameter("username")+"@nyist.net "+request.getparameter("passwd"));


總結


java簡化了企業解決方案的開發、部署和管理等相關的復雜問題,它是面向對象的編程語言,同時也是具有平臺獨立性、高性能的服務器端編程語言。它提供的標準系統框架和服務適合團體開發,可控制性好,與其它資源的集成性好。采用java為編程工具開發高性能、高可用性的webmail服務器具有非常重要的意義。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美一区二区三区久久| 成人黄色午夜影院| 国产精品亚洲自拍| 精品久久久国产| 91精品国产91久久久久| 国产成人免费av电影| 色婷婷成人综合| 日韩av片免费在线观看| 欧美俄罗斯性视频| 欧美日韩亚洲一区二| 欧美成人国产va精品日本一级| 黑人巨大精品欧美一区二区免费| 亚洲欧洲免费视频| 精品国产91乱高清在线观看| 成人av在线天堂| 亚洲韩国日本中文字幕| 亚洲精品720p| 中文字幕v亚洲ⅴv天堂| 欧美黑人巨大xxx极品| 这里只有精品久久| 亚洲性生活视频在线观看| 宅男66日本亚洲欧美视频| 日韩欧美成人免费视频| 91视频九色网站| 欧美激情按摩在线| 日韩免费在线播放| 一本一本久久a久久精品综合小说| 国产va免费精品高清在线观看| 精品久久中文字幕久久av| 亚洲天堂日韩电影| 亚洲**2019国产| 欧美午夜xxx| 在线电影av不卡网址| 色无极亚洲影院| 91麻豆国产语对白在线观看| 国产成人精品久久| 亚洲国产古装精品网站| 91午夜理伦私人影院| 激情成人在线视频| 2019中文字幕全在线观看| 97精品视频在线播放| 午夜精品久久久久久久99热| 国产精品视频区| 欧美综合在线观看| 91精品国产自产在线观看永久| 亚洲精品电影网站| 91大神福利视频在线| 亚洲第一网中文字幕| 国产一区二区三区毛片| 97超级碰在线看视频免费在线看| 51精品在线观看| 日韩经典一区二区三区| 欧美国产中文字幕| 中文字幕欧美专区| 欧美孕妇与黑人孕交| 国产剧情日韩欧美| 一区二区成人精品| 国产精品www| 亚洲精品91美女久久久久久久| 亚洲精品视频播放| 国产精品视频永久免费播放| 久久亚洲欧美日韩精品专区| 欧美一级bbbbb性bbbb喷潮片| 亚洲影院在线看| 亚洲欧美日韩天堂| 色狠狠久久aa北条麻妃| 欧美日韩国产一中文字不卡| 精品在线欧美视频| 久久影院免费观看| 国产在线观看精品一区二区三区| 日韩中文在线中文网三级| 欧美在线视频网| 91国产视频在线| 成人精品视频久久久久| 午夜精品久久久久久久99热| 欧美日韩国产精品一区二区不卡中文| 成人欧美一区二区三区黑人| 国产精品视频自在线| 日韩精品在线免费观看视频| 色偷偷噜噜噜亚洲男人的天堂| 精品色蜜蜜精品视频在线观看| 国产成人精品久久久| 免费91麻豆精品国产自产在线观看| 亚洲的天堂在线中文字幕| 久久天天躁夜夜躁狠狠躁2022| 亚洲欧美国产日韩天堂区| 亚洲综合精品伊人久久| 亚洲国产欧美一区二区丝袜黑人| 日韩精品在线观看一区二区| 亚洲另类激情图| 国产精品成人一区二区| 色偷偷91综合久久噜噜| 国产乱肥老妇国产一区二| 亚洲一区二区久久久| 久热精品视频在线观看一区| 国产精品久久网| 日韩不卡中文字幕| 亚洲色图偷窥自拍| 亚洲福利视频免费观看| 久久天天躁狠狠躁夜夜躁2014| 91精品中国老女人| 欧美日韩在线免费| 久久在线免费观看视频| 国产成人精品久久| 国产精品久久视频| 国产综合在线观看视频| 精品亚洲永久免费精品| 日本精品一区二区三区在线| 欧美日韩国产一区在线| 性色av香蕉一区二区| 色综合久久中文字幕综合网小说| 中文字幕亚洲欧美在线| 国产在线日韩在线| 亚洲欧美日本另类| 综合激情国产一区| 国产精品视频久久久久| 91色在线视频| 欧美激情小视频| 国产精品精品一区二区三区午夜版| 综合网日日天干夜夜久久| 成人h视频在线| 精品久久中文字幕| 久久久99免费视频| 亚洲a成v人在线观看| 欧美午夜性色大片在线观看| 国产欧美日韩亚洲精品| 亚洲国产精品女人久久久| 欧美日韩亚洲成人| 91超碰中文字幕久久精品| 成人免费视频网| 亚洲精品久久久久久久久久久| 精品亚洲精品福利线在观看| 国产在线精品一区免费香蕉| 国产精品视频99| x99av成人免费| 欧美成人免费va影院高清| 精品夜色国产国偷在线| 日本最新高清不卡中文字幕| 国产成人精品综合| 日韩精品中文字幕久久臀| 亚洲成人在线网| 精品偷拍一区二区三区在线看| 日韩欧美成人免费视频| 成人网在线免费观看| 国产精品美女久久久久av超清| 欧美刺激性大交免费视频| 秋霞成人午夜鲁丝一区二区三区| 91精品在线播放| 久久av在线播放| 成人黄色影片在线| 精品成人国产在线观看男人呻吟| 久久91超碰青草是什么| 久久人人97超碰精品888| 成人激情在线观看| 国产精品极品美女粉嫩高清在线| 亚洲二区在线播放视频| 国产日韩在线亚洲字幕中文| 久久久久久久国产精品| 日韩av片永久免费网站| 国产精品av电影| 日韩av影视综合网| 91国产美女视频| 国产成人在线一区| 主播福利视频一区|