基于WEB的电子邮件系统邮件协议研究和系统功能实现论文_第1页
基于WEB的电子邮件系统邮件协议研究和系统功能实现论文_第2页
基于WEB的电子邮件系统邮件协议研究和系统功能实现论文_第3页
基于WEB的电子邮件系统邮件协议研究和系统功能实现论文_第4页
基于WEB的电子邮件系统邮件协议研究和系统功能实现论文_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、 . . . 本科毕业论文(设计)题 目基于WEB的电子系统协议研究与系统功能实现29 / 31基于WEB的电子系统协议研究与系统功能实现摘要:通过分析JavaMail的实现原理,采用开源框架Struts,Spring,Hibernate和面向对象的方法实现基于WEB的电子系统功能。论文研究了接收的和解析的工作原理,并阐述了如何实现。本系统中我主要负责用户注册、登陆、退出、接收站信、读取站信、移动站信、删除站信、设置其他、收取其他、解析其他、删除其他、系统管理等功能的实现。关键词:JavaMail;Struts;Spring;Hibernate E-mail system based on w

2、eb with protocol and system functionsLi GuangpingComputer and Information Science Faulty, Southwest China University, Chongqing 400715, ChinaAbstract:Through analysis JavaMail of the realization of the principle of open-source framework for the use of Struts, Spring, Hibernate and object-oriented me

3、thod of web-based system. Research papers to receive messages and the work of analytic theory, and explained how to achieve it. This system is mainly responsible for my user registration, login, exit, receiving station within the letter, read a letter station, mobile station letter letter to delete

4、stations, set up other mail, receive mail to other , Mail resolve to delete the other E-mail messages, the system management functions to achieve.Keywords:JavaMail;Struts;Spring;Hibernate 目 录第1章引言41.1 基于WEB的电子选题目的和意义41.2 基于WEB的电子国外研究现状51.3 基于WEB的电子系统开发研究方法与策略51.4 基于WEB的电子系统软件开发的可行性51.5 系统开发与运行环境61.5

5、.1 系统开发环境61.5.2 软件运行环境7第2章系统开发相关技术72.1 Struts简介72.1.1 优点:72.1.2 缺点:72.2 Spring简介82.3 Hibernate简介82.4 MVC简介92.5 JavaMail API研究92.5.1 JavaMail API简介92.5.2 相关协议一览92.5.3 JavaMail安装102.5.4 JavaMail API 详解112.5.5 使用JavaMail API152.5.6 认证16第3章概要设计17第4章详细设计与编码实现184.1 程序包的结构184.2系统的功能模块的详细设计与实现184.2.1 用户注册登录

6、模块184.2.2 站接收模块204.2.3 其他模块234.2.4 系统管理模块28第5章结论29第6章参考文献30第7章致32第1章 引言1.1 基于WEB的电子选题目的和意义电子是80年代初新起的一种基于计算机网络技术,采用存储和转发方式传递交换信息的快捷,高效,廉价的电子信息业务,是计算机互联网系统中提供的一项基本服务。电子作为一种现代化通信工具可以传递文字,图表,声音,电影等各类信息,其传递速度也是传统所无法比拟的。其主要应用领域是电子服务。用户将要发送的信息以规定的格式通过通信网络发送到收信人的信箱中,信箱实际上与通信网络相连的计算机存储器,收信人可以通过通信网络随时打开自己的信箱

7、,看到别人发来的信件,同时可以利用自己的信箱写回信或发送信件。电子服务在信息的交流,传播,检索,管理等领域的应用越来越广泛,随着电子数量的增加,需求多样化,电子技术的发展趋势也越趋于更细致化,更复杂化。作为电子的信息服务平台的系统使整个电子世界的核心,也是个性化增值信息服务的关键技术。电子系统是在模拟邮政系统基础上,汲取电报,电传, 技术和计算机信息技术的精华,利于处处转发的通信方式,在开放系统互联国际标准中形成为网络用于传送消息和文件提供一个可靠,异步,垮平台的机制,可以实现点到点和点到多结点上的网络用户间的通信。电子系统经过几十年的发展,已经形成了完善的技术体系。电子系统的发展经历了远程登

8、陆模式,专用客服端模式,基于WEB的模式,目前正向WAP模式迁移。随着互联网的飞速发展,电子的用户数量也业务量的急增,种类繁多的商业增值服务需求以与用户对服务种类的智能化需求,向负载它们的电子系统服务的种类,容量,技术支持,付费方式等方面提出了挑战。服务系统在保留了电子系统最初的收发,存储等基本功能的同时,融入了最新的计算机与网络技术,是电子系统有了全新的改观。电子已经成为人们喜爱的通信方式之一,是信息交流的重要手段之一,也是单位加强信息交流的重要手段。在我国信息化的过程中,系统已经成为信息系统中必不可少的一部分。传统的系统分为服务器和客服端,即Client/Server(C/S)结构。用户通

9、过客户端来接受和发送。近年来随着web技术的不断成熟,采用浏览器和服务器Browser/Server形式的软件层出不穷,并在实际应用中得到了良好的效果。B/S结构同传统的C/S结构相比具有对客户机的低要求,较低的开发成本,方便的维护,软件的高复用性等优点。因此,系统采用B/S结构,即用户以web方式进行接收和发送。1.2 基于WEB的电子国外研究现状国很多企事业单位都有自己的服务系统,免费有163,新浪等,用户对电子安全性、可靠性与功能上的要求也在不断提高。因此,电子服务供应商必须提供更安全、更可靠、功能更丰富的服务,才能发展业务,吸引用户,从众多竞争者中脱颖而出。如何构建高效、稳定、安全、易

10、用、可扩展、功能丰富的电子系统是众多电信运营商、ISP(Internet Service Provider)、ICP(Internet Content Provider)共同面临的问题。服务器供应商致力于以下几个方面提高服务功能:(1)增加多用户模板的功能,以满足不同用户对界面的不同喜好,如提供多种webmail页面风格,提供个性化模板和多风格信纸,用户可以定义系统界面等。(2)增加防病毒模块,以增加E-mail系统整体的安全性,利用加密和签名等方法进行传送。在服务器端使用防病毒模块。将电子系统向统一信息系统发展,加入最新资讯,多媒体等功能。反垃圾为用户提供反垃圾的多种过滤器,充分保证用户收到

11、最低限度的垃圾骚扰。1.3 基于WEB的电子系统开发研究方法与策略(1)查看163、 等,研究它们的实现方式,结合自己要实现的系统找到合适的切入点。(2)本课题要求对MVC有一定的掌握,熟悉Struts、Spring、Hibernate、MySQL、Tomcat的使用,以与有较强的自学能力和熟练使用MyElipse开发环境的能力。(3)对于技术难题先查资料,找不到答案询问同学和老师,请求帮助。1.4 基于WEB的电子系统软件开发的可行性(1)技术可行性本系统主要用到开源框架Struts、Spring、Hibernate,有很多的书籍和资料介绍如何使用这些框架,JAVA是目前较为流行的技术,有一

12、定的编程基础就能快速学习JAVA,所以在技术上是可行的。(2)经济可行性由于本系统是本科毕业设计的题目,这样的系统对于大多数企业来说不用花费高昂的代价去架设企业,企业可以使用我们开发的系统。我们本科生也有充裕的时间去开发这样的一个系统,只需要一台电脑和人力,不需要很大的投资。所以在经济上是可行的。 (3)操作可行性本系统采用当前最为流行的技术Struts+Spring+Hibernate框架去实现,扩展性很强,对于以后有比较好的特性也能很快速和方便的添加上去,所以在操作上是可行的。1.5 系统开发与运行环境1.5.1 系统开发环境(1)JAVA环境采用的是JDK1.6,我们要开发的系统是基于J

13、2EE,需要安装J2SE,J2SE SDK是开发任何Java系统必须安装的工具包。(2)数据库采用的是MySQL5.1,MySQL是最受欢迎的开源SQL数据库管理系统,是一个快捷的、可靠的和易于使用的数据库服务器。(3)Web服务器采用的是Tomcat6.0.18解压版本,Tomcat是Apache-Jarkarta的一个子项目,是一个免费的、开放源码的、支持JSP和Servlet技术的容器,它同时又是一个Web服务器软件。Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与服务等开发应用系统常用的功能。Tomcat是一个小型的轻量级应用服务器,在中小型系统

14、和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。(4)集成开发工具MyEclipseMyEclipse是目前最流行的J2EE应用集成开发工具。MyEclipse一经出现就以其功能强大、插件丰富的特性赢得了认可,其主要的属性有强大的插件功能、代码重构和代码自动生成功能、快速修复错误、调整组织导入包、弹出窗口进行代码自动装配。由于功能强大,MyEclipse成为J2EE IDE领域的霸主,它能够很好地与MySQL、Tomcat进行集成。本系统中我们选用MyEclipse7.0作为开发工具。1.5.2 软件运行环境(1)软件系统环境Windows XP操作系统、Linux系统

15、。(2)硬件系统环境普通的计算机,局域网,以与能够连接上的Internet。第2章 系统开发相关技术2.1 Struts简介Struts只是一个MVC框架(Framework),用于快速开发Java Web应用。Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和我们定制的Action,也为V(View)提供了一系列定制标签(Custom Tag)。但Struts几乎没有涉与M(Model),所以Struts可以采用JAVA实现的任何形式的商业逻辑。 2.1.1 优点:    

16、Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其部实现机制。    Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率。另外,就目前国的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现

17、得更加明显。2.1.2 缺点:     Taglib是Struts的一大优势,但对于初学者而言,却需要一个持续学习的过程,甚至还会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真的很棒。Struts将MVC的Controller一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度。虽然它现在还有不少缺点,但它是一种非常优秀的J2EE MVC实现方式。2.2 Spring简介Spring是一个轻型容器(light-weight container),其核心是Bean工厂(Bean Factory),用以构造我们所需要的M(Model)。在此基础

18、之上,Spring提供了AOP(Aspect-Oriented Programming, 面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对Bean工厂的扩展ApplicationContext更加方便我们实现J2EE的应用;DAO/ORM的实现方便我们进行数据库的开发;Web MVC和Spring Web提供了Java Web应用的框架或与其他流行的Web框架进行集成。2.3 Hibernate简介Hibernate顾名思义冬眠的意思,相信它的创造者的用意在于用这个工具将数据库连接持久化层冬眠,关于Hibernate网上争论很多,有人说其为工具,有人说其为框架,我相

19、信一个人有一个人理解问题的角度,只要处理问题的方确就可以了。Hibernate是采用ORM映射机制的持久层开发工具,它是JAVA应用和关系数据库之前的桥梁,负责JAVA对象和关系数据之间的映射。部封装了JDBC访问数据库的操作,向上层应用提供了面向对象的数据库访问API,在JAVA应用中使用到Hibernate包含如下步骤。(1)创建Hibernate配置文件(2)创建持久类(3)创建对象关系映射文件(4)通过HibernateAPI编写访问数据库的代码如果想了解Hibernate或者是要学习它的人必须要首先了解两个比较重要的概念:(1)POJO:在Hibernate中理解为数据库表所对应的D

20、omain Object,如果从子面上理解就是无格式普通JAVA对象,简单的理解就是一个不包含逻辑代码的值对象。从数据层面上看,POJO作为数据实体的对象化表现形式,也成为实体。(2)ORM:ORM可以理解成一种机制也可以理解成一种模式,对象关系映射,我个人觉得如果想理解它可以和MVC比较,模型视图控制。ORM是把对象和关系数据库映射到一起,而MVC是把视图和模型控制在一起。创建Hibernate的配置文件Hibernate从中读取和数据库连接的相关信息,这个配置文件应该位于应用的classpath中,主要有两种形式XML格式和.Properteis信息文件。创建持久化类就是指需要被Hiber

21、nate持久化到数据库中的类,持久化类通常都是模型中的实体类,符合JavaBean的规,包含一些属性,以与与之对应的get、set方法。2.4 MVC简介MVC是三个单词的缩写,分别为:模型(Model),视图(View)和控制Controller)。MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或E来实现。View层用于与用户的交互,通常用JSP来实现。Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。2.5 Ja

22、vaMail API研究2.5.1 JavaMail API简介JavaMail API是读取、撰写、发送电子信息的可选包。我们可用它来建立如Eudora、Foxmail、MS Outlook Express一般的用户代理程序(Mail User Agent,简称MUA)。而不是像sendmail或者其它的传输代理(Mail Transfer Agent,简称MTA)程序那样可以传送、递送、转发。从另外一个角度来看,我们这些电子用户日常用MUA程序来读写,而MUA依赖着 MTA处理的递送。 2.5.2 相关协议一览4大信息传输协议: SMTP 、POP 、IMAP 、MIME,上面的4个协议,

23、并不是全部,还有NNTP和其它一些协议可用于传输信息,但是由于不常用到,所以本文便不提与了。理解这4个基本的协议有助于我们更好的使用JavaMail API。然而JavaMail API是被设计为与协议无关的,目前我们并不能克服这些协议的束缚。确切的说,如果我们使用的功能并不被我们选择的协议支持。(1)SMTP简单传输协议定义了递送的机制。(2)POPPOP是一种邮局协议,目前为第3个版本,即众所周知的POP3。POP定义了一种用户如何获得的机制。它规定了每个用户使用一个单独的。大多数人在使用POP时所熟悉的功能并非都被支持,例如查看中的新数量。而这个功能是微软的Outlook建的,那么就说明

24、微软 Outlook之类的客户端软件是通过查询最近收到的来计算新的数量来实现前面所说的功能。因此在我们使用JavaMail API时需要注意,当需要获得如前面所讲的新数量之类的信息时,我们不得不自己进行计算。 (3)IMAPIMAP使用在接收信息的高级协议,目前版本为第4版,所以也被称为IMAP4。需要注意的是在使用IMAP时,服务器必须支持该协议。从这个方面讲,我们并不能完全使用IMAP来替代POP,不能期待IMAP在任何地方都被支持。假如服务器支持IMAP,那么我们的程序将能够具有以下被IMAP所支持的特性:每个用户在服务器上可具有多个目录,这些目录能在多个用户之间共享。 其与POP相比高

25、级之处显而易见,但是在尝试采取IMAP时,我们认识到它并不是十分完美的:由于IMAP需要从其它服务器上接收新信息,将这些信息递送给用户,维护每个用户的多个目录,这都为服务器带来了高负载。并且IMAP与POP的一个不同之处是POP用户在接收时将从服务器上下载,而IMAP允许用户直接访问目录,所以在服务器进行备份作业时,由于每个长期使用此系统的用户所用的目录会占有很大的空间, 这将直接导致服务器上磁盘空间暴涨。 (4)MIME MIME并不是用于传送的协议,它作为多用途的扩展定义了容的格式:信息格式、附件格式等等。一些RFC标准都涉与了MIME: RFC 822, RFC 2045, RFC 20

26、46, RFC 2047。(5)NNTP和其它的第三方协议 JavaMail API在设计时考虑到与第三方协议实现提供商之间的分离,我们可以很容易的添加一些第三方协议。2.5.3 JavaMail安装(1)安装JavaMail为了使用JavaMail API,需要下载文件名格式为javamail-version.zip的文件(这个文件中包括了JavaMail实现),并将其中的mail.jar文件添加到CLASSPATH中。这个实现提供了对SMTP、IMAP4、POP3的支持。 (2) 安装JavaBeans Activation Framework在安装了JavaMail之后,我们还需要安装J

27、avaBeans Activation Framework,因为这个框架是JavaMail API所需要的。如果我们使用J2EE的话,那么我们并无需单独下载JavaMail,因为它存在于J2EE.jar中,只需将J2EE.jar加入到 CLASSPATH即可。此框架增加了对任何数据块的分类、以与对它们的处理的特性。这些特性是JavaMail API需要的。 2.5.4 JavaMail API 详解(1) JavaMail环境 AJavaMail核心类结构 在javax.mail的包下面存在着一些核心类:Session、Message、Address、Authenticator、Transpo

28、rt、Store、Folder。而且在ernet包中还有一些常用的子类。 BSession Session类定义了基本的会话,就像 会话那样,我们进行收发的工作都是基于这个会话的。Session对象利用了java.util.Properties对象获得了服务器、用户名、密码信息和整个应用程序都要使用到的共享信息。 Session类的构造方法是私有的,所以我们可以使用Session类提供的getDefaultInstance()这个静态工厂方法获得一个默认的Session对象: Properties props = new Properties(); Session

29、session = Session.getDefaultInstance(props, null); 或者使用getInstance()这个静态工厂方法获得自定义的Session: Properties props = new Properties(); Session session = Session.getInstance(props, null); CMessage 当我们建立了Session对象后,便可以被发送的构造信息体了。在这里SUN提供了Message类型来帮助开发者完成这项工作。由于 Message是一个抽象类,大多数情况下,我们使用ernet.M

30、imeMessage这个子类,该类是使用MIME类 型、MIME信息头的信息。信息头只能使用US-ASCII字符,而非ASCII字符将通过编码转换为ASCII的方式使用。 为了建立一个MimeMessage对象,我们必须将Session对象作为MimeMessage构造方法的参数传入: MimeMessage message = new MimeMessage(session); 注意:对于MimeMessage类来讲存在着多种构造方法,比如使用输入流作为参数的构造方法。 在建立了MimeMessage对象后,我们需要设置它的各个part,对于MimeMessage类来说,这些part就是Mi

31、mePart接口。最基本的设置信息容的方法就是通过表示信息容和米么类型的参数调用setContent()方法: message.setContent("lgpzll", "text/plain"); 然而,如果我们所使用的MimeMessage息容是文本的话,我们便可以直接使用setText()方法来方便的设置文本容。 message.setText("lgpzll"); 前面所讲的两种方法,对于文本信息,后者更为合适。而对于其它的一些信息类型,比如HTML信息,则要使用前者。 使用setSubject()方法对设置主题:messag

32、e.setSubject("First"); DAddress 像Message一样,Address类也是一个抽象类,所以使用ernet.InternetAddress这个子类。 通过传入代表地址的字符串,我们可以建立一个地址类: Address address = new InternetAddress("lgpzll163."); 如果要在地址后面增加名字的话,可以通过传递两个参数:代表地址和名字的字符串来建立一个具有地址和名字的地址类: Address address = new InternetAddress(&quo

33、t;lgpzll163. ", "lgpzll"); 在建立了地址类后,我们通过message的setFrom()和setReplyTo()两种方法设置的发信人: message.setFrom(address); message.setReplyTo(address); 若在中存在多个发信人地址,我们可用addForm()方法增加发信人: Address address =”;message.addFrom(address); 为了设置收信人,我们使用addRecipient()方法增加收信人,此方法需要使用Message.RecipientType的常量来区分

34、收信人的类型: message.addRecipient(type, address) 下面是Message.RecipientType的三个常量: Message.RecipientType.TO 收件人Message.RecipientType.CC 抄送人Message.RecipientType.BCC 发件人EAuthenticator 像类那样,JavaMail API通过使用授权者类(Authenticator)以用户名、密码的方式访问那些受到保护的资源,在这里“资源”就是指服务器。在 javax.mail包中可以找到这个JavaMail的授权者类(Authenticator)。

35、 在使用Authenticator这个抽象类时,我们必须采用继承该抽象类的方式,并且该继承类必须具有返回 PasswordAuthentication对象(用于存储认证时要用到的用户名、密码)getPasswordAuthentication()方 法。并且要在Session中进行注册,使Session能够了解在认证时该使用哪个类。 下面代码片断中的MyAuthenticator就是一个Authenticator的子类。 Properties props = new Properties(); Authenticator auth = new MyAuthenticator(); Sessio

36、n session = Session.getDefaultInstance(props, auth); FTransport 在发送信息时,Transport类将被用到。这个类实现了发送信息的协议(通称为SMTP),此类是一个抽象类,我们可以使用这个类的静态方法send()来发送消息: Transport.send(message); 也可由Session获得相应协议对应的Transport实例。并通过传递用户名、密码、服务器主机名等参数建立与服务器的连接,并使用sendMessage()方法将信息发送,最后关闭连接: message.saveChanges(); Transport tra

37、nsport = session.getTransport("smtp"); transport.connect(host, username, password); transport.sendMessage(message, message.getAllRecipients(); transport.close(); 如果需要在发送过程中监控mail命令的话,可以在发送前设置debug标志: session.setDebug(true)。 GStore和Folder 接收和发送很类似都要用到Session。但是在获得Session后,我们需要从Session中获取特定类

38、型的Store,然后连接到Store,这里的Store代表了存储的服务器。在连接Store的过程中,极有可能需要用到用户名、密码或者Authenticator。 Store store = session.getStore("pop3"); store.connect(host, username, password); 在连接到Store后,一个Folder对象即目录对象将通过Store的getFolder()方法被返回,我们可从这个Folder中读取信息: Folder folder = store.getFolder("INBOX"); folde

39、r.open(Folder.READ_ONLY); Message message = folder.getMessages(); 首先从Store中获得INBOX这个Folder(对于POP3协议只有一个名为INBOX的Folder有效),然后以只读(Folder.READ_ONLY)的方式打开Folder,最后调用Folder的getMessages()方法得到目录中所有Message的数组。对于POP3协议只有一个名为INBOX的Folder有效,而对于IMAP协议,我们可以访问多个Folder而且SUN在设计Folder的getMessages()方法时采取了很智能的方式:首先接收新列

40、表,然后再需要的时候(比如读取容)才从服务器读取容。 在读取时,我们可以用Message类的getContent()方法接收或是writeTo()方法将保存,getContent()方法只接收容(不包含头),而writeTo()方法将包括头。 在读取容后,关闭Folder和Store。 folder.close(boolean);store.close(); 传递给Folder.close()方法的boolean 类型参数表示是否在删除操作后更新Folder。 2.5.5 使用JavaMail API(1)发送 在获得了Session后,建立并填入信息,然后发送它到服务器。这便是使用Java

41、Mail API发送的过程,在发送之前,我们需要设置SMTP服务器:通过设置Properties的mail.smtp.host属性。 String host =”;String from =”;String to =”;Properties props = System.getProperties(); props.put("mail.smtp.host", host); Session session = Session.getDefaultInstance(props, null); MimeMessage message = new MimeMessage(sessi

42、on); message.setFrom(new InternetAddress(from); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to); message.setSubject("lgpzll"); message.setText("lgpzll"); Transport.send(message); (2)接收 读取,获得session,并且连接到了的相应store,打开相应的Folder,然后得到想要的,结束时关闭连接。 String host =”;

43、String username =”;String password =”;Properties props = new Properties(); Session session = Session.getDefaultInstance(props, null); Store store = session.getStore("pop3"); store.connect(host, username, password); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ

44、_ONLY); Message message = folder.getMessages(); folder.close(false); store.close(); 2.5.6 认证我们在此取代了直接使用服务器主机名、用户名、密码这三个字符串作为连接到POP3 Store的方式,使用存储了服务器主机名信息的属性文件,并在获得Session时传入自定义的Authenticator实例: Properties props = System.getProperties();props.put("mail.pop3.host", pop3Server);Session mails

45、ession = Session.getDefaultInstance(props,new CheckPassword(userName, password);Store store = mailsession.getStore("pop3");store.connect(pop3Server, userName, password);CheckPassword类继承了抽象类Authenticator,并且通过重载Authenticator类的 getPasswordAuthentication()方法返回PasswordAuthentication类对象。而 getPas

46、swordAuthentication()方法的参数param是以逗号分割的用户名、密码组成的字符串。 package .mail.othermail;import javax.mail.Authenticator;import javax.mail.PasswordAuthentication;public class CheckPassword extends Authenticator String username;String password;public CheckPassword() public CheckPassword(String username, String pa

47、ssword) this.username = username;this.password = password;protected PasswordAuthentication getPasswordAuthentication() return new PasswordAuthentication(username, password);public String getUsername() return username;public void setUsername(String username) this.username = username;public String get

48、Password() return password;public void setPassword(String password) this.password = password;第3章 概要设计基于Web的电子系统概要设计由我的搭档实现。第4章 详细设计与编码实现4.1 程序包的结构.mail.dao中是所有接口.mail.filter中是过滤器.mail.impl中是所有接口的实现.mail.othermail中是管理其他.mail.page中是分页的处理类.mail.struts.action中是业务逻辑 .mail.struts.form中是form表单.mail.util中是工

49、具类.mail.vo中是实体类4.2系统的功能模块的详细设计与实现4.2.1 用户注册登录模块(1)用户注册登陆模块详细设计公共Action如下图所示,所有的Action都继承自BaseAction,在Action中使用super.getCurrentUser()可以从session中获取用户的实例。图4-1 公共ActionFig.4-1Public Action用户实体类User如下图所示 图4-2 用户实体类Fig.4-2 the entity of User用户首先注册然后登陆,登陆后可以修改密码,用户注册登陆模块的UserAction如下图所示图4-3 用户ActionFig.4-3

50、 the action of UserAction用户注册登陆模块Action中的方法实现调用接口IUserDAO中的方法,IUserDAO接口中的方法由IUserDAOImpl具体实现,IUserDAO如下图所示图4-4 用户模块接口Fig.4-4 the interface of user module(2)用户注册登陆模块的实现方式A用户注册用户打开即进入用户登陆页面,如果用户没有注册那么注册调用UserAction中的register(),将注册信息封装到实体User的一个对象中,通过IUserDAO的register()保存这个对象,持久化到数据库中。B用户登陆用户成功注册后输入正确

51、的用户名和密码就可以登陆系统,调用UserAction中的login()方法,将登陆的用户名和密码传递给IUserDAO中login(),判断用户是否存在,如果用户存在并且密码正确那就向session中写入user这个实例,跳转到主页,如果用户不存在或密码不正确提示用户,让用户重新输入。C用户退出调用UserAction中的logout()方法,从session中删除当前用户实例,返回到用户登陆页面。D找回密码当用户忘记密码的时候点击找回密码调用UserAction中的findPassword()将你的用户名传递进去,然后调用IUserDAO中的findUser(String userName

52、)查询数据库这个用户是否存在,如果存在查询出密码保护问题和答案,将密码保护问题显示给用户,让用户输入答案,如果用户的答案和数据库中的答案一致那么调用IUserDAO中的findPassword()方法更新用户密码。E修改密码用户登陆成功后可以修改用户密码,调用UserAction中的updatePasswordInput转向到更新密码页面,更新密码调用UserAction中的updatePassword()。 4.2.2 站接收模块(1)站接收模块详细设计站新、收件箱、垃圾箱、已删除实体类Receive,如下图所示图4-5 收件箱实体类Fig.4-5 the entity of Inbox其中

53、status字段不同的的值代表所在的,0代表新在新里,1代表已读在收件箱里,2代表垃圾在垃圾箱里,3代表已删除在已删除里。用户登陆后可以收,移动,删除,查看,站接收模块ReceiveAction如下图所示图4-6 收件箱ActionFig.4-6 the action of Inbox站接收模块ReceiveAction中的方法实现调用接口IReceiveDAO中的方法,IReceiveDAO接口中的方法由IReceiveDAOImpl具体实现,IReceiveDAO如下图所示图4-7 收件箱模块接口Fig.4-7 the Inbox interface module(2)站接收模块的实现方式

54、A新用户登陆成功后点击新调用ReceiveAction中的newreceive()方法,通过IReceiveDAO中的queryAllNew()查询我所有新的,即标记字段为0的。B收件箱调用ReceiveAction中的AllMail方法查询我所有的没有在垃圾箱和已删除中的,即查询已读和未读,通过IReceiveDAO中的queryAll()实现。已删除:调用ReceiveAction中的hasDel()方法查询我已删除,通过IReceiveDAO中hasDel()实现。D垃圾箱调用ReceiveAction中的dustbinbox()方法查询我所有垃圾箱中的,通过IReceiveDAO中的q

55、ueryAllDustbin()方法实现E读取点击收到的标题,进入查看详细信息,调用ReceiveAction中的find()方法实现,find()方法中传递id通过IReceiveDAO中的query()方法查看详细信息。移动到垃圾箱:调用ReceiveAction中的dustbin()方法,传递id,通过IReceiveDAO中的dustbin()方法设置的状态为2。F删除只是删除到已删除,调用ReceiveAction中SetDel()方法,传递id,通过IReceiveDAO中的setdelete()方法设置状态为3。G永久删除删除数据库中数据,不能找回,调用ReceiveAction

56、中的del(),传递id,通过IReceiveDAO中的delete()方法删除数据库中的记录。4.2.3 其他模块(1)其他模块详细设计其他主要是收取其他服务器上的,需要Internet支持,可以添加其他、管理其他,接收,查看,删除,回复,使用其他发信等功能。用户地址实体类Mail,如下图所示图4-8 用户地址实体类Fig.4-8 the entity of User Address服务器实体类Server,如下图所示图4-9 服务器实体类Fig.4-9 the entity of mail Server其他业务逻辑和实现OtherMailAction,如下图所示图4-10 其他Action

57、Fig.4-10 the action of OtherMailAction其他列表显示、显示相信、删除业务逻辑实现EmailAction,如下图所示图4-11 ActionFig.4-11 the action of EmailAction处理类EmailManage,如下图所示,主要获取从服务器上下载的列表、计算数量、查看详情、发送图4-12 处理Fig.4-12 Mail handling创建用户类UserManage,如下图所示,主要创建用户目录,登陆启动接收线程图4-13 创建用户Fig.4-13 Create user解析工具类ParseMimeMessage,如下图所示,主要对下载到服务器上的eml格式的进行解析,获取其中的信息。图4-14 解析Fig.4-14 E-mail Analysis从其他服务器接收类ReceiveMail,如下图所示,主要以线程的方式只读下载到本地服务器。图4-15 接收Fig.4-15 Receive 用户添加其

温馨提示

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

评论

0/150

提交评论