版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于java的邮件系统的设计与实现.../摘要电子邮件的使用简易,投递迅速,收费低廉,易于保存,全球畅通无阻,使得电子邮件被广泛地应用,当前流行的各大邮件系统除了最主要的收发信件之外,功能越来越复杂,但是人们平常真正用到的功能很少,很多功能尤其对于那些计算机知识相对缺乏的人来说,更显得太过于华丽而不太实用。鉴于此,开发一个集收、发、管理为一体的功能相对简单实用的电子邮件系统可以大大方便我们对邮件的收发和管理。基于B/S架构的邮件管理系统以mySQL数据库,使用JAVA技术开发而成。是一款融合了邮件发送、邮件接收、个人邮件管理等功能的计算机软件系统。其中邮件发送和接收是系统的两大特色,用户可以发送指定帐户的邮件,并且可以接收到指定帐户上的邮件,这些帐户都是用户可以在本邮件管理系统中设置的,同时,还可以将自己发送的邮件保存到发件箱供以后查看。本论文以软件工程理论为指导,论述了系统的设计构想,分析了系统开发各个阶段的主要任务,并详细阐述了系统各个功能模块的实现原理及解决方案。是对系统开发过程的详细说明与总结。关键词:MySQL,Java,SMTP;POP3AbstractEmailhasbeenincreasinglypopularthesedayssinceitissimple,instantaneous,globallyused,cheapandeasytosave.Thecurrentmainstreamemailsystemsembracemoreandmorecomplicatedfunctions,farbeyondthebasicslikesendingandreceivingmails.However,peopledonotreallyuseallthesefancyandimpracticalfunctions,especiallyforthosewhoknowfewaboutcomputers.Therefore,itwouldbeofgreatusers’
conveniencetodevelopasimple,practicalanduser-friendlyemailsystem,whichintegratessendingandreceivingfunctionswithemailmanagemenTheWebbasedinternetemailsystem,whichusestheMYSQLdatabaseandisdevelopedbyJAVAtechnology,isonecomputersoftwaresystemthatcombinessendingandreceivingemailswithpersonalemailsmanagement.Itsmainfeaturesincludesendingandreplyingemails.Userscansendandreceivemailsofpre-settingmailaccounts,andsaveandviewthesentemailslater.Thepresentpaper,withsoftwareengineeringtheoryasguidance,discussedthesystemdesignconceptandanalysisthemaintaskofthevariousstagesofsystemdevelopmentandintroducedthesystemprincipleandsolutionsofthevariousfunctionalmodules.Thepapersummarizedthesystemdevelopmentprocess.Key
Words
:MYSQL;SMTP;POP3;JAMES目录1绪论11.1课题研发背景11.2选题的意义12可行性分析22.1经济可行性分析22.2技术可行性2ts2简介22.2.2Spring简介32.2.3Hibernate简介42.2.4NetBeans开发工具简介42.2.5MySQL简介52.2.6Tomcat服务器简介52.2.7pop3协议简介62.2.8SMTP简介63系统需求分析83.1功能需求分析83.2性能需求分析113.3数据库需求分析114概要设计144.1逻辑结构设计144.2系统功能结构设计144.2.1用户登录邮件系统的工作流程164.2.2注册新用户信息的工作流程174.2.3用户找回密码信息工作流程184.2.4用户添加联系人信息工作流程224.2.5用户发送电子邮件工作流程244.2.6用户查看电子邮件工作流程255详细设计285.1数据库的实现285.2系统模块的实现295.2.1用户登录邮件系统的实现305.2.2用户发送电子邮件的实现315.2.3用户查看电子邮件的实现325.2.4用户找回密码的实现335.2.5用户查看联系人的实现355.2.6用户添加联系人的实现366系统测试386.1单元测试386.2集成测试396.3系统测试417总结与体会43致谢44参考文献45...1绪论1.1课题研发背景电子邮件<简称E-mai1>又称电子信箱,它是用户或用户组之间通过计算机网络收发信息的服务。目前,电子邮件是互联网上使用最为广泛的功能,现已成为公司惊喜顾客服务的强大工具,成为网络用户之间最快捷方便,可靠且成本低廉的现代化通讯手段,也是互联网上使用最广泛、最受欢迎的服务之一。并且现在很多高校也采用邮件方式教学和收发作业。目前互联网上百分之六十以上的活动都与电子邮件有关。尤其如今环境资源遭到破坏,提倡环保的主题下。不论是企业还是个人都应该尽量节省纸张,采用邮件的形式来传递信息,这样不仅可以环保同时也提高了效率和安全性。而邮件管理系统来处理用户收发电子邮件及管理邮件等基本操作是必不可少的。1.2选题的意义当前流行的各大邮件客户端软件的除了最主要的收发信件之外,功能越来越复杂,但是人们平时真正用到的功能很少,很多功能尤其对计算机知识缺乏的人来说,更加显得过于华丽而不太实用。对于用户来说一款简单,方便,快捷的邮件系统将会在很大程度上为用户提供满意的服务,制作一款能够满足通用户需求的邮件系统是每个设计者所追求的目标。因此希望通过本次设计完成一个简单的邮件系统,同时能实现邮件用户登录管理及邮件删除等功能,开发这个各种功能相对简单实用的邮件客户端程序。简化了很多不必要的功能,解决了小型企业和集体不能在同一平台通信交流的问题。2可行性分析可行性分析也称可行性研究,是决策部门在采取一项重大改革或投资行动之前,对该项目的必要性和可能性进行分析与论证的活动。可行性分析已被广泛应用于新产品开发、基建、工业企业、交通运输、商业设施等项目投资的多个领域。在展开一项开发行动之前,必须对用户提出的目标的必要性和可能性进行必要的论证。可行性分析是在进行初步调查后所进行的对系统开发必要性和可能性的研究,所以也称为可行性研究。信息系统也应从技术可行性,经济可行性和社会可行性三方面来论证。2.1经济可行性分析基于java的电子邮件系统是基于Java的而Java是开源免费的,另外该系统所采用的Tomcat服务器、James邮件服务器以及MySQL数据库服务器都是开源免费的,这样在成本上势必会降低很多。现行的公司大型的邮件系统所提供的功能基本很多都是很少用到的,花大量的成本去开发很少用到的功能对于一般的小公司来说是完全没有必要的。基于java的电子邮件系统是只开发了与电子邮件有关的基本功能,这样即减少了开发成本又提高了开发效率。对于一般的小型公司来说该系统经济上是完全可行的。2.2技术可行性技术可行性分析主要包括硬件和技术等几个方面,下面分别对这几方面进行简单的分析:2.2.1Struts2简介Struts2是Struts的下一代产品。是在Struts和WebWork的技术基础上进行了合并,全新的Struts2框架。其全新的Struts2的体系结构与Struts1的体系结构的差别巨大。Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts2可以理解为WebWork的更新产品。因为Struts2和Struts1有着太大的变化,但是相对于WebWork,Struts2只有很小的变化。2.2.2Spring简介Spring是一个开源框架,它由RodJohnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring是一个轻量级的控制反转<IoC>和面向切面<AOP>的容器框架。轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。控制反转——Spring通过一种称作控制反转〔IoC的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务〔例如审计〔auditing和事务〔transaction管理进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责〔甚至是意识其它的系统级关注点,例如日志或事务支持。容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型〔prototype,你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能〔事务管理、持久化框架集成等等,将应用逻辑的开发留给了你。所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。2.2.3Hibernate简介Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate体系结构如图2-2所示:图2-1Hibernate体系结构2.2.4NetBeans开发工具简介NetBeans包括开源的开发环境和应用平台,NetBeansIDE可以使开发人员利用Java平台能够快速创建Web、企业、桌面以及移动的应用程序,NetBeansIDE已经支持PHP、Ruby、JavaScript、Groovy、Grails和C/C++等开发语言。NetBeans项目由一个活跃的开发社区提供支持,NetBean开发环境提供了丰富的产品文档和培训资源以及大量的第三方插件。NetBeans是开源软件开发集成环境,是一个开放框架,可扩展的开发平台,可以用于Java、C/C++,PHP等语言的开发,本身是一个开发平台,可以通过扩展插件来扩展功能。在NetBeansPlatform平台中,应用软体是用一系列的软体模组<ModularSoftwareComponents>建构出来。而这些模组是一个jar档<JavaArchiveFile>它包含了一组Java程式的类别而它们实作全依据依NetBeans定义了的公开介面以及一系列用来区分不同模组的定义描述档<ManifestFile>。有赖於模组化带来的好处,用模组来建构的应用程式可只要加上新的模组就能进一步扩充。由於模组可以独立地进行开发,所以由NetBeans平台开发出来的应用程式就能利用着第三方软件,非常容易及有效率地进行扩充。2.2.5MySQL简介MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle公司。Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS<RelationalDatabaseManagementSystem:关系数据库管理系统>应用软件之一。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策〔本词条"授权政策",它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。2.2.6Tomcat服务器简介Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。Tomcat是稳固的独立的Web服务器与ServletContainer,不过,其Web服务器的功能则不如许多更健全的Web服务器完整,如ApacheWeb服务器〔举例来说,Tomcat没有大量的选择性模块。不过,Tomcat是自由的开源软件,而且有许多高手致力于其发展。Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行Tomcat时,它实际上作为一个与Apache独立的进程单独运行的。2.2.7pop3POP3<PostOfficeProtocol3>即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机〔即自己的计算机上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。POP3协议是TCP/IP协议族中的一员,由RFC1939定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。2.2.8SMTP简介SMTP是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议。SMTP是建立在TCP上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持。SMTP重要特性之一是其能跨越网络传输邮件,即"SMTP邮件中继"。通常,一个网络可以由公用互联网上TCP可相互访问的主机、防火墙分隔的TCP/IP网络上TCP可相互访问的主机,及其它LAN/WAN中的主机利用非TCP传输层协议组成。使用SMTP,可实现相同网络上处理机之间的邮件传输,也可通过中继器或网关实现某处理机与其它网络之间的邮件传输。在这种方式下,邮件的发送可能经过从发送端到接收端路径上的大量中间中继器或网关主机。域名服务系统〔DNS的邮件交换服务器可以用来识别出传输邮件的下一条IP地址。从以上经济以及技术方面分析得出结论该系统能够完成并实现相应的功能。3系统需求分析3.1功能需求分析电子邮件系统主要功能是普通用户收发电子邮件的,本系统的使用者角色只有普通用户。用户要求系统的基本功能有用户在没有注册的情况下可以使用本系统在线注册,注册完成之后用户可以使用新的账户进行登录。如果用户密码丢失用户能过通过注册时填写的用户信息来找回密码。<1>用户对联系人的要求。用户登录系统之后能够查看所有的联系人,并且能够增加、删除、修改联系人信息。为了管理联系人方便,要求对联系人进行分组,同时分组也要能够进行添加、删除、修改等基本的操作。为了能够迅速的查找到联系人用户要求能够快速的搜索联系人。<2>用户对自己信息管理的要求。用户应该能够在登录系统之后修改自己的基本信息例如用户昵称、密码等。<3>用户对发送电子邮件的要求。系统应该能够进行简单的电子邮件的发送,同时还要能发送复杂一点的电子邮件例如带有附件、邮件内容为HTML格式的邮件等。同时应该能够快速的添加收件人等。<4>用户对收取电子邮件的基本要求。在收取电子邮件的时候用户应该能够查看到某个邮件夹下面的电子邮件,然后用户选择查看的电子邮件。当查看电子邮件的时候能够显示邮件的基本内容,同时还能够下载带有附件的电子邮件附件。通过对以上信息分析得出用户能够通过该系统进行的活动,如图3-1所示。图3-1用户简单用例图<1>找回密码:当用户忘记登录密码的时候可以通过该功能找回登录密码。<2>注册新用户:用户可以使用该系统注册一个新的系统用户。<3>管理邮件信息:用户可以通过该系统查看和发送电子邮件。<4>管理联系人信息:通过该功能用户可以方便的管理自己的联系人信息。<5>管理个人信息:该功能可以使用户方便的修改自己的个人信息。通过对于用户功能需求进一步分析可以得出用户详细的用例图如图3-2所示。图3-2用户详细用例图<1>管理个人信息:可以分为查找个人信息和修改个人信息,查找个人信息使得用户可以方便的查看个人信息。修改个人信息使用户可以修改自己的个人信息。<2>管理邮件信息:可以分为删除电子邮件、发送新邮件和查看电子邮件。当用户需要删除某一封电子邮件的时候可以使用删除电子邮件功能,同时用户也可以发送新的电子邮件给其他用户。用户也可以查看电子邮件以方便用户查看电子邮件的具体内容。<3>管理联系人信息:联系人的信息管理包含删除、修改、添加和查询具体的联系人信息。删除联系人可以使用户对于不需要的联系人信息进行删除,添加联系人则是当用户需要添加联系人的时候可以使用添加联系人功能。对于需要修改的联系人则可使用修改联系人信息的功能。对于不太清楚的联系人信息用户也可以使用查询功能快速的定位到某个联系人。3.2性能需求分析电子邮件系统主要的用户群是普通用户,所以在设计上必须遵循以下几点准则:<1>易用性:电子邮件系统可以像使用留言电话一样,在自己方便的时候处理记录下来的请求,通过电子邮件可以方便地传送文本信息、图像文件、报表和计算机程序。<2>快捷性:当用户发送完一封电子邮件的时候收件人可以快速的收取到用户发送的电子邮件。而且当电子邮件发送失败的时候系统也应该给出相应的提示信息。以确保电子邮件能够快速的发送到收件人的邮箱中。<3>安全性:电子邮件相当于过去的信件,现在的电子邮件就相当于在网络中传输的信件,由于网络的不安全电子邮件在传送过程中必须确保电子邮件的安全。再设计电子邮件系统的时候应该充分考虑到电子邮件的安全问题。<4>实时性:由于电子邮件的用户范围很广泛以及用户使用电子邮件系统的时间又具有不确定性,所以电子邮件系统服务器必须在时间上满足全天候的启动服务。以确保电子邮件系统用户实时的发送电子邮件。3.3数据库需求分析本系统用于存入数据库的信息只有用户的基本信息和联系人的基本信息。至于邮件的具体存储信息则是由James邮件系统负责完成邮件信息的存储。对于用户来说用户需要登录系统时用户需要输入用户账号和用户密码。密码存储到数据库中是经过加密过后的密码。存取密码的时候要存取相应的密码加密算法。<1>用户在填写基本信息的时候要求填入用户别名、性别、安全邮箱地址、安全问题、安全问题答案、家庭住址、电话号码、备注等基本的与用户有关的信息。当用户忘记登录密码的时候用户可以通过密码找回邮箱或者安全问题重新找回或设置登录密码。<2>用户的联系人分组要有分组的名称。同时在填写联系人的时候要填写联系人的姓名、电话、电子邮件地址、家庭住址、生日、性别、备注等基本信息。<3>一个用户可以拥有多个联系人分组一个联系人分组同时拥有多个联系人。一个用户登录信息要对有一个用户基本信息与之相对应。经过对系统功能的数据分析和总结,我设计出了如下所示的数据项和数据结构:用户登录信息:用户账号、用户密码、密码加密算法、用户是否是被禁用等。用户基本信息:昵称、性别、电话号码、家庭住址、安全问题、安全问题答案、找回密码电子邮箱地址、备注等信息。联系人分组信息:分组名称。联系人基本信息:包括联系人名称、联系人电话号码、联系人家庭住址、联系人电子邮件地址、联系人生日、联系人性别、备注等。从本系统中规划出的实体有:用户登录信息、用户基本信息、用户分组信息、联系人基本信息。通过对数据库基本信息和用户的基本需求进行分析可以得出系统的实体之间关系的E-R图如图3-3所示。图3-3实体关系E-R图用户登录信息实体属性图如图3-4所示。图3-4用户登录信息实体属性图用户基本信息实体属性图如图3-5所示。图3-5用户基本信息实体属性图联系人分组信息实体属性图如图3-6所示。图3-6联系人分组信息实体属性图联系人信息实体属性图如图3-7所示。图3-7联系人信息实体属性图4概要设计4.1逻辑结构设计逻辑结构设计的任务是将概念结构设计阶段设计好的E-R图转化为对应的关系模式,从而完成逻辑结构设计,为数据库的实现作准备。本系统的数据库使用的是MySQL数据库,建造的数据库名称为email。用户登录关系模式<主键用下划线标出>:jamesuser<name,alg,enable,password,version>用户基本信息关系模式:userinfo<id,address,alias,answer,gender,mark,phoneNum,pwdEmail,question,user_id>联系人分组信息关系模式:usergroup<id,name,user_name>联系人信息关系模式:linkman<id,address,birthday,emailAdd,gender,mark,name,phoneNum,group_id>4.2系统功能结构设计电子邮件系统的主要使用人员是普通用户,通过对系统需求的分析可以获得以下用户与系统之间的交互行为。<1>用户登录系统。<2>注册新用户。<3>用户找回密码。<4>用户添加联系人信息。<5>用户修改联系人信息。<6>用户删除联系人信息。<7>用户查询联系人信息。<8>用户修改个人信息。<9>用户添加联系人分组信息。<10>用户修改联系人分组信息。<11>用户删除联系人分组信息。<12>用户发送电子邮件。<13>用户查看电子邮件。<14>用户删除电子邮件。<15>用户搜索电子邮件。系统功能结构图如图4-1所示。图4-1基于java的电子邮件系统功能结构图4.2.1用户登录邮件系统的工作流程<1>用户希望通过电子邮件系统进行某一项操作。<2>用户登录系统,在登录页面输入自己的账号和密码并提交。<3>系统将用户提交的账号和密码传递到业务逻辑类中。<4>业务逻辑层类再根据用户提交的账号访问数据访问类,数据访问类再根据用户账号来检测用户身份的合法性。<5>检测完毕后将验证结果返回到登录界面上显示。<6>用户在登录界面获得验证结果。如果身份验证未通过,重新登录或退出。否则继续进行下一步操作。根据基本流程,用户登录电子邮件系统的序列图如图4-2所示。图4-2用户登录系统序列图与用户登录电子邮件系统序列图等价的协作图如图4-3所示。图4-3用户登录系统协作图4.2.2<1>用户进入注册界面Form,填写用户基本信息并提交。<2>系统将用户提交的用户注册信息封装成一个对象,并将数据提交给业务逻辑类。<3>业务逻辑类根据用户提交的信息判断数据的有效性。<4>业务逻辑类再将用户注册的基本信息提交各数据库访问类。<5>数据库访问类访问数据库将用户基本信息存入到数据库中。并返回成功信息给业务逻辑类。<6>业务逻辑类根据数据访问类返回的信息跳转到相应的页面。<7>显示用户注册是否成功的具体页面给用户。根据基本流程,注册新用户序列图如图4-4所示。图4-4注册新用户序列图与注册新用户序列图等价的协作图如图4-5所示。图4-5注册新用户协作图4.2.3<1>用户进入找回密码界面,输入找回密码信息并提交。<2>用户提交的消息传递个业务逻辑类。<3>业务逻辑类访问数据访问类检测用户输入信息。<4>数据访问类通过访问数据库检测用户输入的信息是否有效。<5>如果用户输入的信息有效则进入下一步操作,否者返回失败信息。<6>如果返回成功信息,则进入选择找回密码方式页面。<7>如果用户选择通过回答安全问题找回密码,则进入安全问题回答页面。<8>在安全问题页面用户输入新密码和安全问题答案并提交。<9>将用户提交的新密码信息提交给业务逻辑类,业务逻辑类再将信息传递个数据访问类。<10>数据访问类根据用户提交的新密码信息检测安全问题答案是否正确。<11>安全问题答案正确,则根据用户提交的新密码信息修改用户登录密码。<12>安全问题答案错误,则返回错误信息给业务逻辑类,业务逻辑类将显示错误页面给用户。<13>如果用户选择的是通过安全邮箱找回密码,则直接在业务逻辑类中向用户安全问题邮箱发送密码重置电子邮件。<14>返回密码重置邮件发送成功信息,向用户展示密码重置成功页面。根据基本流程,用户找回密码用户可以分为三步,第一步检测要找回密码的用户账号是否邮箱,第二步选择找回密码方式,第三步根据选择的密码找回方式重置用户登录密码。用户找回密码用户名检测序列图如图4-6所示。图4-6用户找回密码用户名检测序列图通过安全问题找回密码序列图如图4-7所示。图4-7安全问题找回密码序列图通过安全邮箱找回密码序列图如图4-8所示。图4-8安全邮箱找回密码序列图为了更进一步的描述用户找回密码的工作流程,下面使用活动图来描述用户找回密码的过程。活动图着重描述用例实例或对象的活动,以及操作实现中所完成的工作。使用活动图有以下几点作用。<1>描述一个操作执行过程中所完成的工作。说明角色、工作流、组织和对象是如何工作的。<2>活动图对用例描述尤其有用,它可对用例的工作流建模,显示用例内部和用例之间的路径。他可以说明用例的实例是如何执行动作以及如何改变对象的状态的。<3>显示如何执行一组相关的动作,以及这些动作如何影响它们周围的对象。<4>描述复杂过程算法,在这种情况下使用的活动图和传统的程序流程图的功能是差不多的。<5>活动图对理解业务处理过程十分有用。活动图可以画出工作流程以描述业务,有利于与领域专家进行交流。用户找回密码活动图如图4-9所示。图4-9用户找回密码活动图4.2.4用户添加联系人信息工作流程<1>用户登录到电子邮件系统进行某种操作。<2>用户进入添加联系人信息界面。<3>用户输入联系人信息并提交。<4>用户提交的联系人信息封装成一个对象,传递给业务逻辑类,业务逻辑类检测要添加的联系人信息数据的有效性。<5>如果联系人信息检测通过则将联系人信息传递给数据访问类,将联系人信息保存到数据库中。<6>返回数据库插入成功信息给业务逻辑类,业务逻辑类返回添加联系人成功页面给用户。<7>显示添加成功联系人页面个用户。根据基本流程,用户添加联系人序列图如图4-10所示。图4-10用户添加联系人序列图与用户添加联系人序列图等价的协作图如图4-11所示。图4-11用户添加联系人协作图4.2.5用户发送电子邮件工作流程<1>用户登录系统进行某一项操作。<2>用户进入发送电子邮件界面,填写要发送电子邮件的内容并提交。<3>业务逻辑类根据用户提交的信息判断是否需要发送附件,如果需要发送附件则将附件添加到电子邮件中。<4>业务逻辑类调用发送邮件类发送电子邮件。当电子邮件发送完毕之后返回给业务逻辑类发送成功信息。<6>业务逻辑类根据返回的成功信息,返回给用户发送成功页面。<7>对于需要发送带附件的电子邮件时,电子邮件的附件需要先上传到电子邮件服务器,然后从电子邮件服务器上加载附件到邮件中。根据基本流程,用户发送电子邮件序列图如图4-12所示。图4-12用户发送电子邮件序列图与用户发送电子邮件序列图对应的协作图如图4-13所示。图4-13用户发送电子邮件协作图4.2.6用户查看电子邮件工作流程<1>用户登录系统进行某一项操作。<2>用户进入主界面,然后选择要查看邮件的邮件箱。系统根据用户选择的邮件箱加载该邮件箱中的所有电子邮件。<3>业务逻辑类根据用户提交的信息访问数据访问类。<4>数据访问类根据用户要查询的邮件夹信息加载该邮件夹中的具体信息。并返回具体的邮件信息列表。<5>业务逻辑类根据数据访问类返回的信息返回邮件列表信息。<6>向用户发送邮件列表信息页面。<7>用户在邮件信息列表页面中点击要查看的邮件的具体信息。<8>用户选择的邮件信息传递个业务逻辑类,业务逻辑类再将该数据发送到查看电子邮件类。<9>电子邮件类返回该邮件的具体信息给业务逻辑类。<10>业务逻辑类再将电子邮件的具体信息返回给邮件显示页面。<11>发送邮件显示页面给用户。根据查看电子邮件的工作流程,用户查看电子邮件序列图如图4-14所示。图4-14用户查看电子邮件序列图与用户查看电子邮件序列图相对应的协作图如图4-15所示。图4-15用户查看电子邮件协作图用户查看电子邮件活动图如图4-16所示。图4-16用户查看电子邮件活动图5详细设计5.1数据库的实现通过对以上数据信息进行分析,将数据基本信息通过MySQL表实现如下。用户登录信息表的设计如图5-1所示。图5-1用户登录信息表用户登录信息表主要应用是在用户登录的时候。因为用户账号和密码使用的频率比较频繁而且james邮件服务器也要使用该表,所以将用户登录信息表单独抽取出来作为一张表。这样不仅提高了数据的访问效率同时也使得表结构变得异常简单有利于后期的维护和升级。其中版本号是用来实现乐观锁的,有了乐观锁就可以有效的降低数据访问出错的概率。用户基本信息表的设计如图5-2所示。图5-2用户基本信息表用户基本信息表是用来存储用户注册时填写的基本信息。有了这些信息用户可以方便的进行找回密码等操作。每一个用户基本信息都对应一个用户登录基本信息,有了这些数据用户信息才算完整。联系人分组信息表的设计如图5-3所示。图5-3联系人分组信息表联系人分组是为了管理联系人方便而设计的数据库表,通过联系人分组用户可以方便的找到该联系人分组中的联系人具体信息。每一个联系人分组都对应着一个用户,每一个用户又可以拥有多个联系人分组。联系人信息表的设计如图5-4所示。图5-4联系人信息表5.2系统模块的实现电子邮件系统的具体实现是采用Struts2+Spring+Hibernate来实现的。其中Struts2主要负责用户提交数据的处理以及数据处理完成之后用户Jsp页面之间的跳转,Hibernate主要负责用户与数据库的各项操作。Spring是配合Struts2和Hibernate来实现对象的动态注入以及Hibernate操作数据库时的事务操作。另外本系统还采用Spring来实现记录系统运行的日志信息。在前台页面采用了jQuery脚本库来实现网页的动态效果,以及前台Jsp页面与后台服务器的动态交互。因为jQuery的跨浏览器性,所以采用jQuery开发的Jsp页面动态效果也具有跨浏览器性。5.2.1用户登录邮件系统的实现用户登录电子邮件系统的具体实现如下步骤。<1>用户打开系统并进入系统登录首页面〔Index.jsp页面。如图5-5所示图5-5系统登录页面<2>用户在登录页面中输入自己的账号和密码并点击登录。<3>用户提交数据到UserLoginAction类中execute方法。<4>execute方法调用UserDAO的checkUser方法。<5>checkUser方法根据用户名和密码去调用本类中的find方法,find方法根据用户名重数据库中取出User对象,如果没有找到User则返回空对象。<6>如果find方法找到了用户User则取出User加密后的密码与Index.jsp页面传过来的用户密码加密后进行对比,如果相同则用户登录成功<成功页面如图5-6所示>。否则返回错误信息给Index.jsp页面图5-6登录成功界面5.2.2用户发送电子邮件的实现用户发送电子邮件的具体实现如以下步骤。<1>用户登录系统之后进入系统登录成功首页面。<2>用户在系统登录成功首页面点击写信按钮,系统将进入写信页面。如图5-7<3>在写信页面用户填入要发送的电子邮件信息,当然用户也可以选择上传附件,等附件上传完毕之后用户就可以点击发送按钮发送电子邮件了。<4>要发送的电子邮件信息将会被封装成一个MailInfoFB对象,将该对象发送给UserSendMailAction类的sendEmail方法。<5>sendEmail方法会调用SendMail类的sendMail方法。<6>SendMail类的sendMail方法会调用发送电子邮件的Api然后将电子邮件发送出去,并返回电子邮件是否发送成功信息。<7>UserSendMailAction类中的sendEmail会根据SendMail类的sendMail方法返回值,来判断电子邮件是否发送成功。<8>如果电子邮件发送成功用户页面将会跳转到邮件发送成功页面,如果邮件发送失败用户页面将会跳转到发送失败页面图5-7用户发送电子邮件5.2.3用户查看电子邮件的实现用户查看电子邮件具体实现如以下步骤。<1>用户进入登录成功首页面点击收信按钮。<2>当用户点击收信按钮之后会触发receive.action动作,该动作会调用UserReceiveMailAction类中的execute方法。<3>execute方法会执行收取本用户收件夹下的所有电子邮件操作,并返回所有的电子邮件信息列表<4>当用户点击邮件列表中的某封电子邮件的时候会触发readMail.action动作,并将用户要查询的具体邮件的Id信息传递给readMail.action。<5>readMail.action会调用UserReceiveMailAction类中的readMail方法。<6>readMail方法调用UserReceiveMailService类中的getMailBean方法。<7>getMailBean方法会执行电子邮件的查询,并返回封装好的电子邮件信息。<8>最后将封装好的电子邮件信息对象传递给前台user_read_mail.jsp页面并最终显示给用户。如图5-8图5-8用户查看电子邮件用户找回密码的实现用户找回密码的具体的实现如以下步骤:<1>用户进入系统登录页面。<2>用户点击登录页面的找回密码按钮,页面跳转到密码找回页面界面<3>用户在密码找回第一步页面中输入邮箱名称和验证码,并点击下一步。<4>用户输入的邮箱名称和验证码传递给业务逻辑类,业务逻辑类验证验证码的正确性。<5>如果验证码正确则将用户邮箱名称信息传递给数据访问类。<6>数据访问类根据用户邮箱名称查找数据库中的用户邮箱名称信息,如果找到用户邮箱名称信息,则返回成功信息。<7>业务逻辑类根据数据访问类返回的成功信息跳转到用户找回密码第二步页面如图5-9所示。<8>在密码找回第二步要求用户选择密码找回方式。图5-9密码找回第二步页面<9>如果用户选择通过密码提示问题找回密码,则将产生找回密码Action动作。<10>密码找回Action会根据第一步用户找回密码提交的邮箱名称查询用户安全问题。<11>查询用户数据访问类返回用户注册时填写的用户安全问题。并将用户安全问题返回给业务逻辑类。<12>业务逻辑类根据数据访问类返回的用户安全问题,返回给用户通过安全问题找回密码第三步页面如图5-10所示。图5-10通过安全问题找回密码页面<13>在安全问题找回密码页面用户需要回答安全问题并输入新的用户密码,然后点击确定。<14>将用户提交的安全问题答案和新的密码给业务逻辑类,业务逻辑类将数据传递给数据访问类。<15>数据访问类验证用户提交的安全问题答案是否正确。如果正确则将成功信息返回给修改密码成功<user_find_questionSuccess.jsp>页面,密码修改成功页面如图<16>如果用户选择通过安全邮箱找回密码方式,则产生通过邮箱找回密码Action动作。<17>通过安全邮箱找回密码Action动作会将用户提交的用户邮箱名称提交的业务逻辑类。<18>业务逻辑类调用FindPasswordByEmailUtils类产生一个随机的六位字符和数字的密码。<19>业务逻辑类将新产生的密码设置为用户的新密码。并将用户新密码信息提交给数据访问类,同时调用MailBean类的sendMail方法给用户安全邮箱发送一封密码重置邮件。<20>数据访问类根据用户新密码信息修改用户的密码,并返回修改成功信息给业务逻辑类。<21>返回通过安全邮箱修改密码成功信息给user_find_questionSuccess.Jsp页面5.2.5用户查看联系人的实现用户添加联系人具体实现步骤如下:<1>用户登录系统并进入登录成功欢迎页面。<2>用户点击联系人管理,产生用户添加联系人Action动作。<3>业务逻辑层将用户的名称发送到数据访问层。<4>数据访问层根据用户名称查询与用户相关的用户联系人信息。<5>数据访问层将查询出的联系人封装成一个List并将结果返回给业务逻辑层。<6>业务逻辑层将数据访问层查询出的用户联系人信息返回给联系人页面。<7>联系人页面<user_list_linkman.jsp>将用户具体的联系人信息返回给用户,联系人具体信息列表页面如图5-11所示。图5-11联系人列表页面5.2.6用户添加联系人的实现用户添加联系人的具体实现步骤如下:<1>用户进入通讯录界面并点击添加联系人。<2>当用户点击添加联系人的时候将页面定向到添加联系人页面<如图5-12>。图5-12用户添加联系人页面<3>当用户填写完联系人的具体信息并点击确定时,产生添加联系人Action。<4>联系人的信息将会被封装成UserInfoFB的FormBean,然后将UserInfoFB信息提交给业务逻辑类。<5>业务逻辑类将用户的具体信息传递给数据访问类。<6>数据访问类将联系人的具体信息插入到数据库中,并返回成功信息给业务逻辑层。<7>业务逻辑类根据数据访问层返回的成功信息,将成功信息返回个成功页面。<8>显示联系人添加成功页面。6系统测试6.1单元测试用户登录模块主要是测试用户账号与用户密码在输入或则不输入的情况下系统是否能够正常的工作,以及当用户输入正确的情况下系统能否正常的登录。根据对以上信息的分析,决定采用黑盒测试技术来测试本模块。测试模块举例:登录模块测试。测试目的:验证用户登录信息输入的有效性,信息输入完整且符合条件才可以登录成功。信息输入不完整或者不输入将不能登录。测试方法:黑盒测试——等价类划分。用户登录信息等价类划分如表6-1所示。表6-1用户登录信息等价类划分输入合理等价类不合理等价类登录账号3-20位字母、数字、下划线、中划线或点号有非法字符少于3个字符多于20个字符不输入登录密码3-20位字母、数字或符号少于3个字符多于20个字符不输入根据用户登录信息等价类划分设计出的测试用例如表6-2所示。表6-2用户登录信息测试用例测试数据期望结果覆盖范围登录账号登录密码testtest登录成功⑥test@ab登录失败⑦teaabbccddeeffgghhjjkkq登录失败⑧aabbccddeeffgg
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度租赁房屋租赁解除合同2篇
- 2025年消防器材销售与消防系统升级及维护合同3篇
- 二零二五年度国际时装周模特签约合同4篇
- 消费金融行业2024年信用回顾与2025年展望 -新世纪
- 二零二五版模具行业市场调研合同4篇
- 二零二五版电子设备模具采购合作协议4篇
- 2025年金融机构外汇借款合同范本及信用评估体系3篇
- 贫困助学金感谢信500字(合集3篇)
- 练习版2025年度影视制作与发行合同2篇
- pe波纹管 施工方案
- 大学生国家安全教育意义
- 2024年保育员(初级)培训计划和教学大纲-(目录版)
- 河北省石家庄市2023-2024学年高二上学期期末考试 语文 Word版含答案
- 企业正确认识和运用矩阵式管理
- 分布式光伏高处作业专项施工方案
- 陈阅增普通生物学全部课件
- 检验科主任就职演讲稿范文
- 人防工程主体监理质量评估报告
- 20225GRedCap通信技术白皮书
- 燃气有限公司客户服务规范制度
- 延迟交稿申请英文
评论
0/150
提交评论