基于Struts2技术的电子邮件系统的设计与实现_第1页
基于Struts2技术的电子邮件系统的设计与实现_第2页
基于Struts2技术的电子邮件系统的设计与实现_第3页
基于Struts2技术的电子邮件系统的设计与实现_第4页
基于Struts2技术的电子邮件系统的设计与实现_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

天津工业大学毕业设计(论文)基于Struts2技术的电子邮件系统的设计与实现姓名学院计算机科学与软件专业软件工程指导教师职称2015年6月1日天津工业大学毕业设计(论文)任务书题目基于Struts2技术的电子邮件系统的设计与实现学生姓名谢辰学院名称计算机科学与软件专业班级软件1105课题类型实际课题课题意义随着互联网快速、广泛的普及应用,电子邮件越来越受到人们的欢迎,其最大的特点是,人们可以在任何地方时间收、发信件解决了时空的限制,大大提高了工作效率,为办公自动化,商业活动提供了很大便利。各类企业、学校、甚至于个人之间的业务交流越加依托于网络通讯,电子邮件系统也越发成为企业、学校的主流级应用。任务与进度要求2015.3.9-2015.3.29选题确认并完成开题报告、任务书的填写、提交、审核2015.3.30-2015.4.12深入了解课题内容、需求分析、确定系统框架、熟悉开发工具2015.4.13-2015.5.10完成课题概要设计和详细设计,代码编写、网页制作,完成系统的大部分功能,初稿完成2015.5.11-2015.5.31进行系统调试,并在调试中进一步完善系统的各项功能,二稿完成2015.6.1-2015.6.6毕业设计(论文)的审核、修改及定稿并装订2015.6.7答辩主要参考文献[1]徐方亮,钱朝阳,李泉.基于B/S结构的电子邮件系统的设计与实现[J].数字技术与应用,2010,(6):137-138[2]王绍飞.基于web的电子邮件系统[J].商情,2014,(17):320-321[3]谢宗旺,方旭升.基于Struts2和Spring框架的Web整合开发研究[J].价值工程,2011,(4):272-273[4]邱晓荣.基于MVC模式的Struts2框架在Web应用开发中的实现[J].黑龙江科技信息,2012,(18):68-72[5]王彬,张计龙.Struts2框架的改进与实现[J].大连海事大学学报:自然科学版,2010,(2):56-58[6]Xiao,Shou-bai.ResearchonStrutsframeworkinthedevelopmentofMIS[J].EnergyProcedia,2011,(13):88-90起止日期2015年3月9日至2015年6月7日备注院长教研室主任指导教师毕业设计(论文)开题报告表2015年3月23日姓名谢辰学院计算机科学与软件专业软件工程班级软件1105题目基于Struts2技术的电子邮件系统的设计与实现指导教师朱梅霞;侯鹏一、与本课题有关的国内外研究情况、课题研究的主要内容、目的和意义:与本课题有关的国内外研究情况电子邮件本身起源比较早,所以到今天为止的几十年间,电子邮件系统已经发展成一个相对成熟稳定的系统。国外研究状况:目前电子邮件服务都是由专门的服务器提供,而主要额电子邮件服务器有一下两大块:一、基于Unix/Linux平台的邮件系统1.Sendmail邮件系统(支持SMTP)和dovecot邮件系统(支持POP3)Sendmail可以说是邮件的鼻祖,迄今为止有50多年的历史。2.基于Postfix/Qmail的邮件系统。Postfix/Qmail技术是在Sendmail技术上发展起来的,迄今为止历史不超过10年。二.基于Windows平台的邮件系统1.微软的Exchange邮件系统,次系统由于和Windows整合,是企业中使用数量最多的邮件系统。2.IBMLotusDomino邮件系统,此系统综合功能较强,大型企业使用较多,基于Postfix的邮件系统则需要有较强的技术力量才能实现,但是性能可以达到非常高,而且安全性很好,同时软件是开源免费的。3.Scalix邮件系统。4.Zimbra邮件系统。5.MDeamon邮件系统。由于互联网技术的更新换代,电子邮件系统也在不断更新,云服务及全终端互联都是目前各大电子邮件服务商所发展的趋势。国内研究状况:国内的电子邮件业务相对起步不算早,但目前的技术发展也趋于稳定。电子邮件服务商也处在百家争鸣的阶段,用户根据自身状况可以选择的服务商可以有很多很多。网易和新浪算是国内电子邮件系统起步较早的两家,网易现在的电子邮件系统相对完善,技术也比较成熟,而腾讯由于收购了foxmail使得腾旭在电子邮件领域的技术也是得到了很大的加强。可以说国内电子邮件系统的发展已经到了和国外齐头并进的地步,在国内下一个十五的计划下,国内因特网的发展将进入下一代,那邮件服务同国外一样也将想着云服务及全终端互联的方向发展下去,但是与国外GOOGLE、yahoo等相比技术本身还有一定的落后。课题研究的主要内容1.用户注册及登录:客户在注册成功后成为系统的用户,登录后可以进行邮件的收发等操作。2.收取邮件:用户登录系统时系统自动提取该用户的邮件,用户点击获取的邮件可以查看邮件。3.搜索邮件:用户登录系统后通过选定条件进行模糊查询,系统默认是主体+正文的搜索条件。4.邮件回复及转发:用户登录系统后进入单封邮件,点击回复或转发按钮即可回复转发邮件。

5.写信:用户登录系统后,点击写信按钮即可写信,用户可以写带附件的邮件保存至草稿箱或发送出去。课题研究的主要的目的和意义一、目的:以JavaEE作为开发平台运用MVC模式开发思想采用Struts2框架技术完成一个轻量级的电子邮件系统。系统具有收发邮件、邮件管理、通讯录、搜索等功能初步完成电子邮件系统的要求。二、意义:中国互联网信息中心(CCNIC)2015年1月发布的第35次《中国互联网络发展状况统计报告》中表明在主要企业互联网应用普及率中,发送和接受电子邮件的普及率为83%,是各个应用中最高,而在实际企业电子邮件的应用中电子邮件系统太过冗余,许多繁复的功能自始至终未被使用,所以通过开发一个轻量级的系统来简化许多不必要的功能。本次毕业设计应达到的目标独自自主的完成一个完整的软件项目(本次为电子邮件系统)的开发全过程,最终完成项目无重大BUG可以顺利运行各个预定模块,完成相关论文编写,对开发过程及开发细节以及个人体会进行详述。充分将所学知识运用到需求分析、系统分析、代码实现等各个阶段,使自身适应当下环境下的轻量级软件开发,更好的为毕业之后踏入社会做好最充分的准备。二、进度及预期结果:起止日期主要内容预期结果2015.3.9-2015.3.292015.3.30-2015.4.122015.4.13-2015.5.102015.5.11-2015.5.312015.6.1-2015.6.62015.6.7选题确认并完成开题报告、任务书的填写、提交、审核深入了解课题内容、需求分析、确定系统框架、熟悉开发工具完成课题概要设计和详细设计,代码编写、网页制作,完成系统的大部分功能,初稿完成进行系统调试,并在调试中进一步完善系统的各项功能,二稿完成毕业设计(论文)的审核、修改及定稿并装订答辩完成完成完成完成完成完成完成课题的现有条件硬件:IntelCorei5-2410M8G内存640G硬盘软件:MicrosoftWindows7ProfessionalMyEclipse6.0

ApacheTomcat5.5

MySQL5.5

ApacheJamesMailServer2.3.1参考文献:[1]徐方亮,钱朝阳,李泉.基于B/S结构的电子邮件系统的设计与实现[J].数字技术与应用,2010,(6):137-138[2]王绍飞.基于web的电子邮件系统[J].商情,2014,(17):320-321[3]谢宗旺,方旭升.基于Struts2和Spring框架的Web整合开发研究[J].价值工程,2011,(4):272-273[4]邱晓荣.基于MVC模式的Struts2框架在Web应用开发中的实现[J].黑龙江科技信息,2012,(18):68-72[5]王彬,张计龙.Struts2框架的改进与实现[J].大连海事大学学报:自然科学版,2010,(2):56-58[6]Xiao,Shou-bai.ResearchonStrutsframeworkinthedevelopmentofMIS[J].EnergyProcedia,2011,(13):88-90审查意见指导教师:年月日学院意见主管领导:年月日天津工业大学本科毕业设计(论文)评阅表(论文类)题目基于Struts2技术的电子邮件系统的设计与实现学生姓名谢辰学生班级软件1105指导教师姓名朱梅霞;侯鹏评审项目指标满分评分选题能体现本专业培养目标,使学生得到较全面训练。题目大小、难度适中,学生工作量饱满,经努力能完成。10题目与生产、科研等实际问题结合紧密。10课题调研、文献检索能独立查阅文献以及从事其他形式的调研,能较好地理解课题任务并提出实施方案;有分析整理各类信息,从中获取新知识的能力。15论文撰写结构严谨,理论、观点、概念表达准确、清晰。10文字通顺,用语正确,基本无错别字和病句,图表清楚,书写格式符合规范。10外文应用能正确引用外文文献,翻译准确,文字流畅。5论文水平论文论点正确,论点与论据协调一致,论据充分支持论点,论证过程有说服力。15有必要的数据、资料支持,数据、资料翔实可靠,得出的结论有可验性。15论文有独到见解或有一定实用价值。10合计100意见及建议:评阅人签名: 年月日天津工业大学毕业设计(论文)成绩考核表学生姓名谢辰学院名称计算机科学与软件专业班级软件1105题目基于Struts2技术的电子邮件系统的设计与实现1.毕业设计(论文)指导教师评语及成绩:成绩:成绩:指导教师签字:年月日2.毕业设计(论文)答辩委员会评语及成绩:成绩:成绩:答辩主席(或组长)签字:年月日3.毕业设计(论文)总成绩:a.指导教师给定成绩b.评阅教师给定成绩c.毕业答辩成绩总成绩(a×0.5+b×0.2+c×0.3)摘要通过短短几十年的发展,交流情感的书信已经从过去的实体信件一步一步演变为今时今日的电子邮件,与传统的方式相比,电子邮件的优势显而易见:方便、快捷、收费低廉等这些都成为人们热捧的原因。中国互联网信息中心(CCNIC)2015年1月发布的第35次《中国互联网络发展状况统计报告》中表明在主要企业互联网应用普及率中,发送和接受电子邮件的普及率为83%,是各个应用中最高,而在实际企业电子邮件的应用中电子邮件系统太过冗余,许多繁复的功能自始至终未被使用,所以通过开发一个轻量级的系统来简化许多不必要的功能。本次课题面向的是企业内部邮件服务,通过本系统的实现可有效降低雇员相互沟通的成本,缩短沟通过程中所需时间,大幅提高效率,是具有一定广泛性的推广价值。本次课题基于Struts2技术的电子邮件的实现是使用了现阶段使用度较高的计算机语言——java,以及其中较为成熟的SSH框架开发而成的。数据库方面则选择使用了跨平台性较强的MySQL数据库。而整个课题中设计的邮件服务器则使用了开源且免费的ApacheJames邮件服务器。本论文论述了基于Struts2技术的电子邮件系统的整体背景、现阶段研究状况。对系统开发中所使用的语言、工具及涉及的相关技术进行一定程度的阐述。按照软件开发的周期对系统分析、初步设计、详细设计、具体代码实现以及系统测试的流程进行阐述。关键词:电子邮件;Java;MySQL;James邮件服务器ABSTRACTThroughjustafewyearsofdevelopment,theexchangeoflettershasbeenfurtherevolutionofemotionallettersfromentitieslaststeptoe-mailtoday,comparedwiththetraditionalway,theadvantagesofe-mailareobvious:convenient,fast,low-cost,etc.Thesehavebecomethereasonpeopleblitz.35th"StatisticalReportonInternetDevelopmentinChina"ChinaInternetNetworkInformationCenter(CCNIC)2015releasedinJanuaryshowedthattheprevalenceofmajorcorporateInternetapplications,sendandreceivee-mailpenetrationrateof83%,istheindividualapplicationofthehighestcorporatee-mailandintheapplicationoftheactuale-mailsystemistooredundant,manycomplicatedfunctionsthroughoutunused,sobydevelopingalightweightsystemtosimplifymanyunnecessaryfeatures.Theissueisintendedforinternalmailservice,byimplementingthissystemcancommunicatewitheachothereffectivelyreduceemployeecostsandshortenthetimerequiredforthecommunicationprocess,greatlyimproveefficiency,itistopromotethevalueofacertainuniversality.ThetasktoachieveStruts2technology-basede-mailistheuseofahigherstageofuseofcomputerlanguage--java,aswellasoneofthemorematureSSHframeworktodevelop.Databasesthenchoosetousethestrongcross-platformMySQLdatabase.ThewholeissueinthedesignofthemailserverusestheopensourceandfreeApacheJamesmailserver.Thispaperdiscussestheoverallcontextofthee-mailsystemStruts2technology,basedonresearchsituationatthisstage.Onthelanguageusedinthesystemdevelopment,toolsandrelatedtechnologiesinvolvedsomedegreeofelaboration.Accordingtothesoftwaredevelopmentcycleforsystemsanalysis,preliminarydesign,detaileddesign,thespecificcodeandsystemtestingprocesswillbeexplained.Keywords:E-mail;Java;MySQL;Jamesmailserver目录TOC\t"副标题,2,标题,1,标题特别,1"第一章前言 天津工业大学2015届本科生毕业设计(论文)参考文献[1]张宗耀.《计算机网络与办公自动化》.西安电子科技大学出版社大学学报,2005,29(4):29~32[2]LanSommerville.SoftwareEngineering.Addison-Wesley.SixEdition.[3]孙卫琴.精通Struts——基于MVC的java.web设计与开发.人民邮电出版社,2004,8.[4]戎伟.精通Struts——Java流行服务器、框架及工具整合应用.人民邮电出版社,2006,10.[5]罗时飞.精通Spring——深入J2EE开发核心技术.电子工业出版社,2008,1.[6]RodStephens.ExpertOne-on-OneVisualBasic2005DesignandDevelopment.WROX.2007[7]孙卫琴.精通Hibernate.电子工业出版社,2005,5.[8]SasbaPacbev.深入理解MySQL核心技术.中国电力出版社,2009,1.[9]刘中兵.精通Tomcat.清华大学出版社,2007,5.[10]东箭工作室.电子邮件完全手册.清华大学出版社,2006,1.[11]张玮.jQuery基础教程.人民邮件出版社,2008,5.[12]张孝祥.Java邮件开发详解.电子工业出版社,2007,4.[13]齐治昌等.软件工程(第二版)[M].高等教育出版社,2004:165~178.[14]郑明辉.基于UML的需求分析过程研究[J].微机发展,2004,5:50~53.[15]JeffSmith,AndrewC.Montz.EnhancedAIRNowDataCollectionUsingXMLandInternetTechnologies[J].DepartmentofEnvironmentalQuality.2008,12(11):10-15.[16]MartinFowler[美].金芝高.标准对象建模语言简明指南.清华大学出版社.[17]ArnoldDoray.BeginningApacheStruts:FromNovicetoProfessional[M].Apress.[18]Patton,R.[美].张小松.软件测试.机械工业出版社,2006,10.[19]LisaCrispin[美].孙伟峰.敏捷软件测试.清华大学出版社,2010,10.[20]陈汶滨.软件测试技术基础.清华大学出版社,2008,7.附录Ⅰ代码发送邮件代码SendMail.java:publicclassSendMail{ privateMailBeanmail=null; privateSessionsession=null; publicSendMail(MailBeanmail){ this.mail=mail; } /**邮件创建*/ publicMimeMessagecreateMimeMessage()throwsAddressException, MessagingException,UnsupportedEncodingException{ session=MailSession.createSession( "cn/edu/pdsu/service/mail/perties",mail.getAuth());//创建session MimeMessagemessage=newMimeMessage(session);//创建整体邮件 //设置邮件基本信息 setMimeMessageInfo(message); MimeMultipartmultipart=null; //创建什么都不含的邮件体(alternative) if(mail.getContent()!=null&&mail.getContent().length()>0) multipart=createAlternative(multipart); //创建含有内嵌资源的邮件体(related) if(mail.getResource()!=null&&mail.getResource().length()>0) multipart=createRelated(multipart); //创建含有附件的邮件体(mixed) if(mail.getFile()!=null&&mail.getFile().length()>0) multipart=createMixed(multipart); //添加multipart到邮件内容上 if(multipart==null) multipart=createAlternative(multipart); message.setContent(multipart); message.saveChanges(); returnmessage; } //创建什么都不含的邮件体(alternative) privateMimeMultipartcreateAlternative(MimeMultipartmultipart) throwsMessagingException{ multipart=newMimeMultipart("alternative"); MimeBodyParthtml=newMimeBodyPart(); html.setContent(mail.getContent(),"text/html;charset=UTF-8"); multipart.addBodyPart(html); returnmultipart; } //创建含有内嵌资源的邮件体(related) privateMimeMultipartcreateRelated(MimeMultipartmultipart) throwsMessagingException{ MimeBodyPartalternative=newMimeBodyPart(); alternative.setContent(multipart); MimeMultipartrelated=newMimeMultipart("related"); related.addBodyPart(alternative); //添加内嵌资源 related=addResource(related); returnrelated; } //添加内嵌资源 privateMimeMultipartaddResource(MimeMultipartrelated) throwsMessagingException{ Stringresources[]=mail.getResource().split(","); for(Stringres:resources){ MimeBodyPartimg=newMimeBodyPart(); FileDataSourcefds=newFileDataSource(res); img.setDataHandler(newDataHandler(fds)); img.setContentID(System.currentTimeMillis()+fds.getName()); related.addBodyPart(img); } returnrelated; } //创建含有附件的邮件体(mixed) privateMimeMultipartcreateMixed(MimeMultipartmultipart) throwsMessagingException,UnsupportedEncodingException{ MimeBodyPartrelated=newMimeBodyPart(); //添加multipart到邮件内容上 if(multipart==null) multipart=createAlternative(multipart); related.setContent(multipart); MimeMultipartmixed=newMimeMultipart("mixed"); mixed.addBodyPart(related); //添加附件 mixed=addAttachment(mixed); returnmixed; } //添加附件 privateMimeMultipartaddAttachment(MimeMultipartmixed) throwsMessagingException,UnsupportedEncodingException{ Stringfiles[]=mail.getFile().split(","); for(Stringfile:files){ MimeBodyPartattachment=newMimeBodyPart(); FileDataSourcefds=newFileDataSource(file); attachment.setDataHandler(newDataHandler(fds)); attachment.setFileName(MimeUtility.encodeText(fds.getName(), "UTF-8","Q")); mixed.addBodyPart(attachment); } returnmixed; } //设置邮件具体信息 privatevoidsetMimeMessageInfo(MimeMessagemessage) throwsAddressException,MessagingException, UnsupportedEncodingException{ if(mail.getFrom()!=null&&!"".equals(mail.getFrom())){ message.setFrom(newInternetAddress(encode(mail.getFrom())));//设置发件人 message.setSender(newInternetAddress(encode(mail.getFrom()))); } if(mail.getTo()!=null&&!"".equals(mail.getTo())) message.setRecipients(RecipientType.TO, InternetAddress.parse(encode(mail.getTo())));//设置收件人 if(mail.getCc()!=null&&!"".equals(mail.getCc())) message.setRecipients(RecipientType.CC, InternetAddress.parse(encode(mail.getCc())));//设置抄送人 if(mail.getBcc()!=null&&!"".equals(mail.getBcc())) message.setRecipients(RecipientType.BCC, InternetAddress.parse(encode(mail.getBcc())));//设置密送人 if(mail.getSubject()!=null&&!"".equals(mail.getSubject())) message.setSubject(mail.getSubject(),"UTF-8"); //是否紧急 if(mail.isExigence()){//指定邮件的优先级,1:紧急,3:普通,5:缓慢 message.setHeader("X-Priority","1"); }else{ message.setHeader("X-Priority","3"); } message.setSentDate(mail.getDate()); } //对中文进行编码 privateStringencode(Stringmailadd)throwsUnsupportedEncodingException{ Patternp=Ppile("(\"(.*?)\"?<)");//查找所有("中文"<)的格式 StringBuffersb=newStringBuffer(); Matchermatcher=p.matcher(mailadd); while(matcher.find()){ matcher.appendReplacement(sb, MimeUtility.encodeText(matcher.group(2),"UTF-8","B") +"<"); } matcher.appendTail(sb); System.out.println(sb.toString()); returnsb.toString(); } /** *发送邮件 */ publicvoidsendMail()throwsAddressException,MessagingException, UnsupportedEncodingException{ MimeMessagemessage=createMimeMessage(); //发送消息 Transport.send(message); } /** *发送指定邮件体的邮件 */ publicvoidsendMail(MimeMessagemessage)throwsAddressException, MessagingException,UnsupportedEncodingException{ //发送消息 Transport.send(message); }}收取电子邮件代码ReceiveMail.java:publicclassReceiveMail{ privateStringhost="localhost"; privateStringusername=null; privateStringpassword=null; privateIMAPStorestore=null; privateMailInfomailInfo=null; privateIMAPFolderfolder=null; privatebooleansaveAttachments=false;//是否保存附件 privateStringattachmentName=null;//附件的名称 privateStringfolderName=null;//邮件夹名称 privateStringpath=null;//附件保存的位置 privateStringBuffercontent=newStringBuffer(); privateStringBufferfilename=newStringBuffer(); /** *初始化接收邮件的构造方法 * *@paramusername *用户名 *@parampassword *密码 *@throwsMessagingException */ publicReceiveMail(Stringusername,Stringpassword) throwsMessagingException{ this.username=username; this.password=password; mailInfo=newMailInfo(); connection();//连接到邮件服务器 } //创建与服务器的连接 privatevoidconnection()throwsMessagingException{ Sessionsession=MailSession .getInstance("cn/edu/pdsu/service/mail/perties"); store=(IMAPStore)session.getStore(); //连接到邮件服务器 store.connect(host,username,password); } //打开指定的收件夹folderName,model文件夹打开模式 publicIMAPFolderopenFolder(StringfolderName,intmodel) throwsMessagingException{ this.folderName=folderName; folder=(IMAPFolder)store.getFolder(folderName); if(folder.exists()) folder.open(model); else{ folder.create(Folder.HOLDS_MESSAGES); folder.open(model); } returnfolder; } //保存邮件到指定的收件夹中 publicbooleancopyMessage(Message[]message,StringfolderName) throwsMessagingException{ openFolder(folderName,Folder.READ_WRITE);//打开指定的邮件夹 folder.appendMessages(message);//将邮件追加到指定的邮件夹中 returnfalse; } //移动邮件到指定的邮件夹下 publicvoidmoveMessage(StringsrcFolder,StringdestFolder,long[]uid) throwsMessagingException{ IMAPFoldersrc=openFolder(srcFolder,Folder.READ_WRITE); IMAPFolderdest=openFolder(destFolder,Folder.READ_WRITE); Message[]messages=src.getMessagesByUID(uid); src.copyMessages(messages,dest);//复制邮件到指定的邮件夹中 src.setFlags(messages,Flag.DELETED.getFlag(),true);//将源邮件夹中的邮件设置为删除 if(dest.isOpen()){//关闭目标邮件夹 dest.close(true); } if(src.isOpen()){//关闭目标邮件夹 src.close(true); } } //彻底删除邮件 publicvoiddeleteMessage(StringfolderType,long[]uid) throwsMessagingException{ IMAPFolderfolder=openFolder(folderType,Folder.READ_WRITE); Message[]messages=folder.getMessagesByUID(uid); folder.setFlags(messages,Flag.DELETED.getFlag(),true);//将源邮件夹中的邮件设置为删除 if(folder.isOpen()){//关闭目标邮件夹 folder.close(true); } }} 附录Ⅱ文献翻译英文文献Struts2introductionStruts2isthenextgenerationofStrutsproducts.

ThenewStruts2frameworkismergedwiththetechnologyStrutsbasedonWebWorkand[3]..

ThenewStruts2architectureandthearchitectureofStruts1varygreatly.Struts2webworkasthecore,theinterceptormechanismtodealwiththeuser'srequest,thisdesignalsomakesbusinesslogiccontrollercantotheservletAPIcompleteoff,sotheStruts2canbeunderstoodaswebworkofupdatedproducts.

BecauseStruts2andWebWorkhavemuchtochange,butonlyalittleofthechangeofStruts2relativetoStruts1.ThroughtheaboveunderstandingofthestructureofStruts2,wefoundthatStruts2hasmadegreatimprovementonStruts1..

Mainlyinthefollowingaspects:(1)intheimplementationoftheAction:Struts1requiresthatitbeunifiedtoexpandfromtheActionclass,whiletheStruts2canbeanordinaryPOJO.(2)threadmodel:Action'sStruts1worksinsingletonmode,andaActioninstancehandlesallrequests.

ActionStruts2isarequestforaninstanceofthe.

Thereisnothreadsafeproblem.(3)Servletdependency:theActionStruts1dependsonAPIServlet,suchastheparametersoftheexecuteActionmethodincludingrequestandresponseobjects.

Thismakestheprogramdifficulttotest..

ActionServletnolongerdependsonAPIStruts2,isconducivetotesting,andtoachieveTDD.(4)thepackagerequestparameter:theparametersoftheActionFormobjectencapsulationrequestareenforcedinStruts1.

Struts2canchoosetousethePOJOclasstoencapsulatetherequestparameter,ordirectlyusetheActionattribute.(5)theexpressionlanguage:Struts1integratesEL,buttheELsupportsthecollectionandtheindexisnotstrong,Struts2integratesOGNL(GraphNavigationLanguageObject).(6)thebindingvaluetotheviewtechnology:Struts1usesthestandardJSP,Struts2usestheValueStacktechnology.(7)typeconversion:theActionFormoftheStruts1usestheattributeoftheStringtype.

Struts2useOGNLconversion,moreconvenientuse.(8)datavalidation:Struts1supportsthecovervalidatemethodorusetheValidatorframework.

Struts2supportsrewritingthevalidatemethodortheverificationframeworkusingXWork.(9)thecontrastofActionexecutioncontrol:Struts1supportseachmoduletoarequestprocessing,butallActioninthemodulemustsharethesamelifecycle.

Struts2issupportedbytheinterceptorstacktocreatedifferentlifecycleforeachAction.SpringintroductionSpring[5]RodJohnsonOne-on-OneJ2EEDesignandDevelopment[6]Expertinabooktoexplainthespecificimplementationofthedesignideas.

ThespringframeworkJ2EEplatformfordeveloperstoprovideisan"objectmanagementtechnology,isfordeveloperstosolvebetweenthelifecycleofanobject,theobjectdependenciesestablished,theobjectcacheimplementationaspectsincludingmanagementtechnology.Thespringframeworkisalightweightinversionofcontrol(IOC)technologyandorientedviewprogramming(AOP)technologyofcontainerframework,thespringframeworkofIOCtechnologyinJ2EEplatformadvocatedbythecontainertorealizeobjectlifecyclemanagementcouldbeachieved,andtheuseofAOPtechnologyinthespringframeworkinJ2EEplatformadvocatedtheseparationofapplicationsystembusinesslogiccomponentsandgeneraltechnicalservicescomponentcanbeachieved.

Theapplicationsystemdeveloperscanachievethedesignandimplementationof"decoupling"and"outofthevessel"afterapplyingSpringframeworkintheapplicationsystem..TheSpringframeiscomposedof7modulesthatarewelldefinedandindependent..HibernateintroductionHibernateisabridgebetweentheapplicationofJavaandthedatabase,throughthesimpleencapsulationofJDBC,Javaprogrammerscanuseorientedobjectthinkingoperationdatasheet,nolongerconsiderthedataaccessdetails,canfocusonthedevelopmentofbusinesslogic,itoflayeredsoftwaredofurtherrefinement,separatethedatapersistenceandbusinesslogicanddatabase,forsoftwaremaintenance[7].

HibernatecanbeappliedinanyuseofJDBCoccasionscannotonlyusedintheJavaclientprogram,canalsobeusedintheservletandJSPWebapplication,isthemostrevolutionary,hibernatecanreplaceCMPinapplicationofEJBofJ2EEarchitecturetocompletethetaskofdatapersistence.MyEclipsedevelopmenttoolsEclipseisanopensource,Javabasedextensibledevelopmentplatform.

Initsowncase,itisjustaframeworkandasetofservicesforbuildingthedevelopmentenvironmentthroughtheplug-incomponents.

Fortunately,Eclipsecomeswithastandardplug-inset,includingJavadevelopmenttools(DevelopmentToolsJava,JDT).Eclipsealsoincludestheplug-indevelopmentenvironment(plugindevelopmentenvironment,thePDE),thecomponentmainlyaimedatsoftwaredeveloperswhowanttoextendeclipse,becauseitallowsthemtobuildtoolsthatintegratedseamlesslywiththeeclipseenvironment.MyEclipseisaverygoodforthedevelopmentofJava,J2EEEclipsePlug-inset,MyEclipsefunctionisverypowerful,verybroadsupport,especiallytheKaiyuanproductsupportisverynice.

MyEclipseenterpriseworkbench(MyEclipseenterpriseworkbench,referredtoasMyEclipse)isanextensionoftheeclipseide.Byusingit,wecaninthedatabaseandtheJavaEEdevelopment,publishingandapplicationprogramserverintegrationgreatlyimproveworkefficiency.

ItisafeaturerichJavaEEintegrateddevelopmentenvironment,includingcompletecoding,debugging,testingandreleasefunctions,completesupportHTML,Struts,JSP,CSS,Javascript,SQL,Hibernate.MySQLintroductionMySQLisarealmulti-user,multi-threadedSQLdatabaseserver[8].

SQL(StructuredQueryLanguage)isthemostpopularandstandardizeddatabaselanguageintheworld..

MySQLisaclient/serverarchitecture,whichconsistsofaserverGuardianprogrammysqldandalotofdifferentclientprogramsandlibraries.

SQLisastandardizedlanguage,itmakesstorage,updateandaccessinformationeasier.

Forexample,youcanusetheSQLlanguagetoretrieveproductinformationandstorecustomerinformationforawebsite,whileMySQLisfastandflexibletoallowyoutostoretherecordandimage.ThemaingoaloftheMySQLisfast,robustandeasytouse.

InitiallybecauseweneedsuchaSQLserver,itcandealwithanyexpensivehardwareplatformprovidesdatabasemanufacturersinanorderofmagnitudeoflargedatabases,butfaster,MySQLdeveloped.MySQLisafast,multi-threaded,multi-userandrobustSQLdatabaseserver.

TheMySQLserversupportstheuseofkeytasks,heavyloadproductionsystems,andcanalsobeembeddedinalargeconfigurationsoftwareto.2.6TomcatserverprofileTomcatisafreeopensourceSerlvetcontainer,whichisacoreprojectoftheApacheprojectoftheJakartafoundation,developedbyApache,Sunandsomeothercompaniesandindividuals.

WiththeparticipationandsupportofSun,thelatestServletandJspspecificationcanalwaysbereflectedinTomcat.

Tomcatisstableindependentofwebserverandservletcontainer,however,thefunctionofthewebserverisnotasgoodasthemanymorerobustwebserver,suchasApacheWebserver(forexample,Tomcatwithoutalotofselectivemodule).

However,Tomcatisafreeopensourcesoftware,andtherearemanyexpertscommittedtoitsdevelopment.Tomcatisasmalllightweightapplicationserver[9],inwhichsmallandmediumsystemsandconcurrentaccesstotheuserisnotalotofoccasionsisgenerallyused,isthedevelopmentandcommissioningoftheJSPprogrampreferred.

Forabeginner,thiscanbeconsideredwhenconfiguringaApacheserveronamachinethatcanuseittorespondtorequestsforaccesstoaHTMLpage.

Infact,theTomcatpartistheApacheserverextension,butitisrunningindependently,sowhenyourunTomcat,itisactuallyrunningindependentlyasanindependentprocesswithApache.JamesmailserverprofileApacheJavamailservergenerallyreferstotheApacheorganizationdevelopmentofJames[10],itisalightweight,safe100%pureJavaservertoachieve.

NotonlythatJamescanalsoprovidemorefunctionality,thankstoJamesprovidesaplug-inarchitectureandprotocolsMailetinfrastructuretogiveus,itcanletususeservletswebservermailprocessing.

Emailserviceeverywhere,beganasaDARPA(DefenseAdvancedResearchProjectsAgency)aplanandthefinaldevelopmentfortheInternet,butJamesbecamethebreakthefirstapplicationofthetraditionalrules.JavaApachea.k.a.The(ApacheJamesJava)isa100%SMTPandPOP3mailserverrealized,andhealsoachievedthefunctionoftheNNTPnewsserver.

Jameswasdesignedtobeacomplete,portable,corporatemailenginesolution,andhewasfullybasedonthecurrentlyavailableopenprotocol.

Jamesisamailapplicationplatform.

TheApacheorganizationprovidesasetofJavaAPImailetAPI,usingMailetAPI,youcanaccordingtotheirownneedswiththeJavalanguagewritingcodetothemailpersonalizedtreatment.

Mailetcangenerateanautomaticreply,updatethedatabase,stopspam,establishthenewsfile,oranyofthefunctionswecanimagine.

Mailetiscloselyrelatedtothemessageadapter(Matcher),amessageadaptercanjudgewhetherMailettoamailserver.Jameswasdesignedtoachieveseveralgoalsoftheobjectives.

Forinstance,itusestheJavadevelopmenttosuitthebiggestlightline,itprovidesalotofsecurityfeaturesforprotectingtheserverrunningenvironmentsecurityalsoprovidessecurityservices.

Jamesismultithreaded,itusesalotofAvalonarchitecturetoprovidethefunctionality.Jamesprovidesaperfectservice,includingafullyoperationalEmailserver.

TheseservicesareprimarilyMactherandMailetAPIimplementations,thesetwoAPIprovidestheEmailinspectionandprocessingfunctions.

Jamessupportstandarde-mailprotocol(SMTP,POP3,IMAP).Italsoprovidessomeadditionalfunctionality.Itusesthelooselycoupleddesignplug-inabstractedfromtheprotocolmessageframe.

Thisdesignisveryuseful,sothatwecantakeJamesasacommonmessagingserverorprovidesupportforinstantmessaging.JamesamoreimportantdesigngoalistoproposetheMailetconcept,Mailetprovidesafulllifecyclefordevelopingemailapplications.

Ofcourse,youcanalsouseotherMTA(messagetransferagent)here,suchassendmailtodoweneedtoprovideaprocedurecallandtransmitthedatatoittocompletethework.However,JameshasofferedamoresimpleanduniversalAPItoperformthesetasks.二、中文翻译Struts2简介Struts2是Struts的下一代产品。是在Struts和WebWork的技术[3]基础上进行了合并,全新的Struts2框架。其全新的Struts2的体系结构与Struts1的体系结构的差别巨大。Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts2可以理解为WebWork的更新产品。因为Struts2和Struts1有着太大的变化,但是相对于WebWork,Struts2只有很小的变化。通过上面对Struts2体系结构[4]的了解,我们发现Struts2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论