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

首頁 > 編程 > JSP > 正文

使用JSP開發WebMail系統

2020-07-27 21:50:09
字體:
來源:轉載
供稿:網友
電子郵件(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方法來實現的,對于輸入的文本內容,通過如下代碼就能在服務器端獲取,程序代碼如下:

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
亚洲一区中文字幕| 91av免费观看91av精品在线| 亚洲精品在线91| 国产精品v日韩精品| 亚洲精品国产欧美| 日韩在线视频免费观看高清中文| 成人黄色激情网| 日韩av手机在线看| 欧美日韩美女在线| 日韩国产高清视频在线| 成人激情免费在线| 欧美日韩国产成人在线观看| 亚洲国产成人一区| 8x海外华人永久免费日韩内陆视频| 亚洲成人动漫在线播放| 91精品国产色综合久久不卡98口| 在线播放日韩精品| 91午夜在线播放| 亚洲第一中文字幕在线观看| yw.139尤物在线精品视频| 欧美一区二区三区免费视| 国模gogo一区二区大胆私拍| 欧美中文在线观看| 久久精品国产免费观看| 亚洲美女在线看| 成人午夜一级二级三级| 国产精品亚洲第一区| 精品视频一区在线视频| 在线视频中文亚洲| 亚洲国产欧美一区二区丝袜黑人| 亚洲电影免费观看高清完整版在线观看| 久久夜色撩人精品| 国产亚洲精品高潮| 久久国产精品影片| 久久亚洲精品一区二区| 国产91精品视频在线观看| 色偷偷噜噜噜亚洲男人的天堂| 精品亚洲夜色av98在线观看| 日韩av中文字幕在线播放| 欧美午夜电影在线| 亚洲最大福利视频网站| 中文字幕久热精品视频在线| xxxx欧美18另类的高清| 国外成人性视频| 大伊人狠狠躁夜夜躁av一区| 91超碰caoporn97人人| 亚洲最新av网址| 九九九久久久久久| 亚洲欧美日韩高清| 亚州欧美日韩中文视频| 欧美日韩在线免费| 亚洲性夜色噜噜噜7777| 精品伊人久久97| 精品久久国产精品| 亚洲精选一区二区| 亚洲天堂av在线免费| 日韩av网址在线观看| 亚洲欧美日韩第一区| zzijzzij亚洲日本成熟少妇| 欧美超级免费视 在线| 久久国产精彩视频| 亚洲国产精久久久久久| 欧美激情精品久久久久久久变态| 亚洲日本中文字幕免费在线不卡| 亚洲国语精品自产拍在线观看| 国产精品一区二区久久久| 亚洲影影院av| 欧美精品在线观看| 国产精品美女久久久久av超清| 亚洲图片制服诱惑| 日韩精品免费电影| 高清日韩电视剧大全免费播放在线观看| 欧美成人激情视频免费观看| 热re99久久精品国产66热| 国产91av在线| 日本久久久久久| 亚洲精品福利资源站| 国产精品美女无圣光视频| 亚洲欧美日韩在线高清直播| 久久久久在线观看| 狠狠干狠狠久久| 中文字幕国产精品| 亚洲国产精品va在线看黑人| 中文字幕视频在线免费欧美日韩综合在线看| 国模私拍一区二区三区| 亚洲欧洲国产伦综合| 欧美午夜激情在线| 欧美wwwxxxx| 精品国产乱码久久久久久天美| 中文字幕日韩精品在线| 国产精品第100页| 国产精品久久久久91| 另类色图亚洲色图| 久久精品国产欧美亚洲人人爽| 欧美黄色小视频| 亚洲欧洲一区二区三区在线观看| 国产精品网站大全| 一本色道久久综合狠狠躁篇的优点| 国内揄拍国内精品| 精品久久久免费| 国产精品影院在线观看| 久久深夜福利免费观看| 伊人久久精品视频| 亚洲国产精品成人av| 久久91精品国产91久久久| 国产经典一区二区| 国产一区二区三区在线视频| 亚洲天堂日韩电影| 久久精品国产99国产精品澳门| 国产精品美女免费| 在线观看亚洲视频| 一区二区国产精品视频| 98精品国产自产在线观看| 超碰日本道色综合久久综合| 永久免费精品影视网站| 日韩69视频在线观看| 青青草成人在线| 不卡av在线播放| 欧美日韩精品在线观看| 欧美日韩亚洲视频一区| 国产精品999999| 中文字幕一区二区精品| 国产精品视频一区二区三区四| 国产成人精品免费视频| 亚洲第一天堂无码专区| 超碰日本道色综合久久综合| 欧美日韩高清区| 欧美夫妻性生活视频| 精品国产一区二区三区在线观看| 亚洲欧美日韩精品| 国产一区视频在线| 国产精品私拍pans大尺度在线| 日韩影视在线观看| 亚洲在线观看视频| 欧美激情影音先锋| 色综合久久悠悠| 国产主播喷水一区二区| 成人久久久久爱| 亚州欧美日韩中文视频| 久久视频在线视频| 97视频在线观看免费高清完整版在线观看| 黄色一区二区在线| 91精品国产免费久久久久久| 国产一区二区三区在线视频| 91亚洲国产成人久久精品网站| 午夜精品久久17c| 国产精品va在线播放| 色偷偷偷亚洲综合网另类| 日韩成人黄色av| 欧美另类在线播放| 亚洲在线一区二区| 亚洲美女av黄| 狠狠躁夜夜躁人人爽天天天天97| 日韩免费在线视频| 国产精品专区一| 在线国产精品播放| 欧美午夜性色大片在线观看| 国产啪精品视频网站| 色噜噜狠狠狠综合曰曰曰| 精品香蕉一区二区三区| 日韩欧美在线视频观看| 国产精品视频自在线| 久久久国产在线视频| wwwwwwww亚洲|