ge ( 包含 range) 开始下载,range =0 时,忽略 range 参数。
表 3. 备份数据下载返回值:
成功
HTTP 头 HTTP Body 200/201 要下载的文件流 , 新下载返回的是 200 否则返回 201
失败
HTTP 头错误码 HTTP Body (Xml 格式的错误消息) Code Message 400 MSG-1002 无法下载
3) 新建手机备份存储空间:当客户端第一次访问备份服务器时,系统会返回找不到个人网络备份存储空间错误,客户端软件提示用户是否新建备份空间,用户确认建立个人网络备份空间,系统才会为其建立存储空间。服务器会用 deviceid 为标识为对应的手机的分配固定大小的空间。服务器端使用 adapter 模式来连接多种不同文件存储媒体。序列图表示如下:
图 8. 网络备份恢复创建存储空间序列图
接口定义:
URL:https://
:/createspace?deviceid=< 终端的 id>
参数含义同备份数据上传。
表 4. 创建存储空间返回值:
成功
HTTP 头 HTTP Body 200 空
失败
HTTP 头错误码 HTTP Body (Xml 格式的错误消息) Code Message 400 MSG-1003 备份空间已建立 400 MSG-1004 新建备份空间失败
4) 查询已上传部分的大小:当文件上传中断时,可以查询已上传部分的大小,然后断点续传余下部分。序列图表示如下:
图 9. 网络备份恢复查询已上传部分序列图
接口定义:
URL:https://:/uploadquery?uuid=< 上传文件的 uuid>&deviceid=< 终端的 id>
参数含义同备份数据上传。
表 5. 查询文件已上传部分返回值:
成功
HTTP 头 HTTP Body 200 正整数(文件已上传部分的大小)
失败(包含公共错误)
HTTP 头错误码 HTTP Body (Xml 格式的错误消息) Code Message 400 MSG-1005 文件已上传完成
服务器端的实现:
1) 包文件设计如下所示:
图 10. 网络备份恢复包文件设计图
* com.bakrestore.server.dao 下面主要存放 DAO 接口,DAO 主要用来解偶业务方法和数据源,即在业务核心方法和具体数据源之间再增加一层,用来连接业务方法和数据源。
* com.bakrestore.server.model 主要存放一些持久化类
* com.bakrestore.server.service 主要存放业务逻辑类
* com.bakrestore.server.web 主要用来存放接口类,用来响应手机终端。
在 spring 的配置文件:applicationContext.xml 中,该文件中定义了 Spring 要管理的所有的 Beans, 用 Beans 的形式来管理所有的对象以及他们之间的赋值依赖的。在此配置文件中主要定义了 dao,model,service 下面的类。示例代码如下:
清单 1. spring 的配置文件
sqlMapClient>
value="classpath:com/bakrestore/server/dao/ibatis/sql/sql-map-config.xml" />
在 SpringDispatcher-servlet.xml 配置一个视图解析器,其次将手机端的请求与相应的进行映射.以便程序在执行过程中可以依据映射找到所需 Controller,相应的 Controller 与 applicationContext.xml 所定义的 beans 进行交互。示例代码如下:
清单 2. 配置一个视图解析器
class="com.bakrestore.server.web.CreateSpaceController">
class="com.bakrestore.server.web.DownloadController" >
class="com.bakrestore.server.web.UploadQueryController">
class="com.bakrestore.server.web.UploadController" >
2) 持久化类设计如下所示:
在 com.bakrestore.server.model 文件夹中包含 FileNode, FolderNode,UserFil