仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 505|回复: 11
打印 上一主题 下一主题

[学习教程] JAVA网页设计利用JSP开辟WebMail体系

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:23:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
从一个编程语言的普及程度来将,一个好的IDE是至关中要的,而现在的java的IDE虽然已经很好了,但是和.net比起来还是稍微差一些的,这是个客观事实。java要想普及的更好。DE是必须加以改进的。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办法来完成的,关于输出的文本内容,经由过程以下代码就可以在服务器端猎取,程序代码以下:

ffffffcellPadding=2width=550align=centerborderColorLight=blackborder=1>
  1. Stringusername=request.getParameter("login");Stringpassword=request.getParameter("password");Sessionsession2=Session.getInstance(System.getProperties(),null);Storestore=session2.getStore("pop3");
复制代码

依据用户输出的信息来毗连服务器,程序代码以下:
  1. try{store.connect(host,username+"%nyist.net",password);}catch(javax.mail.AuthenticationFailedExceptione){content="用户名与暗码不婚配";}
复制代码

吸收邮件代码段

依据猎取用户输出的信息来毗连服务器,代码为:
  1. store.connect("nyist.net",-1,request.getParameter("username")+"%nyist.net",request.getParameter("password"));
复制代码

猎取服务器真个信息,代码以下:
  1. 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);
复制代码

依据服务器上信息的分歧格局,利用分歧的体例来读取:
  1. Stringcontentbody="";Objecto=message[j].getContent();
复制代码

若其Type为tex/plain便可间接读出,代码以下:
  1. 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==
  2. )buf.append("<br>");elsebuf.append(ch);}contentbody=buf.toString();}
复制代码

假如信息范例为text/html,分歧的信息范例处置的体例稍有分歧(以下段代码),因为篇幅无限不再逐一申明。
  1. elseif(message[j].isMimeType("text/html"))contentbody=(String)o+"</td>";
复制代码

发送邮件代码段

依据用户输出的内容,猎取邮件头信息代码以下:
  1. 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);
复制代码

设置邮件头信息代码以下:
  1. MimeMessagemessage=newMimeMessage(session2);message.setFrom(newInternetAddress(from));message.addRecipient(Message.RecipientType.TO,newInternetAddress(to));message.setSubject(subject);message.setSentDate(newDate());//createthemessagepartMimeBodyPartmessageBodyPart=newMimeBodyPart();
复制代码

设置邮件内容,构建程序段以下:
  1. messageBodyPart.setText(content);Multipartmultipart=newMimeMultipart();multipart.addBodyPart(messageBodyPart);
复制代码

用户在发送邮件经常常带有附件,就是将扫瞄器客户端用户当地的文件传送到POP客户端,完成代码以下:
  1. 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+"个文件")将其在屏幕上显现出来。

在发送的函件中假如有附件,利用以下代码举行发送:
  1. 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);}//Putpartsinmessagemessage.setContent(multipart);
复制代码

挪用Transport的send办法,将机关好MIMEMessage对象发送进来,代码以下:
  1. Transport.send(message);
复制代码

删除电子邮件代码段

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

用户办理

在利用体系运转的过程当中,经由过程办理界面增加用户,删除不用要的用户,修正用户的暗码,这是程序运转过程当中需要的模块,代码以下:
  1. //增加用户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服务用具有十分主要的意义。



进而能拉拢大多数程序员用windows产品。并且从ASP.NETAJAX可以跨平台这一点上,间接证明了我们的推断,至少证明了微软做过这方面的研究。所以如果哪一天突然听说了.net可以跨平台了,那么请不要吃惊,如果这一天真的到来,java就到了真正和.net决战的时刻。因为不到万不得以的时候微软是不会推出跨平台的.net的,如果跨平台的.net还不足以对抗java的话,那么微软还剩的手段就是开源了,呵呵。
谁可相欹 该用户已被删除
沙发
 楼主| 发表于 2015-1-20 23:31:52 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-1-25 11:12:38 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
小魔女 该用户已被删除
地板
发表于 2015-1-25 14:39:03 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
再现理想 该用户已被删除
5#
发表于 2015-1-25 17:44:35 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
若相依 该用户已被删除
6#
发表于 2015-1-29 10:14:58 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
第二个灵魂 该用户已被删除
7#
发表于 2015-2-3 11:23:40 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
简单生活 该用户已被删除
8#
发表于 2015-2-8 20:21:21 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
小女巫 该用户已被删除
9#
发表于 2015-2-26 03:47:30 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
老尸 该用户已被删除
10#
发表于 2015-3-8 02:54:19 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
冷月葬花魂 该用户已被删除
11#
发表于 2015-3-11 15:51:10 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
蒙在股里 该用户已被删除
12#
发表于 2015-3-26 19:16:36 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 11:43

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表