欢迎添加微信互相交流学习哦!

项目源码:https://gitee.com/oklongmm/biye2
摘 要
由于网络中邮件管理系统繁多、业务需求多变,基于各邮件服务器的邮件管理系统的维护和业务变更变得难以进行。为了极大地方便上网用户,系统使用了B/S技术来进行开发,避免了原有的C/S结构开发所带来的弊端。并且将E-mail系统和Web应用结合起来,用户仅通过浏览器访问邮件系统即可。本邮件系统的基本功能包括:用户登录、通讯录管理、邮件收取、邮件发送、查看邮件、邮件的管理功能。
本文从软件体系结构设计模式的角度入手,首先设计和实现一个支持邮件收发、管理等基本功能的邮件管理系统,并在此基础上添加各项扩展功能。在介绍Struts2和MVC整体架构相关理论的基础上,研究如何使用这些JAVA框架和技术,使用MyEclipse开发工具构建灵活、实用的邮件收发平台。该架构的主要优点是:易于维护和扩展,方便用户的掌握和使用。
此邮箱系统功能主要分为管理员管理和用户管理两大部分,管理员管理主要包括管理用户信息、删除用户等;用户管理主要包括用户个人信息的管理、个人邮箱的管理等。该系统可以根据对功能需求进行扩展和完善。

 关键词:邮件管理系统; MyEclipse; MVC; Struts2
Abstract
Currently, there are too many E-mail Management System, and too many business changing requirements, which results of E-mail Management System maintenance and operations become difficult to change. In order to greatly convenient of Internet users, the E-mail Management System used the B/S technology to carry on the development, which has avoided the malpractice of the traditional C/S structure. And combining the E-mail Management System and the Web application, then user can visit E-mail Management System just by opening the browser. The E-mail Management System basic function: the user registers, address list management, receiving the mail, sending the mail, reading the mail, mail management function.
In this paper, it firstly begins with the software architecture patterns, and then constructs an E-mail Management System which supports the basic functions, such as sending and receiving email,managing emailbox, next add the extension. On the basis of introducing Struts2 architecture and MVC structure, the paper discusses how to use these technologies and frameworks of JAVA to build a flexible, practical online teaching platform by MyEclipse development tool. The main advantages of this structure are as follows, it solves the problems of maintainability and extendibility in traditional website systems; it enables users to more easily grasp and use this system.
This mail management system functions are divided into administrator and user management of two parts, the administrator management includes management of user information, delete users, etc.; The user management includes user personal information management, personal mailbox management. The system can be extended and improved based on functional requirements.
Key Words:E-mail Management System; MyEclipse; MVC; Struts2
目 录 TOC 1-3
HYPERLINK l _Toc261784958 摘 要 I
HYPERLINK l _Toc261784959 Abstract II
HYPERLINK l _Toc261784960 目 录 IV
HYPERLINK l _Toc261784961 引 言 1
HYPERLINK l _Toc261784962 1. 绪论 2
HYPERLINK l _Toc261784963 1.1 选题背景 2
HYPERLINK l _Toc261784964 1.2 课题意义 2
HYPERLINK l _Toc261784965 1.3 课题的研究内容 2
HYPERLINK l _Toc261784966 1.4 论文的组织结构 3
HYPERLINK l _Toc261784967 2. 理论基础与相关技术介绍 4
HYPERLINK l _Toc261784970 2.1 系统开发的工具 4
HYPERLINK l _Toc261784971 2.1.1 MyEclipse 8.6 4
HYPERLINK l _Toc261784972 2.1.2 MySQL 5.1 4
HYPERLINK l _Toc261784973 2.1.3 B/S架构编程体系 5
HYPERLINK l _Toc261784985 3.2.2 数据字典 16
HYPERLINK l _Toc261784986 3.3 系统的总体设计 18
HYPERLINK l _Toc261784988 3.3.1 系统设计思想 18
HYPERLINK l _Toc261784990 3.3.3 系统模块说明 21
HYPERLINK l _Toc261784991 3.4 本章小结 21
HYPERLINK l _Toc261784992 4. 数据库设计 22
HYPERLINK l _Toc261784993 4.1 概念结构设计 22
HYPERLINK l _Toc261784994 4.2 逻辑结构设计 23
HYPERLINK l _Toc261784995 4.3 本章小结 25
HYPERLINK l _Toc261785003 5.2.5 修改密码模块设计 33
HYPERLINK l _Toc261785004 5.3 邮箱管理模块详细设计 33
HYPERLINK l _Toc261785005 5.3.1 用户撰写和发送邮件设计 33
引 言
中国是世界上Email账号最多的国家,也是发展最快、市场环境最复杂的国家。电子邮件的发展如同一面镜子,折射出中国的网络运营商及网民们在互联网发展过程中的种种心态。无论如何,电子邮件在人们的生活、工作、学习过程中,越来越普及。同时,还有一种趋势,将多种通信手段相结合,成为一个立体的、全方位的通信网络。这中间,电子邮件也在扮演着相当重要的角色。实在难以想象,如果没有了电子邮件 (​http:​/​​/​www.chinaemail.com.cn​/​email_apply​/​ _blank​),网民的生活是如何的。 但大多网站邮箱功能过于强大,操作繁琐,不简单实用,甚至有的是收费邮箱,对于小型企业或集体用于内网通信成本过高。所以本系统针对于小范围人群内部通信设计,实现邮箱基本功能,操作简单易用。
本系统采用MyEclipse 8.6开发,后台数据库采用MySQL 5.1进行开发,系统总体分为三大模块:登录管理模块,用户身份进行验证以及注册的实现。邮箱管理模块,收发邮件和对邮件信息进行管理。通讯录管理模块,对联系人信息进行管理。
1. 绪论
1.1 选题背景
电子邮件(Electronic-Mail也称为E-mail),它是用户或用户组之间通过计算机网络收发信息的服务。目前,电子邮件是互联网上使用最为广泛的功能,现已成为公司进行顾客服务的强大工具,成为网络用户之间快捷、简便、可靠且成本低廉的现代化通讯手段,也是互联网上使用最广泛、最受欢迎的服务之一。并且现在很多高校也采用邮件方式教学和收发作业。目前互联网60%以上的活动都与电子邮件有关。
尤其如今环境资源遭到破坏,提倡环保的主题下,不论是企业还是个人都应该尽量节省纸张,采用邮件形式来传递信息,这样不仅可以环保同时也提高了效率和安全性。而邮件管理系统来处理用户收发邮件及管理邮件等基本操作是必不可少的。
1.2 课题意义
电子邮件作为现在重要的通信手段,在各种网络服务中,电子邮件系统以其方便、快捷的特点成为人们进行信息交流的理想工具。通过电子邮件人们可以以十分低廉的代价,以非常快的速度同世界上其他互联网用户联络。电子邮件的使用者数量呈几何级数增长。
当前流行的各大邮件客户端软件的除了最主要的收发信件之外,功能越来越复杂,但是人们平常真正用到的功能很少,很多功能尤其对于那些计算机知识相对缺乏的人来说,更加显得太过于华丽而不太实用。对于用户来说一款简单,方便,快捷的邮件收发系统将会在很大程度上为用户提供满意的服务,制作一款能满足用户需求的邮件收发系统是每一个设计者所追求的目标。因此希望通过本次设计完成一个简单的邮件收发系统,实现邮件的接收与发送,并能完成附件的传输,同时能实现邮件用户登录管理及邮件删除等功能,开发这个各种功能相对简单实用的邮件客户端程序,简化了很多不必要的功能,解决了小型企业和集体不能在同一平台通信交流的问题。
1.3 课题的研究内容
本课题的研究内容是使用MyEclipse开发基于MVC架构的邮件管理系统。通过对MVC设计模式和Struts2架构的研究,设计一套灵活的系统整体架构方案,方便对系统功能模块的增减和修改,以应对不同用户的不同需求,解决现有邮件管理系统复杂性和可维护性差的问题。将研究结果应用于实际系统开发,为邮件管理系统的快速开发、可维护和扩展能力提供有效的支持。为客户与员工建立一个统一而方便的信息沟通平台,利用信息技术实现信息沟通一体化、规范化,服务于工程实践。
1.4 论文的组织结构
本论文的结构分为第一章绪论,第二章理论基础与相关技术介绍,第三章系统需求分析,第四章系统总体结构设计,第五章系统详细设计,第六章系统测试,第七章总结与展望五部分来阐述。
系统需求分析主要是介绍系统的开发技术、背景和环境,分析用户对本系统的需求,描述用户端特性、运行环境、性能需求、系统功能需求等方面的需求。通过数据流程图和数据字典对系统完整的进行设计,对各个功能模块进行系统的分析划分和描述。
系统的总体结构设计是分别进行系统的逻辑设计和数据库的设计,完成数据库中各表之间的联系描述和关系描述,通过数据库E-R图表示。
系统详细设计是对系统各部件的详细设计,其中有对各功能模块的设计、系统流程图、各功能模块的代码分析和实现以及系统各界面的运行状况。
系统测试是对本系统进行测试用例,测试本系统是否可以正常运行,并分析各测试用例。
总结和展望是对本课题进行最后完整的总结,包括系统的各功能内容和特点,系统的研发体会以及系统需要改进的方面进行详细的总结。
2. 相关工具与技术介绍
2.1 系统开发的工具
2.1.1 MyEclipse8.6
MyEclipse 企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。在结构上,MyEclipse的特征可以被分为7类:JavaEE模型,WEB开发工具,EJB开发工具,应用程序服务器的连接器,JavaEE项目部署服务,数据库服务,MyEclipse整合帮助。
对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。
简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错,MyEclipse6.0以前版本需先安装Eclipse。MyEclipse6.0以后版本安装时不需安装Eclipse。MyEclipse 8.6的主要改进是在团队写作和集中工作环境的集中配置管理方面。同时MyEclipse 8.6还包含了上百个功能的改进和新特性,这些新功能和特性将让MyEclipse 8.6用户在开发代码,测试,以及部署应用方面都得到极大的便利。
2.1.2 MySQL 5.1
MySQL是一个小型关系型数据库管理系统,目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。安全性上,MySQL采用十分灵活和安全的权限和密码系统,允许基于主机的验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码安全。MySQL服务器提供了对SQL语句的内部支持,可用于检查、优化和修复表。
MySQL 5.1具备多项崭新企业级功能,包括:
 圖表及索引區間(Table and Index Partitioning) – MySQL 5.1支援五種不同的平面數據區間:類別、散列、關鍵及混合模式(即次等區間,sub-partitioning)。 图表及索引区间(Table and Index Partitioning) – MySQL 5.1支援五种不同的平面数据区间:类别、散列、关键及混合模式(即次等区间,sub-partitioning)。 透過將圖表及索引數據區間,從而使到查詢回應時間更快,因為只需掃描有關的數據區間,毋須掃描整體圖表或索引。 透过将图表及索引数据区间,从而使查询回应时间更快,因为只需扫描有关的数据区间,毋须扫描整体图表或索引。 此外,透過區間能使不同類型的儲存及其他維護程序可以更輕易、更快速部署。 此外,透过区间能使不同类型的储存及其他维护程序可以更轻易、更快速部署。
 以行列為基礎及混合式複製(Row-Based and Hybrid Replication) – MySQL 5.1提供兩個全新的複製選項。 以行列为基础及混合式复制(Row-Based and Hybrid Replication) – MySQL 5.1提供两个全新的复制选项。以列为基础的复制可以在主伺服器及后备伺服器之间复制数据的转变,而非实质SQL语句(SQL statement) ,至于混合式复制则可根据独立的SQL运行方式,作出以语句或行列为基础的复制。这项功能可为应用带来最具效率及最安全的复制程序。
 工序排程– 這個嶄新工具可讓開發人員及數據庫管理員將日常及持續進行的SQL轉為基礎的工序,在數據庫伺服器上自動執行,從而透過在Linux或UNIX的CRON或Microsoft Windows的工序排程軟件,為數據庫的特定工序提供更大的支援。 工序排程–这个崭新工具可让开发人员及数据库管理员将日常及持续进行的SQL转为基础的工序,在数据库伺服器上自动执行,从而透过在Linux或UNIX的CRON或Microsoft Windows的工序排程软件,为数据库的特定工序提供更大的支援。
 全新MySQL Query Analyzer – 太陽電腦全新的MySQL Query Analyzer工具為MySQL企業版用戶而設,可以藉著監察查詢的效能表現,從而準確更正SQL編碼問題,顯著提升數據庫應用的執行速度和減少停機時間。 全新MySQL Query Analyzer –Sun电脑全新的MySQL Query Analyzer工具为MySQL企业版用户而设,可以借着监察查询的效能表现,从而准确更正SQL编码问题,显著提升数据库应用的执行速度和减少停机时间。
2.1.3 B/S架构编程体系
B/S架构的全称为Browser/Server,即浏览器/服务器结构,就是只安装维护一个服务器(Server),而客户端采用浏览器(Browse)运行软件。B/S结构最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件 (​http:​/​​/​baike.baidu.com​/​view​/​37.htm _blank​)。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展性非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。B/S结构的程序架构是发展的趋势,从MS的.Net系列的BizTalk 2000 Exchange 2000等,全面支持网络的构件搭建的系统.。SUN 和IBM (​http:​/​​/​baike.baidu.com​/​view​/​1937.htm _blank​)推的JavaBean 构件技术等,使 B/S更加成熟。
B/S三层体系结构采用三层客户服务器结构,在数据管理层(Server)和用户界面层(Client)增加了一层结构,称为中间件(Middleware),使整个体系结构成为三层。三层结构是伴随着中间件技术的成熟而兴起的,核心概念是利用中间件将应用分为表示层、业务逻辑层和数据存储层三个不同的处理层次。三个层次的划分是从逻辑上分的,具体的物理分法可以有多种组合。中间件作为构造三层结构应用系统的基础平台,提供了以下主要功能:负责客户机与服务器、服务器与服务器间的连接和通信;实现应用与数据库的高效连接;提供一个三层结构应用的开发、运行、部署和管理的平台。这种三层结构在层与层之间相互独立,任何一层的改变不会影响其它层的功能。
在B/S体系结构系统中,用户通过浏览器向分布在网络上的许多服务器发出请求,服务器对浏览器的请求进行处理,将用户所需信息返回到浏览器。而其余如数据请求、加工、结果返回以及动态网页生成、对数据库的访问和应用程序的执行等工作全部由Web Server完成。随着Windows将浏览器技术植入操作系统内部,这种结构已成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的C/S结构应用程序是一个非常大的进步。
B/S结构的主要特点是分布性强、维护方便、开发简单且共享性强、总体拥有成本低。但数据安全性问题、对服务器要求过高、数据传输速度慢、软件的个性化特点明显降低,这些缺点是有目共睹的,难以实现传统模式下的特殊功能要求。例如通过浏览器进行大量的数据输入或进行报表的应答、专用性打印输出都比较困难和不便。此外,实现复杂的应用构造有较大的困难。虽然可以用ActiveX、Java等技术开发较为复杂的应用,但是相对于发展已非常成熟C/S的一系列应用工具来说,这些技术的开发复杂,并没有完全成熟的技术工具供使用。
2.2 系统开发的技术
2.2.1 MVC理论基础
MVC架构是Model-View-Controller的缩写,中文翻译为模型-视图-控制器。MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。
MVC架构是一种架构,其实需要其他模式协作完成。而Struts只实现了MVC的View和Controller两个部分,Model部分需要开发者自己来实现,Struts2在整合了Struts和webwork后,终于彻底实现了MVC的架构。
视图(View):代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。
模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对一个开发者来说,就可以专注于业务模型的设计。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。我们可以用对象编程来做比喻,MVC定义了一个顶级类,告诉它的子类只能做这些,但没法限制能做这些。这点对编程的开发人员非常重要。
业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据 保存(持续化)。比如将一张订单保存到数据库,从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。
控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。
模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制。模型、视图、控制器三者之间的关系和各自的主要功能,如图2-1所示。
图2-1 MVC组件类型的关系和功能
2.2.2 Struts2框架技术
Struts框架的核心是一个灵活的控制层,它基于以下标准技术,如:Java Servlet、JavaBean、资源绑定、XML和各种Jakarta Commons包。虽然Struts2号称是一个全新的框架 (​http:​/​​/​baike.baidu.com​/​view​/​66971.htm _blank​),但这仅仅是相对Struts1而言。Struts2 与Struts1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架:WebWork (​http:​/​​/​baike.baidu.com​/​view​/​25660.htm _blank​)基础上发展起来的。从某种程度上来讲,Struts2没有继承Struts1的血统,而是继承WebWork的血统。或者说,WebWork衍生出了Struts2,而不是Struts1衍生了Struts2。因为Struts2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证:而且吸收了Struts1和WebWork两者的优势,因此,是一个非常值得期待的框架。
Struts2框架是当前Web开发中最为流行的设计和开发框架,借助于Struts2框架,开发人员可以把主要精力集中在如何解决实际业务处理上,而不需要在页面和业务代码之间的处理上花费很多时间。
Struts2开发框架遵循MVC设计模式,这样可以将整个工程分为3个相对独立而又能协同工作的组成部分(包括模型、视图、控制器),开发人员可以从负责的页面代码、业务代码和控制流程中具体分工。
1) 核心控制器:FilterDispatcher
FilterDispatcher是Struts2框架的核心控制器,该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求。如果用户请求以action结尾,该请求将被转入Struts2框架处理。
Struts2框架获得了*.action请求后,将根据*.action请求的前面部分决定调用哪个业务逻辑组件,例如,对于login.action请求,Struts2调用名为login的Action来处理该请求。
Struts2应用中的Action都被定义在struts.xml文件中,在该文件中定义Action时,定义了该Action的name属性和class属性,其中name属性决定了该Action处理哪个用户请求,而class属性决定了该Action的实现类。
Struts2用于处理用户请求的Action实例,并不是用户实现的业务控制器,而是Action代理;因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求。而Struts2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action的execute方法来处理用户请求。
用户实现的Action类仅仅是Struts2的Action代理的代理目标。用户实现的业务控制器(Action)则包含了对用户请求的处理。用户的请求数据包含在HttpServletRequest对象里,而用户的Action类无需访问HttpServletRequest对象。拦截器负责将HttpServletRequest里的请求数据解析出来,并传给业务逻辑组件Action实例。
2) 业务控制器
业务控制器组件就是用户实现Action类的实例,Action类里通常包含了一个execute方法,该方法返回一个字符串;该字符串就是一个逻辑视图名,当业务控制器处理完用户请求后,根据处理结果不同,execute方法返回不同字符串;每个字符串对应一个视图名。
程序员开发出系统所需要的业务控制器后,还需要配置Struts2的Action,即需要配置Action的如下三个部分定义:
1.Action所处理的URL。
2.Action组件所对应的实现类。
3.Action里包含的逻辑视图和物理资源之间的对应关系。
每个Action都要处理一个用户请求,而用户请求总是包含了指定URL。当Filter Dispatcher拦截到用户请求后,根据请求的URL和Action处理URL之间的对应关系来处理转发。
3) Struts2的模型组件
实际上,模型组件已经超出了MVC框架的覆盖范围。对于Struts 2框架而言,通常没有为模型组件的实现提供太多的帮助。 Java EE应用里的模型组件,通常指系统的业务逻辑组件。而隐藏在系统的业务逻辑组件下面的,可能还包含了DAO、领域对象等组件。
通常,MVC框架里的业务控制器会调用模型组件的方法来处理用户请求。也就是说,业务逻辑控制器不会对用户请求进行任何实际处理,用户请求最终由模型组件负责处理。业务控制器只是中间负责调度的调度器,这也是称Action为控制器的原因。
4) Struts 2的视图组件
Struts 2已经改变了Struts1 只能使用JSP作为视图技术的现状,Struts 2允许使用其他的模板技术,如FreeMarker、Velocity作为视图技术。
当Struts 2的控制器返回逻辑视图名时,逻辑视图并未与任何的视图技术关联,仅仅是返回一个字符串,该字符串作为逻辑视图名。
当我们在struts.xml文件中配置Action时,不仅需要指定Action的name属性和class属性,还要为Action元素指定系列result子元素,每个result子元素定义一个逻辑视图和物理视图之间的映射。前面所介绍的应用都使用了JSP技术作为视图,故配置result子元素时没有指定type属性,默认使用JSP作为视图资源。
Struts2的工作流程如图2-2所示,它显示了这些组件是如何工作的。
图2-2 Struts2工作流程图
2.3 本章小结
本章主要是完整的介绍一下本系统开发的相关工具与技术,包括有:MyEclipse 8.6、MySQL 5.1,B/S 体系架构,MVC理论和Struts2技术。将这些开发工具的特点和优势做了一个详细的描述,便于在系统开发时能够充分利用所具有的特性开发系统,提高系统开发的工作效率。本邮件管理系统页面组织和控制流程采用基于MVC设计模式的Struts2开发框架,这使得整个系统分为前台展示、业务流程控制和后台开发三个独立的部分。在视图层,使用了Struts2的标签和html共同完成JSP页面;业务流程和控制转发采用Struts2框架中的控制器部分进行控制。
3. 系统需求分析
3.1 用户需求
3.1.1 系统功能需求
1. 登录管理:包括用户注册、登录和找回密码。
 注册新用户:用户可以通过申请注册使用。主要是完成收集,存用户注册时填写的信息。
 用户登录:主要功能用户登录的用户名密码与数据库中的信息进行验证。登录成功后可以修改个人密码,管理员还可以管理用户信息。
2. 邮件收发:包括写邮件、收邮件、发送邮件。
 写邮件:包含发送的主题,邮件文本内容,可以添加附件。
 发送邮件:选择发送方式,如发送或保存;对非法邮件进行拦截。
 收邮件:获得新邮件,对新邮件进行过滤分类。
3. 邮箱管理:包括收件箱,草稿箱,发件箱和垃圾箱。
 收件箱:可以查看邮件,下载邮件的附件,删除无用的邮件。
 草稿箱:用户可以对保存的邮件进行查看和删除。
 发件箱:用户可以查看曾发送的邮件,删除记录。
 垃圾箱:可以选择彻底删除垃圾邮件,或者还原邮件。
4. 通讯录模块:包括建立通讯录、查看通讯录和删除通讯录。
 新建通讯录:主要包括添加联系人的基本信息。
 查看通讯录:主要对联系人管理操作,如删除指定联系人。
 群发邮件:通过单击选择通讯录”可以对指定联系人群发邮件。
3.1.2 用户端特性
将用户分为两种类型:管理员、用户。
管理员管理系统中已注册的用户和发邮件;用户只能进行邮件的收发和管理功能的操作。
3.1.3 运行环境需求
用户对系统运行环境需求包括软件、硬件、开发等方面。
1)系统软件要求:
操作系统:Windows xp/vista/win7
开发软件:MyEclipse 8.6
数据库:MySQL 5.1
2)系统硬件要求:
处理器:P4 以上
内存:512MB以上
硬盘空间:10G以上
3)开发要求:
开发工具:MyEclipse 8.6
编程语言:Java
工具配置:JDK 1.6
3.1.4 性能需求
1)时间要求
一般操作的响应时间应在2-4秒内,对后台数据库的操作也应在可接受的时间内完成。
2)数据精确度要求
要求输入、输出数据;删除,修改记录等要保证关键字的完整性。
3.1.5 软件属性需求
1)准确性:要求本系统能够正常运行,系统不会死机。
2)高效率:系统反应速度快,工作效率高。
3)易操作性:各功能菜单、按钮简单,易懂,使用起来上手快。
4)可维护性:数据库和显示的内容都可以及时的修改和维护。
5)安全性:各权限管理规范,系统安全性强。
6)可移植性:在台式机、笔记本电脑上通用。
3.2 数据描述
3.2.1 数据流程分析
数据流程图(DFD):是一种图形化技术,是描绘数据在软件中流动和被处理的逻辑过程。以下是本系统按照功能来划分的数据流图的顶层图:
图3-1 系统的顶层数据流图
顶层数据流图仅仅是从总体上反映了系统的信息联系,按照结构化分析方法,自顶向下、逐层分解,对顶层图进行细化。细化进行到数据流图中的每一个数据处理成为一个很容易理解的单一功能,且这个单一功能可以通过简单的逻辑表达式在数据字典中予以说明。
通过对数据流的顶层图的绘制与分析得到系统的第0层数据流:
图3-2 系统的第0层数据流
第0层数据流图反映的是对系统主要数据流的方向,将其逐层细化,把数据流图中的每一个数据加工进行了分析细化。各信息管理的数据流图,其第一层数据流图如下图:

图3-3 登录管理的第1层数据流图
图3-4 邮件收发的第1层数据流图
图3-5 邮箱管理的第1层数据流图
图3-6 通讯录管理的第1层数据流图
3.2.2 数据字典
数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据字典最主要的用途就是供人查阅对不了解的条目的解释,数据字典的作用也正是在软件分析和设计的过程中给人提供关于数据的描述信息。
数据流程图和数据字典共同构成系统的逻辑模型,没有数据字典,数据流图就不严格。所以为了精确定义每一个元素,需要数据字典来将系统规格说明。
系统中的数据流:
表1:用户注册
数 据 流
系统名:邮件管理系统条目名:注册信息别名: F1
来源: 新用户
去处: user表
数据流结构:用户名,密码,密码确认,住址,性别,联系方式
简要说明:负责输入用户注册信息数据
表2:用户登录
数 据 流
系统名:邮件管理系统条目名:登录信息别名: F2
来源: 用户
去处: user表
数据流结构:用户名,密码,登录身份
简要说明:输入用户登录信息,进行身份验证。
表3:修改密码
数 据 流
系统名:邮件管理系统条目名:修改密码信息别名: F3
来源: 用户
去处: user表
数据流结构:原密码,新密码,确认新密码
简要说明:输入用户原密码并两次输入相同的新密码,验证正确后修改数据库。
表4:添加联系人
数 据 流
系统名:邮件管理系统条目名:联系人信息别名: F4
来源: 用户
去处: tongxunlu表
数据流结构:姓名,性别,年龄,电话,住址,公司,邮箱地址
简要说明:主要负责对每个用户的联系人信息进行数据添加。
表5:用户管理
数 据 流
系统名:邮件管理系统条目名:用户信息别名: F5
来源: user表
去处: 管理员
数据流结构:编号,用户名,密码,真实姓名,地址,性别,联系方式
简要说明:主要负责显示所有用户信息。
表6:查看邮件
数 据 流
系统名:邮件管理系统条目名:邮件内容别名: F6
来源: shoujianxiang表、fajianxiang表、caogaoxiang表、lajixiang表
去处: 用户
数据流结构:发件人,收件人,内容,标题,附件,时间
简要说明:主要负责对每个用户的邮件信息进行查询显示。
表7:错误提示
数 据 流
系统名:邮件管理系统条目名:错误提示别名: F6
来源: 系统
去处: 用户
数据流结构:含非法字符”
简要说明:主要负责对用户撰写邮件出现不和谐内容进行拦截。
表8:成功提示
数 据 流
系统名:邮件管理系统条目名:成功提示别名: F8
来源: 系统
去处: 用户
数据流结构:操作成功”
简要说明:主要负责对用户在系统内的各项操作提示成功。
3.3 系统的总体设计
3.3.1 系统设计思想
本系统所设计用户权限分为两类:管理员,用户。普通用户可以在系统中收发邮件以及管理邮箱的操作。管理员除了可以收发邮件的功能操作外,还可以进行对用户信息进行管理功能。
管理员的具体操作如下图:
图3-7 管理员使用系统功能模块图
用户的具体操作如下图:
图3-8 普通用户使用系统功能模块图
3.3.2 系统模块设计
通过分析整个系统,将系统的各个模块进行详细的划分,将每个模块细化出子模块:
图3-9 系统功能总模块图
3.3.3 系统模块说明
1. 登录管理模块:
对用户身份进行验证以及权限的设置等。本模块分三个子模块,注册新用户模块的功能是向系统注册新用户的基本信息;用户登录模块的功能是使用本系统上注册的用户名和密码登录;修改密码模块的功能是通过先验证用户原密码然后修改成新密码。
2. 邮件收发模块:
对用户的邮件收发进行详细的管理。本模块分为三个子模块,写邮件模块的功能是用来录入邮件的内容;收邮件模块的功能是用来接收、过滤并分类邮件信息;发送邮件模块的功能包括操作方式(发送和保存到草稿箱)和存储邮件。
3. 邮箱管理模块:
是对邮箱中的邮件信息进行详细的管理。本模块分为四个子模块,收件箱的功能是用来查看和删除邮件;发件箱模块的功能是用来存储用户发送过的邮件信息;草稿箱模块的功能是实现对保存的邮件进行编辑和删除;垃圾箱模块的功能是用来存放垃圾邮件和用户删除的邮件。
4. 通讯录管理模块:
是对所有联系人的信息管理。本模块分为三个子模块,新建通讯录模块的功能是联系人信息;查看通讯录模块的功能是列出所有联系人的信息进行查看和删除;删除通讯录模块的功能是删除单个联系人的操作;邮件群发是在通讯录列表中选择指定联系人群发邮件。
3.4 本章小结
本章从用户端的需求,分别从用户需求,数据描述,系统的总体设计三方面进行详细分析,对用户的需求做了详细的描述。第一,从用户需求分析,进行了系统功能的需求分析,用户端特性分析,运行环境需求的分析,性能需求分析,软件属性需求分析。不同方面分析用户的需求,了解用户的实际要求。第二,数据描述,通过DFD数据流程图描述了数据从输入到输出的变化过程,然后设计了数据字典来对数据流程图严格化,细致的解释各个名词只有数据流图和数据字典共同在一起才能精确定义共同构成系统的规格说明。两者相互配合,清楚地表达数据处理的过程。第三,系统的总体设计,将系统按权限的每类管理员如何使用的系统用模块图来表达。并画出系统功能总模块图,并对每一个模块进行详细地说明。
4. 数据库设计
4.1 概念结构设计
A. 管理员实体:
图4-1管理员实体
B. 用户实体:
图4-2用户实体
C. 各箱子(的邮件)实体:
图4-3 各箱子(的邮件)实体
D. 通讯录实体:
图4-4 通讯录实体
E. 实体E-R图:
图4-5 总体E-R图
4.2 逻辑结构设计
 user表(用户信息表):
字段名称 数据类型 长度 可否为空 说明
User_id Int (11) 主键 用户编号
User_name varchar (50) NOT NULL 用户名
User_pw varchar (50) NOT NULL 密码
User_realname varchar (50) NOT NULL 真实姓名
User_address varchar (50) NULL 住址
User_sex varchar (50) NOT NULL 性别
User_tel varchar (50) NULL 联系电话
 admin表(管理员信息表):
字段名称 数据类型 长度 可否为空 说明
userId Int (11) 主键 管理员编号
userName varchar (50) NOT NULL 管理员用户名
userPw varchar (50) NOT NULL 登录密码
 shoujianxiang表(收件箱表):
字段名称 数据类型 长度 可否为空 说明
Email_id int (11) 主键 邮件编号
Email_title varchar (50) NOT NULL 邮件标题
Email_content varchar (8000) NOT NULL 邮件内容
Email_fujian varchar (50) NULL 附件路径
Email_fujianyuanshiming varchar (50) NULL 附件文件名
Email_date varchar (50) NOT NULL 邮件时间
From_user_name varchar (255) NOT NULL 发邮件用户名
To_user_Name varchar (255) NOT NULL 收邮件用户名
 fajianxiang表(发件箱表):
字段名称 数据类型 长度 可否为空 说明
Email_id int (11) 主键 邮件编号
Email_title varchar (50) NOT NULL 邮件标题
Email_content varchar (8000) NOT NULL 邮件内容
Email_fujian varchar (50) NULL 附件路径
Email_fujianyuanshiming varchar (50) NULL 附件文件名
Email_date varchar (50) NOT NULL 邮件时间
From_user_name varchar (255) NOT NULL 发邮件用户名
To_user_Name varchar (255) NOT NULL 收邮件用户名
 caogaoxiang表(草稿箱表):
字段名称 数据类型 长度 可否为空 说明
Email_id int (11) 主键 邮件编号
Email_title varchar (50) NOT NULL 邮件标题
Email_content varchar (8000) NOT NULL 邮件内容
Email_fujian varchar (50) NULL 附件路径
Email_fujianyuanshiming varchar (50) NULL 附件文件名
Email_date varchar (50) NOT NULL 邮件时间
From_user_name varchar (255) NOT NULL 发邮件用户名
To_user_Name varchar (255) NOT NULL 收邮件用户名
 lajixiang表(垃圾箱表):
字段名称 数据类型 长度 可否为空 说明
Email_id int (11) 主键 邮件编号
Email_title varchar (50) NOT NULL 邮件标题
Email_content varchar (8000) NOT NULL 邮件内容
Email_fujian varchar (50) NULL 附件路径
Email_fujianyuanshiming varchar (50) NULL 附件文件名
Email_date varchar (50) NOT NULL 邮件时间
From_user_name varchar (255) NOT NULL 发邮件用户名
To_user_Name varchar (255) NOT NULL 收邮件用户名
 tongxunlu表(通讯录信息表):
字段名称 数据类型 长度 可否为空 说明
id int (11) 主键 编号
name varchar (50) NULL 联系人姓名
sex varchar (50) NOT NULL 联系人性别
age varchar (50) NULL 联系人年龄
tel varchar (50) NULL 联系人电话
address varchar (50) NULL 联系人地址
gongsi varchar (50) NULL 联系人公司
emaiadd varchar (50) NOT NULL 联系人邮箱地址
User_Id int (11) NOT NULL 使用通讯录的用户ID
4.3 本章小结
本章对本系统数据库的设计思路做了综合描述,根据邮件系统的上述需求,搭建了相应的数据库表,来存储本系统中所有要用到的信息。本章采用实体E-R图来分析描述概念模型。通过各个实体间的联系来表达、设计数据库,并利用数据字典表达各数据流,数据库的设计对系统之后的设计与开发奠定了良好的基础。
5. 系统详细设计
5.1 系统模块总设计思想
本系统中各个模块的设计思想都是经过分析、定义、设计模块内数据结构,画流程图进行分析、对每个字段进行描述说明后进行确定的。所以能够确保设计思路清晰,系统运行正常。在经过调研后,了解了邮件用户的需求,为了适应用户的需求,其中邮件管理模块和通讯录管理模块的设计思想均来自于现有邮件网站的操作内容。本系统的界面设计简朴,清新,各个功能按钮设计简约,能够使用户的操作简单易懂。对整个系统模块设计主要是:登录管理模块、邮件收发模块、邮件管理模块。每个模块都包含子模块,如下是对模块的详细设计进行分析。
5.2 登录管理模块详细设计
5.2.1 新用户注册设计
1) 设计思想:
新用户注册的功能顾名思义是用来注册新的用户,当成为本系统的用户后才可以使用本系统,所以首先新用户要在本系统注册合法身份。在新用户注册模块中,填写的内容包括用户用户名、密码、姓名、地址、性别和电话。当所有信息填写完整后,可以点击确定”按钮,系统将提示注册成功”并将所输入的信息保存入数据库user表中。如果输入的用户名数据库中已经存在,那么系统会提示用户已存在”的提示。用户需要修改注册的用户名。
2) 该模块时序图:
图5-1 注册模块时序图
3) 设计实现
如图5-2所示即为用户注册界面的设计结果,当用户填写完所需要填写的信息之后,单击注册”按钮,即可注册成功。而用户在登录系统之后,会提供修改个人密码的界面,只是不能修改用户名,修改密码界面将在后面介绍。
图5-2 新用户注册界面
用户注册的页面主要包括userReg.jsp,由用户注册的界面设计中可知,注册用户时主要是需要填写用户的基本信息,如用户名、密码等,当用户单击注册”按钮保存填入的数据时,页面需要将这些页面的表单取出来。在本页面的处理时,将JSP页面的提交对象request作为参数,传进UserAction.java类的方法中,然后进行用户新增。在执行添加新用户之前,需要检验新输入的用户名是否在系统中存在,一旦存在则不允许添加,因为用户名是标志一个用户的惟一信息,然后再根据表user组合INSERT语句,执行数据库的新增操作。
此图为新用户注册成功后显示出来的新界面,其内容中含有用户注册中的一些基本信息。如图5-3所示。
图5-3 新用户注册成功界面
5.2.2 登录模块设计
1) 设计思想:
登录系统时,要求用户输入自己的用户名名和密码。如果用户所输入的用户名和密码正确则直接跳转到邮件管理系统主界面。如果用户没有输入用户名和密码,或者用户名和密码错误,则提示登录失败的。登录模块实现了用户登录的功能。
2) 该模块流程图:
图5-4 登录模块时序图
3)设计实现
管理员、用户登录的界面中,包括用户名和密码得输入文本框,以及提交登录按钮和重写按钮。管理员登录界面如图5-5所示。
图5-5 管理员登录界面
用户的登录,使用的是类TUser.java,UserAction.java等,其中User.java是专门为用户写的一个类,同时也作为一般用户的登录类,该类的主要属性代码如下:
TUser类:
private Integer userId;
private String userName;
private String userPw;
private int userType;
private String userRealname;
private String userAddress;
private String userSex;
private String userTel;
private String userEmail;
TAdmin类:
private Integer userId;
private String userName;
private String userPw;
在执行登录时,页面emailWebRootlogin.jsp调用loginService.java文件中的方法对所填写的信息进行接收,并通过select语句查询user表或admin表,对管理员或用户的登录信息进行验证。
5.2.3 系统主界面设计
1) 设计思想:
将所有模块放入左边功能菜单中,按照用户使用方便的原则分为三个部分,分别为基本操作,邮件管理和我的草稿箱。将常用的密码修改和系统属性放在基本操作部分中;收件箱、发件箱、垃圾箱、发邮件和清空垃圾箱放在邮件管理中,方便用户无需寻找,直接点击使用。
2) 设计实现
当用户登录系统之后,即可对系统进行使用。页面上方对用户友好问候,并设有退出链接。系统提供邮件管理、通讯录管理、更改个人密码和退出系统等各种功能,在页面左侧需提供以上功能的入口。其中用户管理”只有以系统管理员身份登录才显示,系统每一个页面的设计如图6.8所示。
图5-6 系统主界面
如图5-6所示的界面格式在系统每个页面的都相同,所以在其他界面的设计上就不再赘述。
5.2.4 管理员模块设计
1) 设计思想:
管理员可操作的功能主要就是对用户信息的管理,也可以修改自己的密码。对用户信息的维护就是将不再使用本系统的用户进行删除操作。在系统用户列表中挑选删除的对象,点击删除”按钮,系统会确认确定删除该用户?”,点击是”,系统提示用户已删除对话框。后台数据库得到响应,帮助实现以上操作。
2) 该模块时序图:
图5-7 用户管理模块时序图
3) 设计实现
用户的信息需要由系统管理员来进行管理和维护。为此,设计了用户列表的界面,该界面中需要包括如下的信息:用户的ID号(数据库表中的编号)、用户名,还应该提供用户管理的入口,包括删除等,还应该提供可以查看详细资料的查看入口来显示用户的基本信息,以及用来填写所要查询用户的用户名的文本框和查询按钮。注册用户列表页面设计如图5-8所示。
图5-8 管理员用户管理界面
关于管理员进行用户管理,其中主要使用的是类UserManager.java,当然缺少不了用户类User.java和其他一些进行基本处理的类。根据界面部分的设计可知,用户的管理包括的功能有取得所有用户的列表、查看用户基本信息、删除用户,因此根据这些功能的需要,在该类中逐一设计了这些功能。
管理员查看用户列表的页面代码源文件为emailWebRootadminserMana.jsp,这个页面主要是执行表user的SELECT查询语句,查得的结果是多行记录,通过UserAction的UserMana()方法查询出所有的记录,保存在list类型变量userlist中再传回JSP页面输出。删除用户通过UserAction的UserDel()方法执行。
5.2.5 修改密码模块设计
此项管理是能让各个用户(包括管理员)修改自己的密码,当用户登录后,根据前面所设计的用户界面可知,用户登录系统之后可以修改自己的基本资料,该界面对应的jsp页面为userPw.jsp。修改基本资料使用的是UserManager.java中的方法updateUser,修改的方法是根据JSP页面的提交对象request作为参数,然后取得所提交的数据,调用修改用户信息方法。如图5-9所示。
图5-9 用户修改资料界面
5.3 邮箱管理模块详细设计
5.3.1 用户撰写和发送邮件设计
用户登录后,主要的工作就是对邮件的管理,毕竟这是个简易邮件系统,因此系统默认进入到邮件管理的界面。而邮件管理又分为收件箱、草稿箱、发件箱、垃圾箱、通讯录、新邮件等功能,因此要为它们都设计按钮,单击各个按钮,则进入各自的功能界面。为了界面的美观,可以寻找具有代表性的图标作为按钮。而当单击新邮件”按钮进入邮件的撰写界面时,则要提供收件人、标题和内容的输入文本框,其中收件人和标题在文本框中输入,而内容则提供文本区域进行输入。界面设计的结果如图5-10所示。
图5-10 用户撰写邮件界面
上传附件的过程是点击上传”按钮,出现如下图所示的页面,选择好文件后点击提交”按钮,然后JSP页面会通过requst提交路径,在upload.java中调用upload方法接收路径。JSP中上传文件路径的代码如下:

上传附件如图。
图5-11 上传附件界面
上传附件成功如图。
图5-12 上传成功界面
在如图5-10所示的界面中填写完所需要填写的信息之后,单击发送”按钮,邮件则会被发送出去;单击保存”按钮,邮件则被保存在草稿箱中;单击重置”按钮,所填写的信息都会被清空,用户则需要重新填写。其中收件箱、发件箱、草稿箱、垃圾箱和通讯录等按钮界面,在以后的界面设计中就省略掉了,不再赘述。
用户登录系统之后,就可以使用邮件管理的功能,首先是撰写邮件,然后是发送邮件。在用户撰写发送邮件的界面中可知,注册用户时需要填写邮件的基本信息,如收件人、标题和邮件内容等,在用户单击发送”或者保存到草稿箱”按钮保存填入的数据时,页面需要将这些页面的表单取出来。在本页面的处理时,将JSP页面的提交对象request作为参数,传进emailAction.java类中,进行对邮件的新增操作。在执行发送邮件之前,需要检验新输入的收件人是否在系统中存在,一旦存在则不允许发送,然后再将完整的email信息存入数据库中。
以上发送邮件的代码所做的工作主要如下:
(1)检验所填数据或者信息的合法性,如必须填写的信息是否填写、所填写的信息是否按照要求填写等。
(2)检查收件人在系统中是否存在,即检验收件人的合法性。
(3)根据是保存还是发送,对数据库进行操作。如果是保存,则把所编写的邮件保存在发件箱中;如果是发送,则可在已发邮件找到所发送的邮件。
5.3.2 用户邮箱管理设计
1) 设计思想:
当用户把邮件发送出去之后,收件人在收件箱中即可看到收到的所有邮件。和平时所用的邮箱的收件箱一样,此界面为所有邮件的列表信息,具体显示发件人、主题(邮件的标题)、日期和大小等内容。如果要查看邮件的详细信息,则单击主题上提供的超链接即可。用户对收件箱进行清理,删除所有不用的邮件,所以要提供删除”和清空收件箱”按钮,在邮件列表的每一条邮件后面都提供有复选框,用来选择所要删除的邮件。发件箱、草稿箱和垃圾箱设计和操作基本一样。
用户收件箱管理界面设计如图5-13所示。
图5-13 收件箱界面
草稿箱、发件箱和垃圾箱要实现的功能,也都是先显示在一定状态下的所有邮件的列表中,功能实现过程与收件箱类似,不再一一重复介绍。
用户在撰写邮件特别是撰写到一半时,可以先单击保存”按钮保存到草稿箱中等待以后处理,在草稿箱中可以查看没有发送的邮件。这个页面的源代码文件为emailFromMy_caogao.jsp,实际上前面所要提到的发件箱、收件箱和垃圾箱主页面都是类似于此jsp文件的不同页面,只不过根据所不同的页面调用emailAction类的方法也不同,访问数据库中的表是对应自己箱子的表,如草稿箱select from shoujianxiang表,垃圾箱select from lajixiang表,把select的结果邮件信息存放到list对象emaillist中,然后返回。在界面上只要取出emaillist中的数据即可。
5.4 通讯录管理模块详细设计
5.4.1 添加联系人设计
用户对通讯录的管理包括查看联系人、添加联系人和群发邮件。添加联系人的操作是将通讯录信息存储到数据库,存储的通讯录信息包括编号、姓名、性别、年龄、联系方式、住址、公司和email地址。所有信息填写完整后,可以点击提交”按钮,系统将提示操作成功”并将所输入的信息保存入数据库tongxunlu表中,为了区别通讯录是哪个用户的联系人,数据库通讯录表中用userId属性来区分。此页面为tongxunluAdd.jsp显示如图5-16所示。
图5-16 添加通讯录界面
图5-17 查看通讯录界面
添加的过程是通过上图所示的JSP页面,将JSP页面的提交对象request作为参数,传进tongxunluAction.java类的方法中,然后进行联系人新增。
5.4.2 邮件群发设计
邮件群发功能的设计和普通发送邮件一样,只是可以多个选择联系人,在文件emailAction.java的emailAddQun方法中循环获得email地址,然后用,”将每个email地址分开,再按每个地址发送邮件。群发的页面如图5-18所示。
图5-18 查看通讯录界面
点击选择通讯录”后出现图所示的选择页。
详细代码emailAddQun方法如下:
public String emailAddQun()
{
Map request=(Map)ServletActionContext.getContext().get(request);
for(int i=0;i {
if(emailTitle.indexOf(youjianguolv.fandong().get(i).toString()) != -1)//判断是否包含
{
request.put(msg, 含有非法字符);
return msg;
}
}
String[] a= toUserName.split(,);
for(int i=0;i {
TEmail email=new TEmail();

email.setFromUserName(fromUserName);
email.setToUserName(a[i]);
email.setEmailTitle(emailTitle);
email.setEmailContent(emailContent);
email.setEmailDate(new Date().toLocaleString());
email.setEmailFujian(emailFujian);
email.setEmailFujianyuanshiming(emailFujianyuanshiming);

email.setDel(0);//0:发送正常,1垃圾箱,2彻底删除,3保存到草稿箱
emailDAO.save(email);
}

this.setMessage(操作成功);
this.setPath(auser/tongxunlu/emailAddQun.jsp);

return succeed;
}
5.5 本章小结
系统详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,系统详细设计阶段的主要任务是进一步完善系统功能,从各个角度对整个系统进行了数据库的详细设计、界面的详细设计、数据流程逻辑的设计。
本系统详细设计阶段的工作内容主要包括,各子模块的设计思想,每个模块的详细设计流程图,每个模块使用的业务逻辑方法,以及实现每个模块的相关代码分析。通过对每个模块进行详细设计,对设计思想进行了详细的描述,对系统的细节更加认识与明确,也分析了实现相关内容代码和相关流程。
6. 系统测试
6.1 系统测试目的
系统测试的目的就是测试人员努力设计出一系列测试方案,为了破坏”已经建造好的软件系统----竭力证明程序中有错误,不能按照预定要求正确工作。所以软件测试的目的与规则:
(1) 测试时为了发现程序中的错误而执行程序的过程。
(2) 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。
(3) 成功的测试是发现了至今为止尚未发现的错误的测试。
软件测试的正确定义是为了发现程序中的错误而执行程序的过程”,测试阶段根据软件开发的每个功能结构,设计一组测试用例,利用测试用例执行程序,来检验每个功能能否正常使用,如果软件有BUG,找出软件中潜在的各种错误和不足,修改错误,使系统正常运行。
6.2 系统测试方法
测试分为两种方法:如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用;如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。前一种方法称为黑河测试,后一种方法称为白盒测试。
对于软件测试而言,黑盒测试把程序看做一个黑盒子,完全不考虑程序的内部结构和处理过程,就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当的接受输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息(例如,数据库或文件)的完整性,黑盒测试又称为功能测试。
白盒测试的前提是可以把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作,白盒测试又称为结构测试。
通过认识了解本系统的特点,于是采用黑盒测试方法为本系统测试。通过黑盒测试可以测试到每一个功能,看看其是否运行正常。
6.3 本章小结
本章主要对系统进行了功能的测试,通过黑盒测试方法设计出了很多组测试用例。利用各个测试用例的得出不同的测试结果,并对结果进行了分析。系统测试的目的在于检验系统各个功能能否都可以在不同条件下正常工作,是否会出现异常运行,系统中是否还存在错误,系统测试是用来保证系统的质量好坏,系统的各方面完整的。本系统通过一系列的测试用例测试后,一切正常。
7. 总结与展望
7.1 本文总结
在Web技术的发展过程中,软件体系所采用的方式由早期的基于C/S (Client/Server)模式应用系统向基于B/S(Brower/Server)模式应用系统进行了改变。邮件管理系统是基于B/S模式应用的系统,它解决了传统的网站系统不能够很好的集成和维护的缺点,采用较灵活的Struts2的框架进行系统设计,使得系统具有很好的维护性和可扩展性。
邮件管理系统建设的难点,关键是适应多变的应用需求,如何快速高效的建设各类管理信息系统成为困扰开发者的一大难题。在实际的系统开发中,首先设计出共性的软件开发框架,然后随着研究的深入和应用的拓展,不断地完善框架基础上的构件,逐步形成合理的网站系统,无疑是一种良好的解决方法。
我在进行毕业设计的过程中,不断地遇到各种问题,然后分析问题产生的原因进而想方设法解决问题。这样一方面使系统的设计逐步完善,另一方面使自己不断积累软件设计方面的技巧。其中一些比较深刻的经验体会,首先要根据软件工程来制定出一套适合自己的软件开发时间和进程,严格按照时间和进程来进行操作,然后是一定要做好系统分析,系统开发的关键在于对系统进行需求分析,在开发一个系统的初期,首先要对系统的整个工作流程,需要实现的功能,用户的需求等进行充分的分析。在做好需求分析的前提下才能顺利的完成整个系统的开发,否则可能会在开发的过程中出现不断修改不断出错的问题,甚至是一段时间后发现之前所做的设计与要求相去甚远而必须丢弃重做。这将给系统的开发带来很大的麻烦,甚至直到最后也未能达到理想的开发效果。其次是开发数据库应用系统一定要做好数据库的分析与设计,完全整理通顺系统中的数据流图,各部分E-R图和系统总体E-R图后才进行数据库的逻辑结构设计。我就因为开始设计数据库中的邮件存储不合理,导致程序做出来后删除后的邮件在邮箱中出现错误,结果要重新设计数据库和重新写数据访问层的程序,甚至有点耽误了进度,所以数据库的设计十分重要,需要仔细考虑。
这次开发的邮件管理系统在基本功能上已经完成,设计了邮件系统所有功能块,系统的关键部分主要集中在通信簿的管理和邮件管理两部分上。该系统可以根据需求对功能进行扩展和完善。另外,此邮件系统可以作为某一系统的某一部分,可以把此系统作为组件形式,稍作修改添加到所要开发的系统中。
本系统在开发过程中的最大特色如下:
(1)根据各个模块的功能需要,设计编写了功能完善的JavaBean组件,使得整个系统界面和功能的设计思路非常清晰,而且易于维护和扩展。
(2)操作流程的清晰化,从用户注册、通讯录管理以及邮件的处理,通过使用的流程来贯穿整个系统的设计过程。
(3)管理员与用户模块的分开处理,同时又兼顾整个流程的连续性。
但是由于毕业设计时间的关系,该系统还有许多不足之处,比如用户界面不够美观,程序比较烦琐等多方面问题。这些都有待进一步改善。总之,当今网络技术日新月异、高速发展,为了适应这种变化,本系统还需要各个方面的努力来使它不断完善。
7.2 系统改进
首先,页面的设计方面,邮件管理系统还有很多有待改善的地方。目前的页面过于简单,甚至枯燥。在页面的贴图和用色上没有经过细致的思考和设计,仅仅完成了显示信息的基本要求。在今后的改进中,页面总体应向着色彩丰富,色调温和的方向改进;字体和功能选择的按钮设置,也应调整为富于个性和朝气的类型。
其次,本系统在功能方面仍存在不足。目前的联系人的添加只局限于用户手动添加,不能从收件箱里直接添加,并且给联系人加个组群更加便于查看和管理。要完善本系统,还需要经过一段时间的改正和功能添加。对于邮件管理系统的功能,可以多留出一些接口,为后续功能的扩展和修改预留出足够的空间。本系统在设计时的考虑就是适应各种多变的需求,并减少维护人员工作,所以希望在以后的完善中可以将各种不同功能设计成完整的模块,在需要添加功能时,只需获得该功能的相关文件,加入工程项目中,简单配置后即可马上使用。
致谢
近一个学期的毕业设计已经结束了,在这段设计时间里,我得到了许多师生的关心和帮助,尤其是我的指导教老师,非常感谢我的导师老师。她为人随和热情,但在治学态度上严谨细心, 非常敬业的工作作风和大胆创新的进取精神对我产生重要影响。平时她总是能像知心朋友一样鼓励你,在论文的撰写和措辞等方面她也总会以专业标准”严格要求,从选题、定题开始,一直到最后论文的反复修改、润色,何老师始终认真负责地给予我深刻而细致地指导,帮助我开拓研究思路,精心点拨、热忱鼓励。正是何老师的无私帮助与热忱鼓励,我的毕业设计才能够得以顺利完成,谢谢何老师。
我还要感谢,感谢答辩组老师。是他们对我的毕业设计提出了中肯的指导意见和要求,改正了我在毕业设计中不合理或错误的地方,对我的毕设全过程起到了指引的作用,使我顺利的完成毕业设计。
同时,我还要感谢在整个大学期间所有教过我的老师们。没有他们谆谆的教诲和悉心教导,我是没办法积累如此多的知识,让自己顺利的完成毕业设计。
最后,我还要感谢在整个毕业设计期间提供给我任何形式上帮助的同学和朋友们,正因为有了大家的帮助,才使我能够顺利的完成毕业设计课题。
通过这次毕业设计,使我学到了很多技术和业务知识,为今后的工作和学习积累了大量的宝贵经验。在此,我再一次向他们表示衷心地感谢!
参考文献
[1]闫术卓,杨强.Struts2技术详解:基于WebWork核心的MVC开发与实践.电子工业出版社,2008
[2]高红岩.Struts实用开发指南——基于MVC+MyEclipse的Java Web应用开发.科学出版社,2008
[3]李刚.Struts2权威指南——基于WebWork核心的MVC开发.电子工业出版社,2007
[4] 李刚.轻量级Java EE企业应用实战——Struts2+Spring+Hibernate整合开发. 电子工业出版社,2008
[5]孙更新,宾晟,宫生文.Java程序开发大全:基于MyEclipse平台+Struts+Hibernate+Spring主流框架开发.中国铁道出版社,2010
[6]张孝祥,方立勋. Java邮件开发详解.电子工业出版社,2007
[7]赵慧勤,张景安,傅文博等.网络数据库应用技术.机械工业出版社,2005
[8](澳)拉夫利.精通Struts2(,译李进华).人民邮电出版社,2009
[9](荷)范德兰斯.MySQL开发者SQL权威指南(,译许杰星,李强等).机械工业出版社,2005
[10] Vivek Chopra,Jpn Eaves,Rupert Jpmdes.(,译朱涛江等).JSP高级程序设计.人民邮电出版社,2006
[11]温谦.HTML+CSS网页设计与布局从入门到精通.人民邮电出版社,2008
[12]Don Brown,Chad Davis,Scott Stanlick.STRUTS2 IN ACTION.Manning Publications,2008
[13]JeffFriesen.Java 2 by Example.Que,2001
[14] 孙卫琴,李洪称. Tomcat与Java Web开发技术详解[M]. 北京:电子工业出版社,2003.
[15] 何成万,余秋惠. MVC模型2及软件框架Struts的研究[J]. 计算机工程,2002,06:274-276
9

基于JSP的JAVA email邮件系统研发相关推荐

  1. javaweb基于JSP开发Java在线学习平台 大作业 毕业设计源码

    基于JSP开发Java在线学习平台:(毕业设计/大作业) 开发环境:    Windows操作系统 开发工具: MyEclipse+Jdk+Tomcat+MYSQL数据库 运行效果图: 基于JSP开发 ...

  2. 基于Jsp、Java、数据库、HTML实现网上投票系统(含文档和代码)Jsp课程设计

    目录 摘要 第1章 课程设计内容及要求 第2章 系统分析 2.1 系统简介 2.2 系统功能 第3章 系统设计 3.1 开发工具简介 3.2 总体功能模块设计 第4章 系统实现 4.1 数据库实现 4 ...

  3. 基于jsp+mysql+java+ssm高校学生成绩管理系统——计算机毕业设计

    项目介绍 学生成绩管理作为一所高校对学生评价的一个标杆,它直接的体现了学生在校学习的成果.由于近年来很多学校都在扩大规模,在校学生数量甚至破万,倘若单一的采用人工记录成绩的方法明显已经显得力不从心,因 ...

  4. 基于JSP+Mysql java教师教学质量测评系统

    介绍: JSP+Mysql教师教学质量测评系统论文 要求系统能够实现以下功能: (1)要求学生能够对教师进行教学质量评估 (2)要求教师能够查看评教 (3)要求管理员能够对学生.教师信息进行插入,删除 ...

  5. 基于jsp+mysql+java+ssm驾校预约管理系统——计算机毕业设计

    项目介绍 驾校预约管理系统是一个高校用来管理教员和学员的授课信息并存储档案必需的一个管理系统,由于时代的进步,它成为了一个现代化管理不可缺少的一部分.它的查询的方便简洁,可以为一个驾校经营者节约足够的 ...

  6. 基于jsp+ssm+java的干洗店洗衣管理系统-计算机毕业设计

    项目介绍 会员信息:会员号.注册日期.会员姓名.年龄.会员卡余额.联系电话.家庭住址等:衣服信息:衣服编号.衣服描述.收取日期.数量.衣服种类.状态(待洗.已洗).会员姓名.收费金额等.试设计干洗店洗 ...

  7. 基于jsp+mysql+java+ssm高校学生心理测评网站——计算机毕业设计

    项目介绍 如今使用计算机对高校心理测评的各项基本信息进行管理,比起手工管理来说既方便又简单,而且具有易于管理.搜索速度快.存储量大等多个优点.将其使用在高校心理测评管理中,不仅能够提高高校心理测评管理 ...

  8. 基于jsp(java)工资管理系统的设计和开发(含源文件)

    获取项目源文件,联系Q:1225467431,可指导毕设,课设 论文是本团队帮同学做过的案例,需要毕业论文设计(论文+源程序+答辩PPT)的同学联系799523222 论文是本团队帮同学做过的案例,需 ...

  9. 基于jsp、ssm手机商城系统

    基于jsp.java.ssm框架手机销售商城系统 开发工具:eclipse (可以在IDEA上运行) 数据库:mysql,redis缓存 Echart制作图表 项目使用maven构建 系统分用户前台和 ...

最新文章

  1. 机器学习中的梯度下降法
  2. RabbitMQ和Kafka到底怎么选?
  3. (1) openssl基础概念
  4. Java 修饰符、运算符笔记总结
  5. git如何上传所有的新文件
  6. 好用的时间戳转化插件
  7. table 首先冻结_首先记录异常的根本原因
  8. python列表逐行写入excel_python表格数据到excel-想问下python3怎么将列表数据逐行写入excel表格呢?...
  9. c语言检查密码是否出现回文,C程序检查数字是否为回文
  10. 按顺序插入图片_MysqlInnodb特性之插入缓存
  11. ov5640_rgmii_udp
  12. LabVIEW编程LabVIEW开发1920 LCR仪表例程与相关资料
  13. Linux基础命令(管理工具)
  14. 编译超频Android内核,安卓超频工具apk下载
  15. opencv安装过程出现opencv_world300d.dll加载失败
  16. Your task is to Calculate a + b.
  17. Python编曲实践(八):我,乔鲁诺·乔巴那,能用两百行代码写出JOJO黄金之风里我自己的出场曲!
  18. matlab向量殿臣,matlab课后习题答案.doc
  19. 基于OpenCV的音频频谱优化(仿酷狗频谱)
  20. 如何解决ASP.NET网站更改后上传到IIS,看到的依然是旧版内容的问题

热门文章

  1. 整合营销下的SEO优化排名策略
  2. onda 昂达 V919 air ch V1 系统更新win10最新版无bug--wifi修复和开机键音量键修复
  3. matlab 函数pdf怎么用_办公小技巧:图片怎么转换成pdf格式?这个转换方法超好用,用过的都说好...
  4. 如何对NetSuite售前进行报价
  5. Android QQ音乐/酷狗音乐锁屏控制实现原理,酷狗锁屏
  6. 【已经开源】基于opencv+pyqt的人像美容系统
  7. ur机械臂 控制器_UR机械臂 tcp/ip 远程控制编程实现详解 c++ UR script
  8. 用python做一个车牌识别_如何用 Python 识别车牌
  9. node.js爬虫中关村在线电瓶车信息
  10. 23个java大数据处理框架