|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
最初被命名为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架构开发 |
|