基于HTTP协议的断点续传应用系统开发毕业设计说明书论文.docx
- 文档编号:5755262
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:44
- 大小:485.11KB
基于HTTP协议的断点续传应用系统开发毕业设计说明书论文.docx
《基于HTTP协议的断点续传应用系统开发毕业设计说明书论文.docx》由会员分享,可在线阅读,更多相关《基于HTTP协议的断点续传应用系统开发毕业设计说明书论文.docx(44页珍藏版)》请在冰豆网上搜索。
基于HTTP协议的断点续传应用系统开发毕业设计说明书论文
本科毕业设计说明书(论文)
题目:
基于HTTP协议的断点续传应用系统开发
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
基于HTTP协议的断点续传应用系统开发
摘要
文件的上传下载是计算机网络核心应用之一。
计算网络的发展围绕在怎样使得文件上传下载更快、更好、更安全。
当今的网络时代,下载软件是使用最频繁的软件之一,而网络的不稳定常常造成数据传输的不稳定,为了获得可靠、高效的数据传输,断点续传技术应运而生。
本系统开发基于HTTP协议,具有断点续传、多线程下载功能,这些功能的实现大大减少资源的浪费,节省用户下载的时间。
本系统的开发用到了多线程技术、网络编程、I/O流技术和Swing用户界面编程,涉及到J2SE中一些基本技术,达到了综合运用所学过的Java知识的目的。
本文对系统的需求分析、关键技术和难点进行了的详细描述,同时又详细介绍本系统的设计与实现。
关键词:
断点续传,多线程,下载,http
THEDEVELOPMENTOFTECHNOLOGYFORDOWNLOADINGCONTINUOUSLYFROMBREAKPOINTSSYSTEMBASEDONHTTPPROTOCOL
ABSTRACT
Touploadanddownloadfilesisoneofcoreapplicationsofcomputernetwork.Developmentofnetworkcomputingishowtomakefileuploadanddownloadfaster,better,moresecured.Atpresent,thesoftwaresfordownloadingfilesareusedfrequently.Datatransmissionproblemthatiscausedbynetworkinstabilityisquiteunstable.Inordertoobtainreliableandefficientdatatransfer,TDCBPtechnologyturnsout.
BasedontheHttpprotocol,thesystemimplementstechnologyfordownloadingcontinuouslyfrombreakpoints(TDCBP).Itisalsodependentonmulti-threadsprogramming,whichgreatlyreducesresourcesandsavesdownloadingtime.Duringdevelopmentofsystem,itutilizesamulti-threading,networkprogramming,I/Ostreamingtechnology,andSwinglibraryforuserinterfaceprogramming.AndthenitreachesthepurposeofintegratedapplicationbasedonJava.
Thisarticlenotonlyanalyzestherequirementsofthissystemwithdetaileddescriptionsofthekeytechnologyanddificulties,butalsointroducesthesystemdesignindetailandimplementationofthissystem.
KeyWords:
tdcbp,multithreading,download,http
第一章绪论
1.1研究的背景
文件的上传下载是计算机网络核心应用之一。
计算网络的发展围绕在怎样使得文件上传下载更快,更好,更安全的核心周围[1]。
当今的网络时代,下载软件是使用最频繁的软件之一。
这些年来,下载技术一直在发展,最原始的下载功能仅仅是个“下载”过程,即从WEB服务器上连续地读取文件。
其最大的问题是,由于网络的不稳定性或者异常的操作,一旦连接断开使得下载过程中断,就不得不全部从头再来一次。
随后,“断点续传”的概念就出来了。
“断点续传”,顾名思义就是如果下载中断,在重新建立连接后,跳过已经下载的部分,而只下载没有下载的部分。
这样可以大大减少资源的浪费,节省下载的时间[2]。
自从“多线程下载”技术发明以来,这项技术得到前所未有的关注已是不争的事实。
在“网络蚂蚁”软件流行开后,许多下载软件也都纷纷效仿,是否具有“多线程下载”技术、甚至能支持多少个下载线程都成了人们评测下载软件的要素。
“多线程下载”的基础是WEB服务器支持远程的随机读取,也即支持“断点续传”。
这样,在下载时可以把文件分成若干部分,每一部分创建一个下载线程进行下载[3]。
JAVA又是一种适用于平滑移植、安全、健壮和可扩展等跨平台开发语言,能开发出跨平台的应用对象和应用程序,所以本系统的实现后可以在多个操作系统平台上运行,如WINDOWS、Linux等,甚至是在非PC上,比如手机或PDA上该设计采用JAVA多线程与线程安全机制,在一定程度上能提高下载的速度和安全性[4]。
1.2研究的意义
多线程和传统的单线程在程序设计上最大的区别是各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行,由此带来的线程调度问题。
多线程进行断点续传,还要记录多个断点位置,且记录断点位置时也要考虑同步互斥等问题,这些都使得设计开发变得更复杂,但是可以明显提高网络文件的下载速度[6]。
现在,不要说编写专门的下载软件,在自己编写的软件中,加入下载功能有时也非常必要。
1.3研究的目标
开发基于HTTP协议的断点续传应用系统,其目标是为了方便用户,提供给用户便捷的下载方式,更快的下载速度。
本系统充分利用了网络上的多余带宽,采用“断点续传”技术,能在上次中止部位继续下载,有效避免了重复劳动,大大节省了下载者的连线下载时间。
1.4可行性分析
可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
要达到这个目的,必须分析几种主要的可能解法的利弊,从而判断原定的系统规模和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。
因此,可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。
系统的可行性分析主要包括技术上的可行性和操作上的可行性。
本系统的可行性分析如下:
1.4.1技术可行性
下载程序功能模块的实现主要利用了面向对象的Java高级编程语言。
使用Java作为开发工具主要是因为Java是目前比较流行而且非常成功的编程语言。
多线程编程技术是Java语言的重要特点。
多线程编程的含义是将程序任务分成几个并行的子任务。
特别是在网络编程中,有很多功能是可以并发执行的。
Java中实现多线程的类有两种方法:
1.扩展java.lang.Thread类,用它覆盖Thread类的run方法。
2.生成实现java.lang.Runnable接口的类并将其它的实例与java.lang.Thread实例相关联。
Thread类是负责向其它类提供线程支持的最主要的类,要使用一个类具有线程功能,在Java中只要简单地从Thread类派生一个子类就可以了。
扩展Thread类,如printThread.java。
由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。
Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。
由于我们可以通过private关键字来保证数据对象只能被方法访问,所以我们只需针对方法提出一套机制,这套机制就是synchronized关键字,它包括两种用法:
synchronized方法和synchronized块。
本系统使用Eclipse的SWING图形界面技术进行开发。
系统的可行性分析主要包括技术上的可行性和操作上的可行性。
1.4.2操作可行性
下载程序的具备友好的用户界面,而且操作简单易于被用户接收,使用此下载程序十分方便,因为软件的操作思路比较清晰,而且用户实际操作的内容较少,所以用户只需要熟练操作计算机即可。
因此从使用操作方面看,此系统得开发是可行的。
1.5论文内容概述
各章节的主要内容如下:
第一章是绪论,讨论课题的研究背景、意义和研究目标,及可行性分析,包括技术可行性,操作可行性。
第二章是软件开发工具和技术介绍,主要介绍了毕业设计中用到的技术及开发工具。
第三章是需求分析,介绍系统业务流程概况,主要阐述了在线作业系统功能模块的需求用例。
第四章是概要设计和详细设计,描述了数据库设计方案,以及各功能模块的技术实现方案。
第五章是系统实现,这一章主要讲了开发环境及配置,并通过两个典型例子介绍了该系统的技术实现架构,阐述技术关键及解决方法和经验总结。
第六章是结束语。
第二章相关理论与技术
本系统用JAVA技术开发,开发工具是eclipse,涉及到JAVA多线程、swing、HTTP等相关技术,本章将对上述技术进行简要的阐述。
2.1JAVA的简介
Java技术既是一种高级的面向对象的编程语言,也是一个平台。
Java技术基于Java虚拟机(Javavirtualmachine,JVM)的概念——这是语言与底层软件和硬件之间的一种转换器。
Java语言的所有实现都必须实现JVM,从而使Java程序可以在有JVM的任何系统上运行[6]。
Java编程语言(Javaprogramminglanguage)与众不同之处在于:
Java程序既是编译型的(compiled)(转换为一种称为Java字节码的中间语言),又是解释型的(interpreted)(JVM对字节码进行解析和运行)。
编译只进行一次,而解释在每次运行程序时都会进行。
编译后的字节码采用一种针对JVM优化过的机器码形式;解释器是JVM的实现。
Java平台(Javaplatform) 是一种纯软件平台,它可以在各种基于硬件的平台上运行。
它有三个版本(参见后面的 Java平台的多个版本)。
它由JVM和Java应用程序编程接口(JavaApplicationProgrammingInterface,API)组成。
JavaAPI是一个大型的现成软件组件(类)集合,它可以简化applet和应用程序的开发和部署,包括健壮、安全且可互操作的企业应用程序。
它涵盖从基本对象到连网和安全性,再到XML生成和Web服务的所有东西。
JavaAPI组织成相关类和接口的库;库也称为包(package)。
除了JavaAPI之外,每个完整的Java平台实现还包含:
⏹用来编译、运行、监视、调试应用程序以及建立应用程序文档的开发工具。
⏹用来部署应用程序的标准机制。
⏹用来创建复杂的图形用户界面(GUI)的用户界面工具包。
⏹用来启用数据库访问和操作远程对象的集成库。
Java技术是最初由SunMicrosystems公司开发的。
JavaCommunityProcess(JCP,一个由全世界的Java开发人员和获得许可的人员组成的开放性组织)对Java技术规范、参考实现和技术兼容性包进行开发和修订。
在2006年8月,SunMicrosystems宣布它打算开放Java平台的源码,并开始征询对许可协议和管理方式的反馈[7]。
Java语言的主要好处是,Java应用程序可以跨硬件平台和操作系统进行移植——这是因为每个平台上安装的JVM都可以理解同样的字节码。
Java语言和平台的可伸缩性非常强。
在低端,现有的应用程序可以很容易地适应内存资源有限的设备。
这种语言是进行服务器端Web编程的理想框架。
因为它被设计为按照一种安全的方式通过网络运行,在通过互联网进行操作时,它提供了一定程度的安全性。
在本质上,Java技术将用户的计算能力从桌面扩展到了Web资源。
Web组件由称为Web容器(Webcontainer) 的运行时平台支持,Web容器的服务包括请求分派、安全性、并发性、生命周期管理以及对命名、事务和电子邮件等API的访问。
在高端,Java 应用服务器(applicationserver) 作为Java组件、XML和Web服务的Web容器,可以与数据库进行交互并提供动态的Web内容;它们还为企业应用程序提供应用程序开发环境,具有事务管理、安全性、集群、性能、可用性、连接性和可伸缩性等功能。
Java平台有三个版本,这使软件开发人员、服务提供商和设备生产商可以针对特定的市场进行开发:
(1)JavaSE(JavaPlatform,StandardEdition)。
JavaSE以前称为J2SE。
它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。
JavaSE包含了支持JavaWeb服务开发的类,并为JavaPlatform,EnterpriseEdition(JavaEE)提供基础。
大多数Java开发人员使用JavaSE5,也称为Java5.0或“Tiger”(2006年6月,JavaSE6或“Mustang”发布了beta版。
)JavaEE(JavaPlatform,EnterpriseEdition)。
这个版本以前称为J2EE。
企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。
JavaEE是在JavaSE的基础上构建的,它提供Web服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(service-orientedarchitecture,SOA)和Web2.0应用程序。
(2)JavaEE(JavaPlatform,EnterpriseEdition)。
这个版本以前称为J2EE。
企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。
JavaEE是在JavaSE的基础上构建的,它提供Web服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(service-orientedarchitecture,SOA)和Web2.0应用程序。
(3)JavaME(JavaPlatform,MicroEdition)。
这个版本以前称为J2ME。
JavaME为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。
JavaME包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。
基于JavaME规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能[8]。
本系统是基于JavaSE开发。
2.2Swing技术简介
Swing是一个用于开发Java应用程序用户界面的开发工具包。
它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。
Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。
Swing的体系结构如图2.2所示
图2.2Swing的体系结构
Swing的主要特性包括:
Swing是由100%纯Java实现的,Swing组件是用Java实现的轻量级(light-weight)组件,没有本地代码,不依赖操作系统的支持,这是它与AWT组件的最大区别。
由于AWT组件通过与具体平台相关的对等类(Peer)实现,因此,Swing比AWT组件具有更强的实用性。
Swing在不同的平台上表现一致,并且有能力提供本地窗口系统不支持的其他特性。
Swing采用了一种MVC的设计范式,即“模型-视图-控制器”(Model-View-Controller),其中,模型用来保存内容,视图用来显示内容,控制器用来控制用户输入。
Swing采用可插入的外观感觉(PluggableLookandFeel,PL&F)。
相对而言,在AWT组件中,由于控制组件外观的对等类与具体平台相关,使得AWT组件总是只有与本机相关的外观。
而Swing使得程序在一个平台上运行时能够有不同的外观,用户可以选择自己习惯的外观。
Swing是AWT的扩展,它提供了许多新的图形界面组件。
Swing组件以“J”开头,除了拥有与AWT类似的按钮(JButton)、标签(JLabel)、复选框(JCheckBox)、菜单(JMenu)等基本组件外,还增加了一个丰富的高层组件集合,如表格(JTable)、树(JTree)[9]。
如图2.3所示:
图2.3Swing组件
2.2.1Swing组件的简介
(1)MVC(Model-View-Controller)体系结构
前面我们提到,Swing胜过AWT的主要优势在于MVC体系结构的普遍使用。
在一个MVC用户界面中,存在3个通信对象:
模型、视图和控件。
模型是指定的逻辑表示法,视图是模型的可视化表示法,而控件则指定了如何处理用户输入。
当模型发生改变时,它会通知所有依赖它的视图,视图使用控件指定其相应机制。
为了简化组件的设计工作,在Swing组件中视图和控件两部分合为一体。
每个组件都有一个相关的分离模型和它使用的界面(包括视图和控件)。
比如,按钮JButton有一个存储其状态的分离模型ButtonModel对象。
组件的模型是自动设置的,例如,一般都使用JButton而不是使用ButtonModel对象。
另外,通过Model类的子类或通过实现适当的接口,可以为组件建立自己的模型。
用setModel()方法把数据模型与组件联系起来。
MVC是现有的编程语言中制作图形用户界面的一种通用思想,其思路是把数据的内容本身和显示方式分离开,这样就使得数据的显示更加灵活多样。
比如,某年级各个班级的学生人数是数据部分,而显示方式可以是多种多样的,既可以采用柱状图显示,也可以采用饼图显示,还可以采用直接的数据输出。
因此在设计时,考虑把数据和显示方式分开,对于实现多种多样的显示是非常有帮助的。
(2)可存取性支持
所有的Swing组件都实现了Accessible接口,提供对可存取性的支持,使得辅助功能如屏幕阅读器能够十分方便地从Swing组件中得到信息。
(3)支持键盘操作
在Swing组件中,使用JComponent类的registerKeyboardAction()方法,能使用户通过键盘操作来替代鼠标驱动GUI上Swing组件的相应动作。
有些类还为键盘操作提供了更便利的方法,其实这就相当于热键,使得用户可以只用键盘进行操作。
(4)设置边框
对Swing组件可以设置一个或多个边框。
Swing中提供了各式各样的边框供用户选用,也能建立组合边框或自己设计边框。
一种空白边框可以增大组件,同时协助布局管理器对容器中的组件进行合理的布局。
Hibernate的体系结构如图2.3所示。
图2.3Hibernate体系结构图
图2.3各对象的说明如下:
SessionFactory:
针对单个数据库映射关系经过编译后的内在镜像,是线程安全的,它是生成Session的工厂。
Session:
表示应用程序与持久存储层之间交互操作的一个单纯种对象,此对象生存期很短。
其隐藏了JDBC连接,也是Transaction的工厂。
持久对象及集合:
带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短。
这些对象可能是普通的JavaBeans/POJO,唯一特殊的是他们正与(仅仅一个)Session相关联。
一旦这个Session被关闭,这些对象就会脱离持久化状态,这样就可被应用程序的任何层自由使用。
瞬态(transient)和脱管(detached)的对象及其集合:
那些目前没有与session关联的持久化类实例。
他们可能是在被应用程序实例化后,尚未进行持久化的对象,也可能是因为实例化他们的Session已经被关闭而脱离持久化的对象。
事务Transaction:
应用程序用来指定原子操作单元范围的对象,它是单线程了,生命周期很短。
Hibernate作为模型/数据访问层。
它通过配置文件(hiberante.cfg.xml或hibernate.properties和映射文件(*.hbm.xml)把java对象或持久化对象(PersistentObeject,PO)映射到数据库中的数据表,然后通过操作PO,对数据库中的表进行各种操作。
2.3Eclipse的简介
目前Eclipse在系统开发领域中受到空前关注,国内外许多软件公司纷纷开始采用
Eclipse作为开发平台。
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)[10]。
2.3.1Eclipse的起源和发展
Eclipse的前身是IBM的VisualAge。
由于意识到VisualAge存在难以扩展、底层技术较为脆弱、很难与WebSphereStudio软件集成等诸多问题,进一步发展甚为困难,同时也面临包括Symantec公司的VisualCafé、Borland公司的JBuilder等开发工具的竞争压力,IBM决定创建一个更开放的,并且可以为IBM其他开发工具提供支持的一体化开发平台。
1998年11月,IBM专门成立了一个项目开发小组,开始开发该平台,2000年新一代开发平台诞生,这就是大家所熟悉的Eclipse。
2000年11月,IBM做出了一个重大决定,将Eclipse采用开放源码的授权和运作模式发布,以增强业界对Eclipse的关注度并加快其推广应用速度。
随后,IBM于2001年12月向外界宣布,捐赠价值4千万美元的Eclipse源码给开源社区;成立由成员公司组成的Eclipse协会(EclipseConsortium),以便支持并促进Eclipse开源项目。
事实证明,IBM的决策非常英明。
Eclipse受到广泛
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 HTTP 协议 断点续传 应用 系统 开发 毕业设计 说明书 论文