仓酷云

标题: JAVA教程之怎样利用JSP开辟WebMail体系 [打印本页]

作者: 只想知道    时间: 2015-1-18 11:25
标题: JAVA教程之怎样利用JSP开辟WebMail体系
最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。js|web电子邮件(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办法来完成的,关于输出的文本内容,经由过程以下代码就可以在服务器端猎取,程序代码以下:


Stringusername=request.getParameter("login");
Stringpassword=request.getParameter("password");
Sessionsession2=Session.getInstance(System.getProperties(),null);
Storestore=session2.getStore("pop3");




依据用户输出的信息来毗连服务器,程序代码以下:


try{
store.connect(host,username+"%nyist.net",password);
}
catch(javax.mail.AuthenticationFailedExceptione)
{content="用户名与暗码不婚配";}




吸收邮件代码段

依据猎取用户输出的信息来毗连服务器,代码为:


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




猎取服务器真个信息,代码以下:


Folderfolder=store.getFolder("INBOX");
Folder.open(Folder.READ_WRITE);
Messagemessage[]=folder.getMessages();
FetchProfilefp=newFetchProfile();
fp.add(FetchProfile.Item.ENVELOPE);
fp.add(FetchProfile.Item.FLAGS);
fp.add("X-Mailer");
folder.fetch(message,fp);




依据服务器上信息的分歧格局,利用分歧的体例来读取:


Stringcontentbody="";
Objecto=message[j].getContent();




若其Type为tex/plain便可间接读出,代码以下:


if(message[j].isMimeType("text/plain"))
{
contentbody=(String)+"</td>";
StringBufferbuf=newStringBuffer(contentbody.length()+6);
charch=;
for(intp=0;p<contentbody.length();p++)//若碰到换行就转为<br>
{ch=contentbody.charAt(p);
if(ch==
)buf.append("<br>");
elsebuf.append(ch);
}
contentbody=buf.toString();
}




假如信息范例为text/html,分歧的信息范例处置的体例稍有分歧(以下段代码),因为篇幅无限不再逐一申明。


elseif(message[j].isMimeType("text/html"))
contentbody=(String)o+"</td>";




发送邮件代码段

依据用户输出的内容,猎取邮件头信息代码以下:


Stringhost="nyist.net";
Stringfrom=request.getParameter("from");
Stringto=request.getParameter("to");
Stringsubject=request.getParameter("subject");
Stringcontent=request.getParameter("content");
Propertiesprops=System.getProperties();
//设置邮件服务
props.put("mail.smtp.host",host);
Sessionsession2=Session.getInstance(props,null);




设置邮件头信息代码以下:


MimeMessagemessage=newMimeMessage(session2);
message.setFrom(newInternetAddress(from));
message.addRecipient(Message.RecipientType.TO,newInternetAddress(to));
message.setSubject(subject);
message.setSentDate(newDate());
//createthemessagepart
MimeBodyPartmessageBodyPart=newMimeBodyPart();




设置邮件内容,构建程序段以下:


messageBodyPart.setText(content);
Multipartmultipart=newMimeMultipart();
multipart.addBodyPart(messageBodyPart);




用户在发送邮件经常常带有附件,就是将扫瞄器客户端用户当地的文件传送到POP客户端,完成代码以下:


for(inti=0;i<mySmartUpload.getFiles().getCount();i++)
{
com.jspsmart.upload.FilemyFile=mySmartUpload.getFiles().getFile(i);
if(!myFile.isMissing()){
myFile.saveAs("/upload/"+myFile.getFileName());
count++;
}




在上传附件的同时,对上传文件的数目举行统计,并经由过程out.println("上传了"+count+"个文件")将其在屏幕上显现出来。

在发送的函件中假如有附件,利用以下代码举行发送:


for(inti=0;request.getParameter("file"+i)!=null;i++)
{
messageBodyPart=newMimeBodyPart();
Filefile=newFile("/home/mengyu/ROOT/upload/",request.getParameter("file"+i));
DataSourcesource=newFileDataSource(file);
messageBodyPart.setDataHandler(newDataHandler(source));
messageBodyPart.setFileName(request.getParameter("file"+i));
multipart.addBodyPart(messageBodyPart);
}
//Putpartsinmessage
message.setContent(multipart);




挪用Transport的send办法,将机关好MIMEMessage对象发送进来,代码以下:


Transport.send(message);




删除电子邮件代码段

在经由过程Web界面利用电子邮件过程当中,常常要对吸收到渣滓邮件或已检察过的邮件举行删除,这也是电子邮件中必不成少的一个功效,以是我们计划了Web界面中删除电子邮件的响应功效,次要程序代码段以下:


Folderfolder=store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
Messagemessage[]=folder.getMessages();
Stringmsg[]=request.getParameterValues("msg");
for(inti=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("user
name")+"@nyist.net"+request.getParameter("passwd"));
//删除用户
Runtime.getRuntime().exec("/home/vpopmail/bin/vdeluser"+request.getParameter("user
name")+"@nyist.net");
//修正用户暗码
Runtime.getRuntime().exec("/home/vpopmail/bin/vpasswd"+request.getParameter("usern
ame")+"@nyist.net"+request.getParameter("passwd"));





总结


Java简化了企业办理计划的开辟、部署和办理等相干的庞大成绩,它是面向对象的编程言语,同时也是具有平台自力性、高功能的服务器端编程言语。它供应的尺度体系框架和服务合适整体开辟,可把持性好,与别的资本的集成性好。接纳Java为编程工具开辟高功能、高可用性的WebMail服务用具有十分主要的意义。
Java的桌面程序开发在java程序员里通常叫swing开发,主要用的swing包里的类开发的,也就是通常说的c/s架构开发
作者: 若相依    时间: 2015-1-21 06:02
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
作者: 冷月葬花魂    时间: 2015-2-4 13:46
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者: 第二个灵魂    时间: 2015-2-5 15:23
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者: 飘飘悠悠    时间: 2015-2-6 00:33
是一种使用者不需花费很多时间学习的语言
作者: 兰色精灵    时间: 2015-2-19 23:08
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者: admin    时间: 2015-3-4 01:10
Java 编程语言的风格十分接近C、C++语言。
作者: 山那边是海    时间: 2015-3-11 14:36
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
作者: 飘灵儿    时间: 2015-3-18 19:13
是一种语言,用以产生「小应用程序(Applet(s))
作者: 蒙在股里    时间: 2015-3-26 11:48
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2