基于java的邮件系统设计毕业论文.docx_第1页
基于java的邮件系统设计毕业论文.docx_第2页
基于java的邮件系统设计毕业论文.docx_第3页
基于java的邮件系统设计毕业论文.docx_第4页
基于java的邮件系统设计毕业论文.docx_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

基于java的邮件系统设计毕业论文目录1 绪论11.1研究背景11.2系统开发目的和意义11.3现状和发展趋势22系统采用的关键技术32.1邮件传输原理和相关协议32.1.1邮件传输原理32.1.2邮件协议42.2JavaMail API52.2.1JavaMail API的核心类62.2.2JAF框架72.3JSF框架72.3.1什么是JSF72.3.2体系结构82.3.3JSF生命周期82.4Primefaces类库92.5Facelets模板化语言102.6JPA标准102.7Seam框架113系统分析133.1需求分析133.1.1用户角色定义133.2系统功能分析143.2.1注册登录模块143.2.2编辑、解析邮件模块153.2.3发送、接收邮件模块163.2.4邮件管理模块173.2.5账号管理模块183.2.6辅助功能模块183.3总体架构分析183.3.1系统架构183.3.2Web架构分析194系统设计214.1总体设计214.1.1模块设计214.1.2数据库的概念结构模型设计224.2详细设计254.2.1项目共用类的设计254.2.2登录注册设计274.2.3邮件管理模块的设计304.2.4账号管理模块设计315系统实现325.1系统环境要求325.2环境的搭建325.2.1下载相关的依赖包325.2.2环境的配置335.3关键技术问题的具体实现375.3.1RFC822邮件格式375.3.2编辑一封复杂邮件的实现405.3.3发送接收邮件的实现455.3.4解析、展示邮件的实现465.4各功能模块的实现效果526系统主要功能测试566.1注册登录模块测试566.2发送、接收模块测试586.3邮件管理模块测试59结论62参考文献63致谢641 绪论1.1 研究背景随着社会的发展,科技的进步,作为信息载体的计算机日益显露出其举足轻重的地位。当今社会已步入了信息社会,知识经济将成为新世纪的主导产业。人们传统的联系方式也在不断的被改变。伴随着Internet的发展,电子邮件以其使用简易、投递迅速、收费低廉,易于保存、全球畅通无阻等等优点被广泛地应用,它使人们的交流方式得到了极大的改变。电子邮件已是人们沟通、交流的重要工具。电子邮件是Internet应用服务之一,通过网络,可以以非常低廉的价格、非常快速的方式,与世界任何一个网络用户联络。这些电子可以包含文字、图像、声音或者其他多么媒体信息。电子邮件是整个互联网行业重要组成部分,也是使用最多的互联网服务。根据中国互联网网络信息中心(CNNI)2011年发布的中国互联网网络发展状况统计报告,2011年中国网民即时通讯使用率为80.9%,其中电子邮件的使用率为47.9%,可以明显的看出在现在多样化的网络通讯中,电子邮件依然是网民最为常用的通讯沟通的方式,是网民不可或缺的需要。电子邮件系统经过几十年的发展,已经形成了完善的技术体系。用户最初只能通过Outlook,Foxmail等客户端软件来收发自己的邮件,这些客户端软件可以为用户提供很好看的界面,很多强大的功能,但它们都有个致命的缺点,都依赖于系统,用户要在计算机装了客户端软件才能收发邮件,当更换系统或者计算机的时候还有重新安装配置一下软件,给用户带来的极大的不便,不能满足用户随时随地的收发邮件的需要。所以能够随时随地让用户收借邮件成为了邮件客户端的最需要的解决的问题。WebMail的出现彻底的解决的这个问题,使用WebMail收发邮件只需通过浏览器访问相关的邮件服务器,无需安装配置邮件客户端程序,真正的实现了随时随地收发邮件。 1.2 系统开发目的和意义传统的邮件客户端可以能为用户提供很多强大功能,同时能够为用户展示方便好看的界面,但它最致命的确定就是不能满足用户随时随地收接邮件。而WebMail彻底的解决这个问题,为用户通过快捷、方便的收接邮件的方式。随着互联网的发展,移动办公和分布式办公越来越普及,使用Web方式收接邮件成为用户的主要方式,但是现在大部分WebMail系统都没能够像传统客户端软件那样富有的展现数据,用户体验相对比较差。为此需要开发一个具有富有界面的WebMail客户端系统。本次设计开发的主要目的和意义是为用户提供一个具有富有界面的WebMail客户端系统,使用用户能够通过富有的界面随时随地收接邮件,从而提升用户体验。1.3 现状和发展趋势相对传统邮件客户端软件,WebMail具有更快捷、更方便的优势,也毫无疑问取代传统邮件客户端软件成为用户收接邮件的最主要的方式。现在使用较多的WebMail系统有两种:一种是专业的免费邮件服务商提供的如 163邮箱、qq邮箱等大规模的分布式的电子邮件客户端系统;另一种是以企业自己域名结尾的真正属于自己的邮件客户系统。用户可以通过这些web客户端访问邮件服务器来收接邮件,同时也可以通过这些web客户端对邮件进行管理,给用户带来很多方便。这些WebMail系统都致力于为用户提供更快捷、更方便、更安全的访问收接邮件的方式,但随着web技术的发展,用户需求的变化,基于web的各种应用都逐渐注重用户的体验,为用户提供美好的富有界面。WebMail系统也一样也在逐渐追求能够像C/S架构的客户端软件一样为用户提供一个富有美好的用户界面。实现WebMail系统的技术有很多,其中JavaMail 是最常用的一种技术之一。JavaMail为我们提供访问邮件服务器的API,通过这些API我们可以很容易实现收接邮件,有了JavaMail我们只需更多关心对邮件编写、展现很管理这些业务逻辑的部分,给开发者带来很大方便,所以JavaMail广受开发者的欢迎,是用于开发WebMail系统的重要技术之一。2 系统采用的关键技术本邮件系统选取比较新的JSF(Primefaces)+Seam3+JPA(Hibernate)架构来设计开发系统。其中JSF是表示层技术,负责页面展示,系统中选取Facelets作为JSF的展示模板,同时使用基于JSF的Primefaces富有组件为了给用户提供一个富有界面。在持久化层使用了JPA来访问数据库,其中使用了Hibernate提供的实现。Seam3在整个项目中充当一个资源的管理者实现对各种JavaBean的管理。2.1 邮件传输原理和相关协议一个电子邮件系统具有如图2.1所示的三个主要组成构件,这就是用户代理、邮件服务器,以及邮件发送协议(如SMTP)和邮件读取协议(如pop3)。图2.1 电子邮件的最主要的组成构件2.1.1 邮件传输原理首先,发件人使用户代理编写一份邮件,并通过用户代理使用SMTP协议发送到发送方得邮件服务器上,用户代理充当SMTP客户,而发送方服务器充当SMTP服务器。SMTP服务器接收到邮件后,就把邮件历史存放在邮件缓存队列等待发送;到要发送时,发送方服务器与接收方服务器建立TCP连接,使用SMTP协议发送邮件,发送方服务器充当STMP客户端,接收方服务器充当SMTP服务器,接收方服务器接收到邮件后把邮件放入用户的邮箱中等待收件人的来读取,此时收件人可以通过用户代理使用pop3协议从接收方服务器读取邮件,这时候用户代理充当POP3客户,接收服务器充当POP3服务器。邮件发送和接收的流程就是这样,如图2.1所示。2.1.2 邮件协议使用电子邮件进行通信,就需要为之提供协议,常用的协议有:SMTP、POP、IMAP、MIME等协议,下面就是就这些相关协议的监督介绍:1、 SMTP协议简单邮件传输协议(Simple Mail Transfer Protocol),RFC821规定了该协议的所有细节。用来在Internet上传电子邮件,目标是向用户提供高效、可靠的邮件传输。SMTP的一个重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式的传送。SMTP是个请求/响应协议,命令和响应都是基于ASC文本。在TCP协议25号端口监听连接请求,并与远端邮件服务器建立SMTP连接。SMTP提供了一种邮件传输的机制,当收发双方都在一个网络上时,可以把邮件直接给对方;当对方不在同一个网络上时,需要通过一个或几个中间服务器转发。SMTP首先由发件方提出申请,要求与接收方SMTP建立双向的通信连接,收件方可以是最终的收件人也可以是中间转发的服务器。为了保证回复命令的有效,SMTP要求发送方必须提供收件方得服务器及有效。收件方服务器确认可以建立连接后,双方就可以开始通信。2、 POP协议邮局协议(Post Office Protocol),目前POP最常用的版本为第三本版,即众所周知的POP3.该协议是在RFC1939中定义的,用于电子邮件的接收。用户可以通过有POP服务功能的主机传送及接收电子邮件,POP3提供了快捷的邮件下载服务,用户可以利用POP3把邮箱的信下载到PC上进行离线阅读。一旦邮件进入PC机的本地硬盘,就可以选择把邮件从服务器上删除,然后脱离与Internet的连接并选择在任何时候阅读已经下载的邮件。POP协议的最大的优点是不需要与网络保持不间断的连接,就可以收取电子邮件。POP3采用C/S工作模式,使用TCP的110端口。当客户机需要服务时,首先是认证过程,确认客户机提供的用户名和密码,子啊认证通过后便转入处理状态,在此状态下用户可以收取自己的邮件或邮件的删除,在完成相应的操作后客户机便发出QUIT命令,此后便进入更新状态,将删除标记的邮件从服务器端删除,到此,整个POP过程完成。3、 IMAP协议Internet信息传输协议(Internet Message Access Protocol),目前版本为第4版,所以也被称为IMAP4。在RFC2060中被定义,是邮件接收更高级的协议。IMAP被设计成POP的超集,是POP更复杂的一种选择。除了POP提供的功能外,IMAP提供摘要浏览功能,可以让用户在阅读完所有的邮件到达时间、主题、发送、大小等信息才做出是否下载的决定。与POP协议相比,IMAP最大的邮件优点是用户可以在邮件服务器存储邮件而不必下载。但IMAP会加重邮件服务器的负荷,需要服务接收新邮件,发送邮件给请求的用户,并在多个文件夹中为每个用户维护这些邮件。而这些需要集中备份,因而长期下去用户的文件夹会变的越来越大,但磁盘空间用光时,就不能继续使用了。而使用POP协议时删除已保存邮件,可以解除服务器的负重。4、 MIME协议多用途Internet邮件扩充协议(Multipurpose Internet Mail Extension Procotol)。RFC822、RFC2045、RFC2046、RFC2047都涉及了MIME协议。MIME并不是用于传送邮件的协议,它作为多用途的邮件扩展定义的邮件内容格式:信息格式、附件格式等。SMTP只是定义了Internet传输ASC文本的标准,要传输嵌入图像、声音和视频等非文本信息,就得另行制定标准。作为对SMTP的补充,MIME规定了通过SMTP协议传输非文本电子邮件附件的标准。其实质是将图像、声音和视频等二进制格式信息首先转化成ASC文本,然后随同电子邮件发送出去。接收方接到这样的电子邮件后,首先根据首部的说明进行逆转化,将包装成ASC的文本还原成原来的格式。目前,MIME的用途早已超越了收发电子邮件的范围,成为在Internet上传输多媒体信息的基本协议之一。2.2 JavaMail API对一般的电子邮件使用者来说,电子邮件只是非常简单的执行邮件传输。但是对于编程人员来讲,电子邮件的打包、传输、发送和接收都很复杂的,不仅要涉及很多协议,并且包含对不同协议的混合使用。J2EE平台通过JavaMail API提供标准的邮件服务。JavaMail API允许在应用程序中以独立于平台、独立于协议的方式收发邮件。JavaMail API的设计是为了收发信息提供与协议无关的访问。它提供平台无关的和协议无关的框架来构建基于Java技术的邮件和消息传递应用。2.2.1 JavaMail API的核心类JavaMail包含的主要的类中,构成API核心类包括:1、 Session类:定义一个基本的邮件会话,通过该会话可以让收发邮件的其他工作持续进行。Session对象利用java.util.Properties对象获取诸如邮件服务器名、协议等消息,利用Authenticator对象获取用户认证信息。2、 Message类:定义了邮件消息的模型,收发邮件具体操作消息时,使用其子类MIMEMessage类。3、 Address类:定义了邮件地址,收发邮件具体操作时,一般使用其子类InternetAddress类。4、 Transport类:定义了发送邮件消息的方式,它的子类是用具体的邮件协议发送消息,如常用的SMTP协议。5、 Store类:定义了接收、存储邮件消息的方式,它的子类使用具体的邮件协议接收消息,如使用POP3协议。6、 Folder类:定义了存储邮件消息的文件夹模型,它的子类提供了具体的邮件协议的文件夹实现。JavaMail协议实现层:协议层主要是实现API层中得Transport和Store服务,如图显示了它们之间的关系。图2.2为JavaMail邮件消息处理过程,客户使用POP3协议是实现接收邮件,使用SMTP协议类发送邮件。图2.2 JavaMail邮件处理过程2.2.2 JAF框架JAF是指(JavaBean Activation Framework)JavaBean激活框架,是一种激活服务。激活服务是一个软件组件,负责把负责其他处于非活动状态的软件置于活动内存状态。在邮件程序中主要用于处理电子邮件消息中发送的MIME类型数据,是不可以缺少的组成部分。JAF将MIME类型标示的数据映射为支持特定数据类型操作的Java对象。JAF支持各种MIME类型,JavaMail API必须为表表2.1所示的Java类型提供对应的MIME数据类型。表2.1 MIME类型到Java类型的映射MIME类型Java类型Text/Plainjava.lang.StringMernet.MIME.MultipartMessage/rfc822Jernet.Mime.MessageJAF将MIME数据类型的支持集成到Java平台中。可以使用javax.activation.DataHandler将MIME字节流和Java对象相互转换。可以指定JavaBean组件在MIME数据上进行操作,例如查看或编辑数据。JavaMail使用JAF处理电子邮件消息中包括的数据。2.3 JSF框架2.3.1 什么是JSFJavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架,是一种表示层技术。它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化了开发。JSF 还通过将良好构建的模型-视图-控制器 (MVC) 设计模式集成到它的体系结构中,确保了应用程序具有更高的可维护性。JSF有个特定的目标:使Web开发变得更快、更容易。它允许开发人员基于组件、事件、后台bean已经它们之间的交互来进行思考,不是基于请求、响应和标记来考虑问题。换句话说它屏蔽了Web开发大量的复杂性,使开发人员能够集中与他们最擅长的事情:开发应用系统。2.3.2 体系结构JSF 的主要优势之一就是它既是 Java Web 应用程序的用户界面标准又是严格遵循模型-视图控制器(MVC)设计模式的框架。用户界面代码(视图)与应用程序数据和逻辑(模型)的清晰分离使 JSF 应用程序更易于管理。为了准备提供页面对应用程序数据访问的 JSF 上下文和防止对页面未授权或不正确的访问,所有与应用程序的用户交互均由一个前端FacesServlet(控制器)来处理。JSF的体系结构如图2.3所示图2.3 JSF的体系结构2.3.3 JSF生命周期FacesServlet 充当用户和 JSF 应用程序之间的纽带。它在明确限定的JSF生命周期(规定了用户请求之间的整个事件流)的范围内工作。1、 当JSF页面上的一个事件发生时(比如:用户单击了一个按钮),事件通知通过HTTP发往服务器。服务器端使用FacesServet这个特殊的Servlet处理该通知。2、 FacesServlet一接收到用户的请求就创建一个FacesContext对象(JSF上下文,它存放了应用程序的所有数据)。在处理过程中,主要修改的就是这个FaceContext对象。3、 接着就是处理过程,处理器是一个叫作Lifecycle的对象。FacesServet把控制权转交给Lifecycle对象。该对象分6个阶段来处理FacesContext对象以生成响应,最后将响应发回客户端。Lifecycle对象处理页面请求所需要的一系列动作称为请求处理生命周期。过程状态图如图2.4所示。图2.4 JSF生命周期状态图图2.5 JSF简单例子图2.5所示例子有一个简单的JSF表单和一个后台Javabean,表单通过EL表达式和后台的Javabean绑定,比如id为helloinput的h:inputText的组件的值很helloBean的value属性绑定,当value的值改变了,helloinput的值也会改变,反过来也一样。还有就是h:commanButton加了一个监听器,这监听器和后台Javabean的add方法绑定,当单击按钮提交表单时,到调用应用程序阶段的时候就执行Javabean的add方法。使用JSF处理一个请求就是这么简单,JSF屏蔽servlet的api,让开发人员把重心放在业务逻辑的处理上。2.4 Primefaces类库JSF正确来说是SUN提前出来一种标准,有多种实现包括apache的MyFaces、Jboss的Richfaces、Icefaces等,其中Primefaces就是其中一种,相比之下Primefaces提供更多美好的组件,所以在本次设计中选择了用Primefaces开发富有界面。PrimeFaces是一个用于提高JSF Web应用程序开发效率的开源类库。主要由三个模块组成:1、 UI Components:PrimeFaces UI模块提供了拥有Rich Web用户体验的各种JSF组件。PrimeFaces使用Yahoo UI库做为默认的客户端框架。PrimeFaces提供的JSF组件能够处理JavaScript Rendering和如何在服务器端与JSF集成。PrimeFaces UI组件包括:HtmlEditor、ImageCropper、Dialog、AutoComplete、Flash based Chart等。并支持通过Ajax更新页面。2、 Optimus模块提供简化JSF开发的解决方案。Optimus提供基于Google Guice IOC容器的注释来代替XML配置和一个XML-less Navigation Handler能够让你减少基于XML配置JSF Navigation的需要。此外Optimus还支持利用JPA实现数据持久化;将DataTable的内容导出成Excel与PDF。支持安全扩展。3、 FacesTrace模块提供跟踪JSF Web应用程序的各种工具包括:JSF LifeCycle可视化查看器;性能跟踪器; Log4J适配器;FacesMessage监听器;组件树可视化查看器。要再JSF项目上使用Primefaces要确保JDK为1.5以上,JSF为2.0以上,然后加入相关的jar包就可以正常使用,不需要配置。2.5 Facelets模板化语言Facelets是一种模板化的语言,与 JSP 不同,Facelets 这个模板化语言,从构建之初,就考虑了 JSF 的组件生命周期。使用 Facelets,生成的模板会构建组件树,而不是 servlet。这就允许更好的重用,因为可以把组件组合成另一个组件。Facelets比JSP更适合JSF,使用Facelets作为JSF的显示技术,有效解决了JSP和JSF生命周期混乱的问题,同时达到减少了编写定制标记才能使用 JSF 的需求比如输出html,使用Facelets还有一个好处就是可以使用模板,由于Facelets给JSF带来这么大的便利,在JSF2.0开始,Facelets就是取代JSP作为JSF的显示技术。使用JSF2.0以上的本版无需任何配置就可以直接使用Facelets,毫无疑问本次设计也是使用Facelets作为JSF的显示技术。2.6 JPA标准 JPA(Java Persistence API)作为Java EE 5.0平台标准的ORM规范,将得到所有Java EE服务器的支持。Sun这次吸取了之前EJB规范惨痛失败的经历,在充分吸收现有ORM框架的基础上,得到了一个易于使用、伸缩性强的ORM规范。从目前的开发社区的反应上看,JPA受到了极大的支持和赞扬,JPA作为ORM领域标准化整合者的目标应该不难实现。JPA通过JDK 5.0注解或XML描述对象关系表的映射关系,并将运行期的实体对象持久化到数据库中,图2.6很好地描述了JPA的结构。图2.6 JPA的结构JPA由EJB 3.0软件专家组开发,作为JSR-220实现的一部分。 目前Hibernate 3.2、TopLink 10.1.3以及OpenJpa都提供了JPA的实现,本次设计选择了Hibernate提共的实现。JPA的总体思想和现有Hibernate、TopLink,JDO等ORM框架大体一致。总的来说,JPA包括以下3方面的技术: 1、 ORM映射元数据,JPA支持XML和JDK 5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。 2、 JPA 的API,用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。3、 查询语言,这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。2.7 Seam框架Seam全称是Jboss Seam,是“Java EE 5.0的一个轻量级的框架”。它在Java EE 5.0框架的上层,为所有的在企业Web应用中的组件提供了一个统一的、易于理解的编程模型。它同样使基于状态的应用和业务流程驱动的应用的开发易如反掌。换句话说,Seam致力于开发者生产力和应用扩展性,注重便捷式的开发。所以Seam开发项目一般看起来很简单、很直接,无分层之苦恼。相应的也会让程序员把精力主要放在业务逻辑组件的实现上,而不是把精力浪费在架构、分层、模式和基础设施搭建的工作上面。图2.7 Seam的体系结构图2.7 Seam的所处的位置可以看出Seam就是一个上下文资源的管理者,Seam的核心是上下文组件模型,Seam把一切看出一个个组件进行管理,Seam应用程序中有两个主要的技术选择:状态提供者和持久化提供者。状态提供者是处理应用程序逻辑,并对UI中得事件做出响应技术。持久化提供者则负责将数据传入、传出持久化仓库。Seam对持久化提供者进行管理,允许持久化上下文延伸到一系列页面,并在多个组件之间共享。Seam,中文翻译为“接缝”,Seam的诞生也如它的名字,Seam就行一种粘合剂,能够无缝与JSF结合,强化JSF生命周期,所以本次设计选取Seam作为上下文管理者,让它管理JSF组件和JPA组件,这样项目开发就更加简单、便捷。3 系统分析电子邮件作为Internet最为广泛的应用之一,在人们的工作和生活中扮演着重要的角色。作为人们交流很沟通的重要工具,电子邮件首先要做到就是能够传送丰富的信息,其中包括图片、附件等复杂信息。随着生活节奏越来越快、人们越来越忙时、时间越来越节奏,所以电子邮件系统要满足移动办公的需要,可以人们随时随地便捷收发邮件,同时也要为用户提高简单方便、具有条理的管理,让用户在花费较少的时间上简单方便管理自己的邮件。现在大多数人都拥有多个邮箱,查阅邮件要上不同的邮件客户端去查看管理,这样给用户带来很大的不便,所以开邮件系统能够管理多个邮件服务器的邮件也成了人们的迫切需要。随着Web技术的发展,Web应用越来越重视用户的体验,电子邮件系统也一样,要为用户提供一个美好的富有的用户界面,让用户在使用系统时有着更好地感受。通过以上的分析,本次设计要开发一个电子邮件客户端系统,该系统为用户提供一些美好富有的界面,让用户管理多个邮件服务器,并可以和这些邮件服务器建立连接实现发送、接收、回复、转发复杂邮件的功能,同时也可以在没连接邮件服务器的情况下实现对这些邮件的管理包括(查看邮件、删除邮件、移动邮件、标记邮件等功能)3.1 需求分析3.1.1 用户角色定义本系统包括三类用户1、 未注册用户未注册用户,只能进入系统的登录页面,要使用系统的功能必须先注册。2、 注册用户注册用户,这类用户拥有普通用户的所有权限;每个注册用户可以用自己注册时候的填写的登录名和密码进行登录,登录后,用户可以使用系统的大部分功能,除了管理员的管理用户的功能,其中包括发送、接收、查看邮件、添加邮件服务器等功能。3、 管理员管理员也是注册用户,管理员拥有普通注册用户的全部功能之外,还具有管理用户的功能,比如用户的删除(本次设计只实现用户删除功能)等功能,还有一点跟普通用户不一样的是管理员的注册要直接在数据库上注册,不能像普通注册用户直接在网页上注册。 3.2 系统功能分析本次设计采用面向对象的分析方法,把系统设计成包括如下功能模块:注册登录模块,编辑、解析邮件模块,发送、接收邮件模块,邮件的管理模块,账号管理模块,辅助功能模块,具体如图3.1所示:图3.1 系统总体用例图3.2.1 注册登录模块本模块主要为用户提供注册登录的服务,在注册登录会进行用户省份的认证,判断用户的合法性。系统的所有角色都涉及到此模块。1、 注册:注册功能是为未注册用户提供的,在注册的时候,同时要求添加一个邮件服务器。在注册过程中会检验用户和测试连接邮件服务器,只有用户是合法的和服务器是可用连接的情况下才会注册成功。用例如图3.2所示。2、 登录:登录功能是提供进入系统的接口,登录过程中会检验用户是否已经注册,只有已经注册的用户才能进入系统。图3.2 注册用例图3.2.2 编辑、解析邮件模块本模块是邮件系统的最重要、也是最难的模块,实现对复杂邮件的可视化的编写,使邮件可嵌入图片、附带附件;同时也实现对复杂邮件的解析,使复杂邮件能够完整的展现出来。其中发送、接收邮件模块有调用到此模块的功能。 1、 编辑邮件:编辑邮件功能为发送邮件提供技术支持,在编辑邮件中涉及到邮件格式、文件上传,包括嵌入图片、附件上传,同时也提供保存草稿的功能。本功能只要是为了能够提供一个可视化的编辑环境给用户让用户既可以编辑简单的邮件,有可已编辑复杂邮件。用例如图3.3所示。图3.3编辑邮件用例图2、 解析邮件:解析邮件功能为展示邮件提供技术支持,主要任务是解析接收到的邮件,使邮件能完整展现出来,其中涉及邮件格式、文件下载。在邮件解析过程中要把邮件中得复杂内容下载下来包括内嵌的图片附带的附件,为展现邮件做准备。解析邮件的用例如图所示。图3.4 解析邮件用例图3.2.3 发送、接收邮件模块本模块是邮件系统的最基本的模块,提供了邮件服务的最基本的功能,包括邮件的发送、回复、转发、接收。其中有调用编辑、解析模块的动能。1、 发送功能:用户使用编辑功能编辑好的邮件,还是不是一封真正可以使用SMTP发送的邮件,所以还要它包装成一封真正可以传送的邮件,在构造邮件时候用到已经编辑好的邮件信息,包括已经上传的图片、附件、正文、收件人等等,实现这个功能也要很邮件服务器建立连接。发送功能的用例如图3.5所示。图3.5 发送邮件用例图2、 回复功能:可以选中一封已经收到的邮件进行回复,回复功能包括一般回复就是知道发件人进行回复,还要全部回报功能,就是对邮件中所以联系人进行回复。回复功能调用其他功能包括编辑、解析邮件,发送功能。3、 转发功能:实现把一封邮件的转发,转发功能和回复功能一样调用了编辑、解析邮件,发送功能。4、 接收功能:接收功能主要实现使用POP3协议和服务器建立连接来接收邮件,在接收邮件的过程中使用了解析邮件功能,来获取一些邮件信息保存到数据库中,还有就是为了让用户更快的浏览邮件,也把接收到的邮件保存下来,这样用户就就不用在阅读邮件的时候去连接邮件服务器。就是功能用例如图3.6所示图3.6 接收邮件用例图3.2.4 邮件管理模块本模块主要实现邮件日常管理功能,包括邮件的在不同文件夹的移动,比如收信箱、已发送、已删除这些文件夹;还可以对邮件进行标记包括标记为已读邮件、未读邮件、重要邮件、非重要邮件的标记。邮件管理模块的用例图如图3.7所示图3.7 管理模块用例图3.2.5 账号管理模块本模块主要实现的功能可以让用户管理用户的信息,包括修改用户基本信息,更换设置系统外观的功能,添加、删除、修改邮件服务器信息。其中管理员户比注册用户还多出一个注销用户和屏蔽用户的功能。3.2.6 辅助功能模块本模块主要是为了方便用户添加的辅助功能,包括联系人、附件夹;联系人为用户提供了联系人列表,用户可以单击列表来添加联系人。附件夹把所有的附件集中起了方便用户下载。3.3 总体架构分析3.3.1 系统架构为了使用用户能够随时随地的收发邮件,本系统选取B/S架构作为系统开架构,就是开发一个WebMail邮件系统,用户只需通过浏览器来访访问系统就能实现对邮件的收发和管理,WebMail邮件系统部署运行在web服务器上,通过访问邮件服务器和数据库来实现对邮件管理和收发。WebMail系统的结构如图3.8所示图3.8 WebMail系统架构图3.3.2 Web架构分析为了给用户提供一个美好的界面,本次开发现在了JSF作为表现层技术,使用基于JSF的Primefaces进行界面的开发。在持久化层选择了JPA标准的Hibernate实现,为了更好结合这两者选择Seam作为上下文的管理者;使用Seam开发有很多好处比如简化分层,提高了开发速度等。图3.9是JSF+Seam+JPA的架构图。图3.9 项目框架的架构图图3.10 项目的分层架构图从图3.10可以看出使用Seam来开发大大简化分层,在Seam开发模式下,一般分为页面,Action,Service三层,页面负责界面的展示和请求,Action负责业务逻辑的处理,而Service层负责对数据库的访问。Seam主要充当资源的管理者,它把一切充当组件来进行管理。使用JSF+Seam+JPA来开发相比SSH开发起来更加简单。4 系统设计4.1 总体设计本系统是由Web服务器、数据库服务器、邮件服务器和浏览器客户端组成的多层Web计算机服务系统,采用JSF+Seam3+JPA架构,具有先进性、灵活性、可扩展性等特点。4.1.1 模块设计通过采用面向对象的思想对webmail系统进行分析,以及使用UML工具,分析出相关的重要概念,得出以下模块设计图,如图4.1所示。图4.1 总体模块设计图系统的各功能模块如需求分析所描述。4.1.2 数据库的概念结构模型设计1、 ER图 概念设计以反映现实世界中的实体、属性和它们之间的关系等的原始数据形式。通过系统分析,得出系统的总E-R图,如图4.2所示。图4.2 系统总ER图2、 关系模式(有下划线的代表主键、有波浪线代表外键) 通过理清各实体的属性和联系,得出以下关系模式:(1) 用户表:(用户ID,描述名,密码,主题,是否是管理员)(2) 联系人表:(联系人ID,所属用户ID,名称,email,电话,QQ账号,地址,备注)(3) 邮箱:(邮箱ID,所属用户ID,登录名,密码,POP服务器,SMTP服务器,描述名,邮箱域名后缀)(4) 邮件表:(邮件ID,所属邮箱ID,邮件信息ID,发件人,收件人,抄送,密送,主题,所处状态,发送时间,是否已读,是否删除,是否重要,是否包含附件,保存路径) (5) 附件表:(附件ID,所属邮件ID,附件名,保存路径,大小,类型图标)3、 数据库表通过以上的关系模式,可以设计出相应的数据库表,如下:表4.1 用户表:user字段字段大小字段描述主键/外键备注IDvarchar50用户ID主键not nullPASSWORDvarchar50密码not nullNAMEvarchar50描述名THEMEvarchar30系统主题not nullISADMINtinyint1是否是管理员表4.2 联系人表:person字段类型大小字段描述主键/外键备注idint11联系人ID主键not nulluseridvarchar100所属用户ID外键not nullnamevarchar50名称not nullemailvarchar50emailnot nullphonevarchar15电话qqvarchar15QQ账号addressvarchar255地址remarkvarchar50备注表4.3 邮箱表:mailbox字段类型大小字段描述主键/外键备注IDint11邮箱ID主键not nullUSERIDvarchar50所属用户ID外键not nullLOGIN_NAMEvarchar30登录名not nullPASSWORDvarchar30密码not nullPOP3_SERVERvarchar30POP服务器not nullSMTP_SERVERvarchar30SMTP服务器not nullEMAILvarchar20邮箱域名后缀dNamevarchar30描述名表4.4附件表:attachment字段类型大小字段描述主键/外键备注IDint11附件ID主键not nullMAILIDvarchar50所属邮件ID外键not nullNAMEvarchar50附件名not nullPATHvarchar50保存路径not nullSIZEvarchar100大小not nullICONvarchar30类型图标not null表4.5 邮件表:mail字段类型大小字段描述主键/外键备注IDvarchar100邮件ID主键not null_MAILBOXIDint11所属邮箱ID外键not null_MSGIDvarchar200邮件信息IDnot null_FROMvarchar100发件人not null_TOvarchar255收件人_CCvarchar255抄送_BCCvarchar255密送_SUBJECTvarchar255主题_STATEint11所处状态_SENDDATEvarchar50发送时间not null_ISREADtinyint1是否已读_ISDELtinyint1是否删除_isPmortanttinyint1是否重要_ISHATTACHtinyint1是否包含附件PATHvarchar255保存路径not null4.2 详细设计本系统选取了比较新型的JSF+Seam+JPA作为开发框架,所以开发系统的思想和流程跟SSH架构有很大的不同。基于JSF+Seam+JPA框架的开发是从组件、事件、后台bean以及它们之间的交互来进行思考,不是基于请求、响应和标记来考虑问题,不再重视分层的细节,注重基于页面响应的事件来处理业务逻辑。按照这种开发的思想,把系统分层页面层、Action层、Service层。页面层主要是实现UI界面、把页面组件的事件和相关的Action绑定,一般一个页面都会对于一个Action来响应这个页面的事件,从实现对业务逻辑操作。Service层主要是为Action服务让Action 调用来访问数据,一般一个Action类都会对于一个Service类。在项目中除了要设计这些响应事件、访问数据库的类、实体类(和数据库表对应的类),还设计一些工具类、保存用户登录信息类供整个项目模块使用。4.2.1 项目共用类的设计这些类,因为这些类提供特定功能实现,供项目各模块的类使用。下面介绍几个比较这样类型的类的相关设计,其中包括FileDownloader类、FileUtil类、MailServices类、ParseMimeMessage类,AccessConfig类。1、 AccessConfig类,这个类主要是设计类存储登录用户的相关信息,当用户成功登录它就被创建,并且存储着用户的信息,包括用户的姓名、密码、所有的有服务器以及用户各个文件夹的邮件的数量等信息。这个类在创建之后就会被保存在session范围里,共整个会话使用。2、 FileDownloader类,用因为邮件系统中涉及到文件的下载问题,所以专门设计这个类来处理文件的下载问题。3、 FileUtil类,因为系统设计要为每个用户创建文件夹来保存用户的信息,报告邮件备份、附件等,所以在整个项目中会遇到很多文件夹、和文件的操作,所以设计FileUtil类。这个类的命名跟FileDownloader类都有File但它们处理领域不一样,FileUtil主要对硬盘上的文件的操作,包括文件夹、文件的创建、删除、复制等操作。它设计如图4.3所示图4.3 FileUtil类的类图4、 MailServices类,一个WebMail邮件系统主要目的就是为了收发邮件,经常要跟不同邮件服务器连接读取很发送邮件。因此,MailServices类,来处理跟邮件服务相关的操作。包括创建与不同服务器的会话,获取服务器的文件夹、测试与服务器连接是否成功。它设计如图4.4所示图4.4 MailServices类的类图5、 ParseMimeMessage类,当收到一封邮件时要想把它展现给出来给用户浏览,那首先就要对邮件进行解析。解析邮件是一个复杂的过程,所以设计了ParseMimeMessage类来解析邮件,使用ParseMimeMessage类可以拿到邮件的各种信息,其中包括邮件嵌入的图片、附件这些复杂的信息。它的设计如图4.5所示图4.5 ParseMimeMessage类的类图4.2.2 登录注册设计1、 页面设计提供一个页面命名为login.xhtml。这页面提供登录界面和对话框式的注册界面。2、 类的设计设计两个Action层的类, LoginAction类、RegisterAction类这个两类主要负责响应登录和注册的事件,还设计而来两个Service层的类,LoginService类、RegiSterservice类提供对数据库的访问。登录和注册功能的序列图如图4.6、图4.7所示 图4.6 登录功能序列图图4.7 注册功能序列图4.2.3发送和接收模块的设计1、 页面设计这个模块实现的功能比较多,包括编辑,解析,发送、回复、转发、接收邮件。其中因为回复和转发的业务上和发送有点小小不一样,所以本模块分别给回复、转发、普通发送的功能设计不同的编辑页面,不过只是微小的差别,分别为send.xhtml、reply.xhtml、transmit.xhtml。还有一个是发送成功转向的页面success.xhtml。2、 类的设计在Action层设计了SendMailAction类来处理send.xhtml、reply.xhtml、transmit.xhtml这个三个页面编辑邮件和发送邮件事件的响应,设计RecevieEmailAction类处理收信事件,其中收信事件是在home.xhtml中发生的。在Service层同样设计了两个相对应用的SendMailAction和RecevieEmailService类处理相关的数据库访问。发送邮件和接收邮件的序列图如图4.8、图4.9所示,其中回复跟转发的发送跟普通的发送是一样的,只是在转到的编辑页面不一样而而已。图4.8 发送功能序列图图4.9接收功能序列图4.2.3 邮件管理模块的设计1、 页面的设计为了方便邮件的管理设计

温馨提示

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

评论

0/150

提交评论