邮件系统的设计与实现

上传人:仙*** 文档编号:65557197 上传时间:2022-03-24 格式:DOC 页数:47 大小:2.39MB
返回 下载 相关 举报
邮件系统的设计与实现_第1页
第1页 / 共47页
邮件系统的设计与实现_第2页
第2页 / 共47页
邮件系统的设计与实现_第3页
第3页 / 共47页
点击查看更多>>
资源描述
毕业设计论文题 目: 邮件系统的设计与实现 院(系): 专业年级: 姓 名: 学 号: 指导教师: 2012年4月01日原 创 性 声 明本人郑重声明:本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。毕业论文中凡引用他人已经发表或未发表的成果、数据、观点等,均已明确注明出处。除文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的科研成果。对本文的研究成果做出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的法律责任由本人承担。论文作者签名: 日 期: 关于毕业论文使用授权的声明本人在指导老师指导下所完成的论文及相关的资料(包括图纸、试验记录、原始数据、实物照片、图片、录音带、设计手稿等),知识产权归属XXX。本人完全了解XXX有关保存、使用毕业论文的规定,同意学校保存或向国家有关部门或机构送交论文的纸质版和电子版,允许论文被查阅和借阅;本人授权XXX可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存和汇编本毕业论文。如果发表相关成果,一定征得指导教师同意,且第一署名单位为XXX。本人离校后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为XXX。论文作者签名: 日 期: 指导老师签名: 日 期: XXX本科毕业设计邮件系统的设计与实现摘 要在过去的几十年里,人们主要通过书信与相隔较远的人相互交流情感与思想。而当今世界人们更多的是使用电子邮件,与传统的书信相比,电子邮件具有使用简易、投递迅速、收费低廉,易于保存、全球畅通无阻等优点。本文设计并实现了一套邮件系统。首先研究了与系统相关的技术,其次分析了系统功能、性能和数据的需求,设计了系统构架、系统功能和数据库,并实现了系统的主要功能。本文的系统构架是基于浏览器/服务器的三层架构,使用Java和S2SH框架开发而成。在数据存储上使用了免费、开源、跨平台的MySQL数据库,邮件服务器使用了免费、开源的支持SMAP协议发送电子邮件和IMAP协议接收电子邮件的Apache James邮件服务器。通过系统设计的用户注册和登陆、用户信息管理、邮件管理等模块,对邮件系统进行实现。本系统具有功能丰富、结构清晰、运行效率高、数据访问效率高等优异性能,后期易于维护,可扩展性行比较好。本系统还存在以下几个方面的工作尚需完善,即增加联系人管理模块,增强系统的稳定性,增强系统的安全性。 关键词:电子邮件,James邮件服务器,MySQL,Java,S2SHMail System Design and ImplementationAbstractIn the past few decades, people mainly exchange ideas with each other by letters.But today people are communicating with each other via e-mail, compared with the letter, e-mail correspondence with easy to use, fast delivery, low-cost, easy to store, the worlds smooth and so on. This article has designed and implemented a mail system. First , study technologies related to the system. Then , analyses the system functions, performance and the data requirements, and also design the system architecture, system functions and database, and finally the main functions of the system come into shap . The system architecture is developed basing on a three-tier browser / server architecture, using Java and S2SH framework. The Data storage take use of free, open-source, cross-platform MySQL database. The mail server use the free, open-source Apache James mail server that supports SMAP protocol to send e-mails and the IMAP protocol to receive e-mails. Develop the E-mail system by different module of the system design, including user registration and login, the user information management, mail management.This system has the feature-rich, clear structure, high efficiency, excellent performance of high efficiency of data access, and it is not only easy to maintain in latter stages but also outstanding in its scalable sexual activity.There still exists problems that need farther perfection in The system from following aspects, like increasing the contact management module, enhancing the stability and security of the system.Keywords: E-mail, James mail server, MySQL, Java, S2SH目 录1 绪论11.1 课题研发背景11.2 选题的意义11.3 发展现状11.4 本文结构安排22 技术与工具介绍32.1 框架简介32.2 开发工具简介42.3 电子邮件简介62.4 小结73 需求分析83.1 实际业务操作流程83.2 系统设计的目标83.3 系统需求分析93.3.1 功能需求分析93.3.2 性能需求分析103.3.3 数据库需求分析113.4小结114 总体设计124.1 数据库的设计124.1.1 概念结构设计124.1.2 逻辑结构设计134.2 小结145 详细设计与实现155.1 系统体系结构设计155.2 系统模块设计165.2.1 用户登录邮件系统设计165.2.2 注册新用户信息的设计175.2.3 用户找回密码信息设计175.2.4 用户发送电子邮件设计195.2.5 用户查看电子邮件设计205.3 系统模块的实现215.3.1 用户登录邮件系统的实现215.3.2 注册新用户的实现225.3.3 用户找回密码的实现235.3.4 用户发送电子邮件的实现255.3.5 用户查看电子邮件的实现265.4 小结276 测试286.1 测试环境286.2 功能测试286.3 用户界面测试296.4 单元测试306.5 小结307 结束语317.1总结317.2展望31附 录32参考文献37致 谢381 绪论1.1 课题研发背景电子邮件(简称E-mai1)又称电子信箱、电子邮政,它是种用电子手段提供信息交换的通信方式。它是全球多种网络上使用最普遍的一项服务。这种非交互式的通信,加速了信息的交流及数据传送。通过连接全世界的Internet,实现各类信号的传送、接收、存贮等处理,将邮件送到世界的各个角落。到目前为止,可以说电子邮件是Internet资源使用最多的一种服务,E-mai1不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。与传统的信件相比,电子邮件更具有传统信件没有的优势,传统的邮件受到时间、地点等各种限制,而电子邮件却不受这些限制。正是由于电子邮件的使用简易、投递迅速、收费低廉,易于保存、全球畅通无阻,使得电子邮件被广泛地应用,它使人们的交流方式得到了极大的改变。另外,电子邮件还可以进行一对多的邮件传递,同一邮件可以一次发送给许多人。最重要的是,电子邮件是整个网络间以至所有其他网络系统中直接面向人与人之间信息交流的系统,它的数据发送方和接收方都是人,所以极大地满足了大量存在的人与人之间的通信需求。现在随着互联网和计算机的普及1,电子邮件将会成为人们越来越受欢迎的交流方式。1.2 选题的意义当今流行的邮件系统如 Lotus Notes和Exchange 是非常强大的商业软件2。但这些系统包含的协作功能和每客户端得许可证费用使它们的整体成本急剧上升。而事实上,很多使用这些系统的公司仅仅需要其中的邮件服务器基本功能,因此对于这些企业来说花重金来购买这些邮件系统还不如花少量的钱去重新开发一款功能简单的邮件系统。所以开发一款简单易用的,使用户容易上手的电子邮件系统是非常有必要的。对于大型的企业来说开发一种简单易用的具有电子邮件基本功能的电子邮件系统,不仅能够提高企业的生产效率而且能够降低人与人之间的沟通成本,使企业能够更好的发展。1.3 发展现状国内很多企事业单位都有自己的邮件服务系统,免费邮箱有163、新浪等。用户对电子邮件安全性、可靠性及功能上的要求也在不断提高。因此,电子邮件服务供应商必须提供更安全、更可靠、功能更丰富的服务才能发展业务、吸引用户,从众多竞争者中脱颖而出。如何构建高效、稳定、安全、易用可扩展功能丰富的电子邮件系统是众多电信运营商、ISP(Internet Service Provider)、ICP(Internet Content Provider)共同面临的问题。邮件服务器供应商致力于以下几个方面提高邮件服务器。1. 增加多用户模板的功能,以满足不同用户对界面的不同喜好:如提供多种邮件webmail页面风格,提供个性化模板和多风格信纸,用户可以定义邮箱系统界面等。2. 增加防病毒模块,以增加E-mail系统整体的安全性,利用邮件加密和邮件签名等方式进行邮件传送。在服务器端使用防病毒模块。将电子邮件系统向统一信息系统发展,加入最新资讯,多媒体等功能。反垃圾邮件为用户提供发垃圾邮件的多种过滤器,充分保证用户收到最低限度的垃圾邮件骚扰。1.4 本文结构安排为了使您在短时间内了解本论文,介绍论文内容如下:第1章主要介绍:论文的课题研发背景、选题的意义、发展现状及论文的结构安排。第2章主要介绍:本次设计采用的技术、开发工具等。第3章主要介绍:邮件系统实际业务流程、功能需求、性能需求、数据库需求以及系统设计的目标。第4章主要介绍:数据库的设计与实现。第5章主要介绍:系统核心功能模块设计及实现。 第6章主要介绍:系统测试环境、功能测试、用户界面测试以及单元测试。第7章主要介绍:本次毕业设计的总结及展望。2 技术与工具介绍本部分主要介绍开发系统所采用的一些技术以及开发工具,包括采用的J2EE框架技术Struts2、Spring、Hibernate、James邮件服务器等的简单介绍。2.1 框架简介1. Struts2简介Struts2:Struts2是由WebWork和Struts1共同衍生出的一个JavaEE框架。Struts2吸收了 WebWork和Struts1的长处,也处理了二者的一些不足之处,相对于Struts1,Struts2去掉了ActionForm3,降低了框架之间的耦合性,Struts2的Action只是普通的java类(pojo),给模块测试带来了极大的方便。Struts2框架的处理流程如图2-1所示。图2-1 Struts2框架处理流程通过上面对Struts2体系结构的了解,我们发现Struts2对Struts1进行了巨大的改进。主要表现在如下几个方面4:(1)Interceptor做一些拦截或初始的工作当外部的httpservletrequest到来时初始到了servlet容器,传递给一个标准的过滤器链Other filters。(2)调用FilterDispatecher会去查找相应的ActionMapper如果找到了相应的ActionMapper它会将控制权限交给ActionProxy,ActionProxy将会通过ConfigurationManager来查找配置struts.xml。(3)通过ActionInvocation来负责命令模式的实现(包括调用一些拦截Intercepror框架在调用action之前)一旦action返回,会查找相应的Result,Result类型可以使jsp或者freeMark等。(4)这些组件和ActionMapper一起返回给请求的url,响应的返回是通过在web.xml中配置的过滤器。2. Spring简介Spring框架技术实际上是Rod Johnson在Expert One-on-One J2EE Design and Development一书中所阐述的设计思想的具体实现5。Spring框架为J2EE平台的开发者提供的是一种“对象管理”技术,也就是为开发者解决包括对象的生命周期、对象之间的依赖关系建立、对象的缓存实现等方面问题的管理技术6。Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同 J2EE 环境 (Web 或 EJB)、独立应用程序、测试环境之间重用。3. Hibernate简介Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库7。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。2.2 开发工具简介1. MyEclipseMyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合。MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。2. MySQL数据库MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器8。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置的软件中去。MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,Sun又被Oracle收购。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL“结构化查询语言”。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。4. James邮件服务器简介Java Apache邮件服务器一般是指Apache组织开发的James10,它是一个轻便的、安全的100%纯Java实现的邮件服务器。不仅如此James还可以提供更多的功能,感谢James给我们提供了插件化协议架构和Mailet底层构造,它可以让我们利用Web服务器的servlets处理邮件。Email服务到处都是,开始是DARPA(国防部高级研究计划局)的一个计划并最终发展为Internet,但是James成为了打破这一传统规则的第一个应用。The Java Apache 企业邮件服务器(a.k.a. Apache James)是一个100%用Java实现的SMTP和POP3邮件服务器,同时,他还实现了NNTP新闻服务器的功能。James被设计成一个完整的、可移植的企业邮件引擎解决方案,他完全基于目前可用的开放性协议。James还是一个邮件应用平台。Apache组织提供了一套Java APImailet API,利用Mailet API,可以根据自己的需要用Java语言编写代码来对邮件进行个性化的处理。Mailet可以生成一个自动回复,更新数据库,阻止垃圾邮件,建立消息档案,或者任何我们能想像的到的功能。与Mailet密切相关的是消息适配器(Matcher),一个消息适配器可以判断Mailet是否要对服务器中的一个邮件进行处理。James被设计为实现几个确定的目标。比如它完全使用Java开发以便适应最大的轻便行;它提供了很多安全特性用于保护服务器的运行环境安全还提供了安全服务。James是多线程的,它使用了很多Avalon架构提供的功能。James提供了完善的服务,包括一个完全可以运行的Email服务器。这些服务主要是有Macther和MailetAPI实现的,这两个API提供了Email检查和处理功能。James支持标准的email协议(SMTP,POP3,IMAP),另外还提供了一些附加功能,它使用了松散耦合的插件设计方式使消息框架从协议中抽象出来。这种设计方式非常有用,使我们可以把James当作一个通常的消息服务器或者为即时消息传输提供支持。James一个更重要的设计目标是提出了Mailet概念,Mailet提供了一个开发邮件应用程序的完整生命周期。当然你也可以在这里使用其他MTA(邮件传输代理),比如SendMail,要这样作的话我们需要提供一个可调用的程序然后将数据传送给它来完成工作,不过,James提供了一套更简单、通用的API来完成这些工作。2.3 电子邮件简介电子邮件,它是种用电子手段提供信息交换的通信方式。它是全球多种网络上使用最普遍的一项服务。这种非交互式的通信,加速了信息的交流及数据传送,它是个简易、快速的方法。通过连接全世界的Internet,实现各类信号的传送、接收、存贮等处理,将邮件送到世界的各个角落。邮件服务器按通讯协议可以划分为以下两种类型:SMTP服务器:用于替用户发送邮件和接收外面发送给本地用户的邮件,它相当于现实生活中邮件的邮件接收部门(可接收普通用户投递的邮件以及其它邮局投递过来的邮件)。POP3/IMAP服务器:用于帮助用户读取SMTP服务器接收进来的该用户的邮件。当前常用的电子邮件协议有SMTP、POP3、IMAP4,它们都隶属于TCP/IP协议簇,默认状态下,分别通过TCP端口25、110和143建立连接。下面分别对其进行简单介绍。1. SMTP协议:SMTP的全称是Simple Mail Transfer Protocol,即简单邮件传输协议。目标是向用户提供高效、可靠的邮件传输。SMTP的一个重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送。工作在两种情况下:一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器。2. POP3协议:POP的全称是Post Office Protocol,即邮局协议,用于电子邮件的接收,它使用TCP的110端口,现在常用的是第三版 ,所以简称为POP3。POP邮局协议负责从邮件服务器中检索电子邮件。它要求邮件服务器完成下面几种任务之一:从邮件服务器中检索邮件并从服务器中删除这个邮件;从邮件服务器中检索邮件但不删除它;不检索邮件,只是询问是否有新邮件到达。3. IMAP4协议:IMAP的全称是Internet Message Access Protocol,顾名思义,主要提供的是通过Internet获取信息的一种协议。IMAP像POP那样提供了方便的邮件下载服务,让用户能进行离线阅读,但IMAP能完成的却远远不只这些。IMAP提供的摘要浏览功能可以让用户在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。Internet上传送电子邮件是通过一套称为邮件服务器的程序进行硬件管理并储存的。与个人计算机不同,这些邮件服务器及其程序必须每天24小时不停地运行,否则就不能收发邮件了,简单邮件传输协议SMTP(Simple Mail Transfer Protocol)和邮局协议POP(Post Office Protocol)是负责用客户机/服务器模式发送和检索电子邮件的协议。用户计算机上运行的电子邮件客户机程序请求邮件服务器进行邮件传输,邮件服务器采用简单邮件传输协议标准。很多邮件传输工具,如outlook express、fox mail等,都遵守SMTP标准并用这个协议向邮件服务器发送邮件12。SMTP协议规定了邮件信息的具体格式和邮件的管理方式。电子邮件的工作原理如图2-4所示。OutlookOutlookPOP3服务器POP3服务器SMTP服务器SMTP服务器邮件存储空间邮件存储空间邮件服务器A邮件服务器B邮件服务器对接SMTP服务器邮件服务器对接SMTP服务器SMTPSMTPPOP3POP3SMTPSMTP图2-4电子邮件工作原理2.4 小结本章主要介绍了本系统开发中所用的一些技术,为系统的编写打下了坚实的基础。然后介绍了开发系统的各种工具,为搭建好开发系统的环境做了准备。3 需求分析用户需求分析是整个设计制作的起点,它是在用户需求调研的基础上,确定系统的总体结构方案,完成相应的需求分析报告。在确定系统的总体结构方案过程中,需要确定应用程序的结构、系统开发环境、系统测试环境和运行环境以及系统的功能模块。在用户需求调研结束之后,应立即进行用户需求分析。需求分析的结果反映了用户的时间需求,它将影响到设计的合理性和实用性。开发软件计划的提出与软件消亡之间的过程中我们称之为软件的生存周期。软件生存周期是根据软件所处的状态、特征以及软件开发活动的目的、任务可以划分若干阶段,从这一思想出发,软件生存周期包括软件定义,软件开发、软件使用与维护三个部分,具体则可以得到软件生存周期的六个步骤,即制定计划、需求分析,软件设计、程序编码、测试及运行维护。 软件需求分析工作是软件生存期中具有决定性意义的一步,只有通过需求分析才能把软件的功能和性能的总体要领描述为具体的软件规程说明,从而奠定软件开发基础。邮件系统在开发的过程也应严格遵循这一过程,进行详细的需求分析设计,从而设计出一个优秀的电子邮件系统软件13。3.1 实际业务操作流程没有注册的用户可以通过注册页面进行注册,填写自己的个人信息后提交,然后登录,注册过的用户可以直接登录邮箱,进入邮箱主界面,然后对自己的个人信息进行修改、查询以及找回密码等操作,还可以对自己的邮件进行查看、删除、发送、搜索等操作。3.2 系统设计的目标系统开发的总体任务是实现电子邮件系统开发的系统化、规范化和自动化,从而达到提高电子邮件系统开发的效率的目的和提高软件产品的质量14。所谓的优秀软件,就是权衡了各种因素,从而使得系统在整个生命周期中的总开销最小的设计。因此,优秀的软件设计的一个主要特点就是容易维护。本系统作为典型的Web系统应该尽可能的准寻以下准则,以确保系统软件的质量。1. 模块化:再设计系统的时候应当尽可能的将数据结构和操作这些数据的方法紧密地结合在一起,使得系统能够被分解成各个独立的模块。2. 可重用:软件重用是提高软件开发生产率和目标系统质量的重要途径。重用有两方面的含义:一是尽量使用已有的类(包括开发环境提供的类库,及以往开发类似系统是创建的类),二是如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性。3. 弱耦合:耦合是指一个软件结构不同模块之间互连的紧密程度。弱耦合是优秀设计的一个重要标准,因为这有助于使得系统中某一部分的变化对其他部分的影响降到最低程度。在理想情况下,对某一部分的理解、测试或修改,无需涉及到其他部分。4. 强内聚:内聚是衡量一个模块内各个元素彼此结合的紧密程度。在设计时应该力求做到高内聚。根据分析,本系统的设计目标是:设置一个登录窗口供用户登录。用户可以登录到程序主页面进行相关操作。用户可以对所有个人信息进行修改、查询以及找回密码操作,以及对邮件信息的发送、接受、删除、查询以及移动等操作。用户操作的所有数据都来自于一个用MySQL建立的数据库“email”。前台的应用程序与后台数据库使用JDBC技术连接起来进行相互操作。用户对邮件信息的删除、移动以及个人信息的修改等操作的结果也都会写入该数据库保存起来。3.3 系统需求分析软件系统的需求一般可以分为功能性需求和非功能性需求。信息系统中数据需求也是至关重要的,是系统功能实现的基础。功能性需求是系统需要实现的,提供给用户使用的具体的功能;非功能性需求是为了满足用户对系统功能的需求,系统正常工作所应当具备的系统的特定特性,如性能、安全性、可用性、可扩展性等等,二者互为影响。对于本系统的需求分析,分别从功能需求、性能需求、数据库需求三个主要方面分别详述。3.3.1 功能需求分析1. 电子邮件系统主要功能是普通用户收发电子邮件的,本系统的使用者角色只有普通用户。用户要求系统的基本功能有用户在没有注册的情况下可以使用本系统在线注册,注册完成之后用户可以使用新的账户进行登录。如果用户密码丢失用户能过通过注册时填写的用户信息来找回密码。(1)用户对自己信息管理的要求。用户应该能够在登录系统之后修改自己的基本信息例如用户昵称、密码等。(2)用户对发送电子邮件的要求。系统应该能够进行简单的电子邮件的发送,同时还要能发送复杂一点的电子邮件例如带有附件、邮件内容为HTML格式的邮件等。同时应该能够快速的添加收件人等。(3)用户对收取电子邮件的基本要求。在收取电子邮件的时候用户应该能够查看到某个邮件夹下面的电子邮件,然后用户选择查看的电子邮件。当查看电子邮件的时候能够显示邮件的基本内容,同时还能够下载带有附件的电子邮件附件。2. 通过对以上信息分析得出用户能够通过该系统进行的活动,如图3-1所示。图3-1 用户简单用例图(1)找回密码:当用户忘记登录密码的时候可以通过该功能找回登录密码。(2)注册新用户:用户可以使用该系统注册一个新的系统用户。(3)管理邮件信息:用户可以通过该系统查看和发送电子邮件。(4)管理个人信息:该功能可以使用户方便的修改自己的个人信息。3. 通过对于用户功能需求进一步分析得出用户详细的用例图如图3-2所示。图3-2 用户详细用例图(1)管理个人信息:可以分为查找个人信息和修改个人信息,查找个人信息使得用户可以方便的查看个人信息。修改个人信息使用户可以修改自己的个人信息。(2)管理邮件信息:可以分为删除电子邮件、发送新邮件和查看电子邮件。当用户需要删除某一封电子邮件的时候可以使用删除电子邮件功能,同时用户也可以发送新的电子邮件给其他用户。用户也可以查看电子邮件以方便用户查看电子邮件的具体内容。3.3.2 性能需求分析电子邮件系统主要的用户群是普通用户,所以在设计上必须遵循以下几点准则:1. 易用性:电子邮件系统可以像使用留言电话一样,在自己方便的时候处理记录下来的请求,通过电子邮件可以方便地传送文本信息、图像文件、报表和计算机程序。2. 快捷性:当用户发送完一封电子邮件的时候收件人可以快速的收取到用户发送的电子邮件。而且当电子邮件发送失败的时候系统也应该给出相应的提示信息。以确保电子邮件能够快速的发送到收件人的邮箱中。3. 安全性:电子邮件相当于过去的信件,现在的电子邮件就相当于在网络中传输的信件,由于网络的不安全电子邮件在传送过程中必须确保电子邮件的安全。 再设计电子邮件系统的时候应该充分考虑到电子邮件的安全问题。4. 实时性:由于电子邮件的用户范围很广泛以及用户使用电子邮件系统的时间又具有不确定性,所以电子邮件系统服务器必须在时间上满足全天候的启动服务。以确保电子邮件系统用户实时的发送电子邮件。3.3.3 数据库需求分析邮件系统用于存入数据库的信息只有用户的基本信息和联系人的基本信息,至于电子邮件的具体存储位置则是由Apache James邮件服务器负责完成。在本系统中通过修改Apache James邮件服务器的配置文件将电子邮件存放到了MySQL数据库,而用于存储邮件信息的数据表则是由James邮件服务器自动建立的。对于用户来说用户需要登录系统登录系统时用户需要输入用户账号和用户密码。密码存储到数据库中是经过加密过后的密码。存取密码的时候要存取相应的密码加密算法。1. 用户在填写基本信息的时候要求填入用户别名、性别、安全邮箱地址、安全问题、安全问题答案、家庭住址、电话号码、备注等基本的与用户有关的信息。2. 当用户忘记登录密码的时候用户可以通过密码找回邮箱重新找回或重新设置登录密码。3. 一个用户登录信息要对有一个用户基本信息与之相对应。经过对系统功能的数据分析和总结,设计出了如下所示的数据项和数据结构:用户登录信息:用户账号、用户密码、密码加密算法、用户是否是被禁用等。用户基本信息:昵称、性别、电话号码、家庭住址、安全问题、安全问题答案、找回密码电子邮箱地址、备注等信息。3.4小结本章对系统进行了需求分析,首先通过对系统功能需求的分析了解了系统中普通用户应完成的功能。接着对系统的性能和数据库进行了需求分析,以便于保证系统长期,安全,稳定,可靠,高效的运行。4 总体设计要想很好的完成一个项目,数据库的设计是整个项目设计中的关键,一个好的数据库表结构能有效的管理后台中的数据,提高软件的实用性和软件的数据访问效率。数据库设计主要包括两个方面内容:数据库设计与实现。4.1 数据库的设计数据库的设计包括两方面的内容,分别是数据库的概念结构设计和数据库的逻辑结构设计。4.1.1 概念结构设计概念结构设计的任务是将数据库需求分析得到的用户数据需求抽象为信息结构,是整个数据库设计的关键。概念结构设计的目标是产生反映信息需求的整体数据库概念结构,即概念模式,描述概念结构的工具是E-R图15。从本系统中规划出的实体有:用户登录信息、用户基本信息。如表4-1所示。表4-1 系统实体型图用户登陆信息实体型图用户基本信息实体型图邮件信息实体型图用户登录信息实体包括的属性有登录账号、登录密码、密码加密算法、用户权限、版本号等其实体属性图,其中登陆账号为主键。用户基本信息实体包括的属性有昵称、性别、家庭住址、电话号码、安全问题、安全问题答案、安全邮箱和备注其实体属性图,其中用户ID为主键。邮件信息实体包括的属性有信息头字节、内容字节、子类型、媒体类型、内容等其实体属性图,其中邮件ID为主键。通过对数据库基本信息和用户的基本需求进行分析可以得出系统的实体之间关系的E-R图如图4-1所示。图4-1实体关系E-R图4.1.2 逻辑结构设计逻辑结构设计的任务是将概念结构设计阶段设计好的E-R图转化为对应的关系模式,从而完成逻辑结构设计,为数据库的实现作准备。本系统的数据库使用的是MySQL数据库,建造的数据库名称为email。用户登录关系模式(主键用下划线标出):jamesuser (name, alg, enable, password, version)用户基本信息关系模式:userinfo (id, address, alias, answer, gender, mark, phoneNum, pwdEmail, question, user_id)邮件信息关系模式:message(id, bodyStartOctet, contentOctets, mediaType, subtype, content)通过对以上数据信息进行分析,邮件系统数据库表的设计包括用户登录信息表、用户基本信息表。具体的数据库表的实现如下。用户登录信息表主要是用来存放用户登录所需要的基本信息的,version是用来实现乐观锁的。使用乐观锁可以有效地避免脏读、读已提交等数据库访问常见问题其表结构设计如表4-2所示。表4-2 用户登录信息表字段名英文名称字段类型字段大小登录账号nameVarchar 255密码加密算法algVarchar255用户权限enableBit 1登录密码password Varchar 255版本号versionInt 11用户登录信息表主要应用是在用户登录的时候。因为用户账号和密码使用的频率比较频繁而且james邮件服务器也要使用该表,所以将用户登录信息表单独抽取出来作为一张表。这样不仅提高了数据的访问效率同时也使得表结构变得异常简单有利于后期的维护和升级。其中版本号是用来实现乐观锁的,有了乐观锁就可以有效的降低数据访问出错的概率。用户基本信息表是用来存储用户注册时填写的基本信息。有了这些信息用户可以方便的进行找回密码等操作。每一个用户基本信息都对应一个用户登录基本信息,有了这些数据用户信息才算完整, 其表结构的设计如表4-3所示。表4-3 用户基本信息表字段名英文名称字段类型字段大小用户IDidInt11家庭住址address Varchar 36昵称alias Varchar50安全问题答案answer Varchar30性别gender Varchar5备注markVarchar255电话号码phoneNum Varchar14安全邮箱pwdEmail Varchar64安全问题question Varchar20邮件信息表主要是存储用户接受的邮件信息内容以及其他的信息。其表结构的设计如表4-4所示。表4-3 用户基本信息表字段名英文名称字段类型字段大小信息IDidbigInt20媒体类型mediaType Varchar 255子类型subtype Varchar255信息头字节bodyStartOctetInt11内容字节contentOctetsbigInt20内容contentLongblob4.2 小结本章介绍了数据库的设计与实现,对数据库进行了细致的设计:数据库概念结构设计和数据库逻辑结构设计。对后期系统的开发提供了比较好的数据库支持。5 详细设计与实现5.1 系统体系结构设计电子邮件系统的特点是信息处理量比较大,各个环节要求连接性能强。电子邮件系统主要是为普通用户而设计。在设计中,需要删除不必要的数据冗余,实现系统开发的规范化、科学化、程序代码标准化、统一化,确保软件的可维护性和实用性,做到界面尽量简单化,做到实用、方便。系统的操作尽可能的简单化。系统实现尽量简化页面结构,抽象出公用模块,以实现代码复用。另外,在页面组织上采用模块化设计,设计出公用的界面头和尾,以减少代码的冗余和提高代码开发效率16。在系统结构上,采用三层架构设计,包括:表现层、业务逻辑层和数据访问层。三层之间的关系如图5-1所示。图5-1 系统架构图在三层架构中,各个层次的功能描述如下:1. 表现层:表现层主要完成响应客户操作和向数据访问层发送请求。表现层同时应该根据用户的具体操作显示不同的页面。将系统尽可能简单大方的展现给用户。2. 业务逻辑层:业务逻辑层主要功能是将在用户请求处理之后进行数据库操作,然后将数据库返回的数据封装后返回给表现层。这样用户界面层可以无需了解数据库的结构,只要维护与业务逻辑层之间的接口即可。该架构使系统结构更清楚、分工更明确,有利于后期的维护和升级。3. 数据访问层:数据访问层主要负责数据库操作,所有与数据库有关的操作都交给数据访问层来实现。这样业务逻辑层无需知道如何访问数据库,只需要维护与数据访问层之间的接口就能够顺利的进行各种与数据库有关的操作。5.2 系统模块设计电子邮件系统的主要使用人员是普通用户,通过对系统需求的分析可得用户与系统之间的交互行为有用户登录系统、用户找回密码、注册新用户、用户修改个人信息、查看电子邮件、删除电子邮件、发送电子邮件、查找电子邮件和通过高级查找精确的查找电子邮件。其系统功能结构图如图5-2所示。图5-2邮件系统功能结构图5.2.1 用户登录邮件系统设计1. 用户登录系统,在登录页面输入自己的账号和密码并提交。2. 系统将用户提交的账号和密码传递到业务逻辑类中。3. 业务逻辑层类再根据用户提交的账号访问数据访问类,数据访问类再根据用户账号来检测用户身份的合法性。4. 检测完毕后将验证结果返回到登录界面上显示。5. 用户在登录界面获得验证结果。如果身份验证未通过,重新登录或退出。否则继续进行下一步操作。根据基本流程,用户登录电子邮件系统的序列图如图5-3所示。图5-3 用户登录系统序列图与用户登录电子邮件系统序列图等价的协作图如图5-4所示。图5-4用户登录系统协作图5.2.2 注册新用户信息的设计1. 用户进入注册界面Form,填写用户基本信息并提交。2. 系统将用户提交的用户注册信息封装成一个对象,并将数据提交给业务逻辑类。3. 业务逻辑类根据用户提交的信息判断数据的有效性。4. 业务逻辑类再将用户注册的基本信息提交各数据库访问类。5. 数据库访问类访问数据库将用户基本信息存入到数据库中。并返回成功信息给业务逻辑类。6. 业务逻辑类根据数据访问类返回的信息跳转到相应的页面。7. 显示用户注册是否成功的具体页面给用户。根据基本流程,注册新用户序列图如图5-5所示。图5-5注册新用户序列图与注册新用户序列图等价的协作图如图5-6所示。图5-6注册新用户协作图5.2.3 用户找回密码信息设计1. 用户进入找回密码界面,输入找回密码信息并提交。用户提交的消息传递给业务逻辑类。2. 业务逻辑类访问数据访问类检测用户输入信息。数据访问类通过访问数据库检测用户输入的信息是否有效。3. 如果用户输入的信息有效则进入下一步操作,否者返回失败信息。4. 如果返回成功信息,则进入选择找回密码方式页面。如果用户选择通过回答安全问题找回密码,则进入安全问题回答页面。5. 在安全问题页面用户输入新密码和安全问题答案并提交。将用户提交的新密码信息提交给业务逻辑类,业务逻辑类再将信息传递个数据访问类。6. 数据访问类根据用户提交的新密码信息检测安全问题答案是否正确。安全问题答案正确,则根据用户提交的新密码信息修改用户登录密码。7. 安全问题答案错误,则返回错误信息给业务逻辑类,业务逻辑类将显示错误页面给用户。8. 如果用户选择的是通过安全邮箱找回密码,则直接在业务逻辑类中向用户安全问题邮箱发送密码重置电子邮件。9. 返回密码重置邮件发送成功信息,向用户展示密码重置成功页面。根据基本流程,用户找回密码用户可以分为三步,第一步检测要找回密码的用户账号是否邮箱,第二步选择找回密码方式,第三步根据选择的密码找回方式重置用户登录密码。用户找回密码用户名检测序列图如图5-7所示。图5-7 用户找回密码用户名检测序列图用户找回密码可以有两种方式,第一种是通一过安全问题找回密码,第二种是通过安全邮箱找回密码。通过安全问题找回密码是用户需要回答安全问题,当回答的问题正确时用户可以任意的修改自己想要的密码。但通过安全邮箱找回密码密码是通过系统随机生成的六位的字母和数字的密码。通过安全问题找回密码序列图如图5-8所示。图5-8 安全问题找回密码序列图通过安全邮箱找回密码序列图如图5-9所示。图5-9 安全邮箱找回密码序列图5.2.4 用户发送电子邮件设计1. 用户进入发送电子邮件界面,填写要发送电子邮件的内容并提交。2. 业务逻辑类根据用户提交的信息判断是否需要发送附件,如果需要发送附件则将附件添加到电子邮件中。3. 业务逻辑类调用发送邮件类发送电子邮件。当电子邮件发送完毕之后返回给业务逻辑类发送成功信息。4. 业务逻辑类根据返回的成功信息,返回给用户发送成功页面。5. 对于需要发送带附件的电子邮件时,电子邮件的附件需要先上传到电子邮件服务器,然后从电子邮件服务器上加载附件到邮件中。根据基本流程,用户发送电子邮件序列图如图5-10所示。图5-10 用户发送电子邮件序列图与用户发送电子邮件序列图对应的协作图如图5-11所示。图5-11 用户发送电子邮件协作图5.2.5 用户查看电子邮件设计1. 用户进入主界面,然后选择要查看邮件的邮件箱。系统根据用户选择的邮件箱加载该邮件箱中的所有电子邮件。2. 业务逻辑类根据用户提交的信息访问数据访问类。3. 数据访问类根据用户要查询的邮件夹信息加载该邮件夹中的具体信息。并返回具体的邮件信息列表。4. 业务逻辑类根据数据访问类返回的信息返回邮件列表信息。5. 向用户发送邮件列表信息页面。6. 用户在邮件信息列表页面中点击要查看的邮件的具体信息。7. 用户选择的邮件信息传递个业务逻辑类,业务逻辑类再将该数据发送到查看电子邮件类。8. 电子邮件类返回该邮件的具体信息给业务逻辑类。9. 业务逻辑类再将电子邮件的具体信息返回给邮件显示页面。10. 发送邮件显示页面给用户。根据查看电子邮件的工作流程,用户查看电子邮件序列图如图5-12所示。图5-12 用户查看电子邮件序列图与用户查看电子邮件序列图相对应的协作图如图5-13所示。图5-13用户查看电子邮件协作图5.3 系统模块的实现电子邮件系统的具体实现是采用Struts2 + Spring + Hibernate来实现的。其中Struts2主要负责用户提交数据的处理以及数据处理完成之后用户Jsp页面之间的跳转,Hibernate主要负责用户与数据库的各项操作。Spring是配合Struts2和Hibernate来实现对象的动态注入以及Hibernate操作数据库时的事务操作。另外本系统还采用Spring来实现记录系统运行的日志信息。在前台页面采用了jQuery脚本库来实现网页的动态效果,以及前台Jsp页面与后台服务器的动态交互。因为jQuery的跨浏览器性,所以采用jQuery开发的Jsp页面动态效果也具有跨浏览器性。由于系统的功能模块较多,这里只挑选一些主要功能的实现进行详细的说明。5.3.1 用户登录邮件系统的实现用户登录电子邮件系统的具体实现如以下步骤:1. 用户打开系统并进入系统登录首页面(Index.jsp页面)。在系统登录页面使用了jQuery对用户输入的数据有效行进行验证,当用户输入的信息无效时,会给用户友好的错误提示信息,当用户输入的数据有效时才能提交。2. 用户在登录页面中输入自己的账号和密码并点击登录。3. 用户提交数据到UserLoginAction类中execute方法。4. execute方法调用UserDAO的checkUser方法来检测用户信息的有效性。5. checkUser方法根据用户名和密码去调用本类中的find方法,find方法根据用户名重数据库中取出User对象,如果没有找到User则返回空对象。6. 如果find方法找到了用户User则检测用户密码是否相同,如果相同则用户登录成功(成功页面如图5-15所示),否则返回错误信息给index.jsp页面。图5-15用户登录成功页面7. 如果用户选择的登录方式是两周内自动登录,那么UserLoginAction类将根据用户输入的信息写入到客户端的Cookie中。8. 自动登录时用户客户端将Cookie发送给服务器端,服务器根据Cookie中的值判断用户是否能够登录。9. 如果用户客户端浏览器Cookie中已有用户名则在服务器端产生一个Session值,并返回给客户端登录成功页面。5.3.2 注册新用户的实现用户注册新用户的实现如以下步骤:1. 用户进入注册新用户界面,界面如图5-17。2. 用户在注册页面填写自己的详细信息,如果用户输入的信息有错误那么在注册页面会显示相应的错误信息。错误信息会在输入框的后面直接显示。3. 用户输入完自己的信息是单击提交,提交的用户数据交个UserRegiste
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!