毕业设计(论文)-客户端阅读软件与阅读平台通信的实现.doc_第1页
毕业设计(论文)-客户端阅读软件与阅读平台通信的实现.doc_第2页
毕业设计(论文)-客户端阅读软件与阅读平台通信的实现.doc_第3页
毕业设计(论文)-客户端阅读软件与阅读平台通信的实现.doc_第4页
毕业设计(论文)-客户端阅读软件与阅读平台通信的实现.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

客户端阅读软件与阅读平台通信的实现论文题目:客户端阅读软件与阅读平台通信的实现 摘 要随着3G技术的不断发展,真正的无线互联网时代也随之而来。无线互联网的诸多应用不仅具有独特的优势,同时满足了用户获取信息、娱乐、商务等需求,成为未来无线业务发展的重要方向。目前,与3G应用相关的各种产品和项目备受科技行业的关注,搜索引擎,电子商务,音乐,游戏等各类软件的开发推动着无线互联网应用领域的创新与发展。其中,各应用软件与提供其业务能力的平台的交互通信也成为开发中的重点。在对客户端(手机)软件与其平台通信的研究中,通过实践,以阅读软件业务为基础,接口消息基于HTTP协议,消息体使用XML格式,实现了阅读软件与其平台的在线阅读模块的交互通信。本论文将讨论客户端阅读软件与平台的交互流程及其接口的定义;并以在线阅读模块为例,描述该模块的设计与实现;并说明开发过程中使用的关键技术。关键词:客户端(手机)阅读软件,接口消息,HTTP,XML,在线阅读模块,关键技术ABSTRACTWith the continuous development of 3G technology, the real wireless Internet era followed. Many applications of wireless Internet not only have unique advantages, but also meet the users needs of information, entertainment, business and so on, as an important future direction of the wireless application. Currently, various products and projects related with 3G applications attract the attention of the technology industry. The development of search engine, e-commerce, music, games and other kinds of software drive the innovation and development in the field of wireless Internet application. Among them, the interactive communications of the application software and its platform which provides the operational capacity have became one of the focuses of development. In the study of the communication of the client (mobile phone) software and its platform, through practice, based on the business of the reader software, interface messages are in the form of HTTP+XML, accomplish the interactive communications of the reader software and its platform. This paper will discuss the interactive process and interface definition of the reader software and its platform. Take the reading online module for example, describing its design and implementation. And show the key methods in the development process.Key Words: client software reader, interface message, HTTP, XML,reading online module, key methods目录1引言- 4 -2阅读软件与平台的接口的相关定义- 4 -21 术语- 4 -22 终端和平台的交互流程及其接口定义- 4 -221 终端和平台的交互流程- 4 -222 请求和响应的HTTP Header定义- 5 -223 XML消息体的约定- 6 -3阅读软件与平台通信的实现- 8 -31 在线阅读模块需求分析- 8 -311书签管理需求分析概述- 8 -312收藏管理需求分析概述- 9 -32 在线阅读模块设计实现- 9 -321 活动图- 10 -322 类关系图- 26 -323 数据库设计- 27 -4关键技术解决- 28 -41 请求消息及响应消息- 28 -42 JDOM: XML消息体的解析与生成- 29 -43 持久层框架Hibernate- 30 -44 缓存管理jcs- 31 -5结束语- 32 -附 录- 32 -参考文献- 33 -致 谢- 34 -1 引言在人们的生活已离不开手机的时候,各种手机软件纷纷入世,阅读软件即为其一。目前,较受人们喜欢的阅读软件有百阅,V8书客,熊猫看书等。友好的界面,便捷的操作,强大的网络应用等等都是软件赢得人们青睐的地方,也是开发者追求的目标。然而不管是客户端软件何种功能的使用,都少不了与平台服务器的通信。在经过实际开发客户端阅读软件与阅读平台的通信后,本文将介绍双方通信的接口定义,并以在线阅读模块为例,描述其设计实现,并说明使用的关键技术。阅读软件与平台通信的开发使用java语言,JDK 6.0,采用工具MyEclipse6.5,服务器使用JBOSS,数据库使用Oracle,持久层框架使用Hibernate3.2。开发成功实现了阅读软件与平台的通信,但不足的是经测试信息交换使用的时间较长,使用缓存管理jcs仍未达到指定标准,且并发性能不高,未对系统进行性能优化,仅实现通信功能。2阅读软件与平台的接口的相关定义21 术语(1)客户端阅读软件/手机阅读软件/终端:安装在手机终端上通过与阅读平台进行数据交互,实现电子书下载和展现等功能的客户端软件。(2)阅读平台/平台:指提供阅读软件核心业务能力的部分,提供电子书管理,下载控制,用户管理,计费等功能。(3)下发包:自定义的响应消息对象,保存要返回客户端的数据、状态码、数据长度等信息。(4)用户书签:用户在阅读过程中主动加入的书签。(5)系统书签:系统在用户退出阅读时自动记录的书签。22 终端和平台的交互流程及其接口定义双方的消息交互接口都承载于HTTP协议之上,请求消息使用HTTP GET和 POST 两种方法,GET 方法通过HTTP URL传递参数,POST方法通过HTTP 的消息体传递参数。响应消息通过HTTP状态码及消息体将平台返回的结果传给客户端。终端首先同手机阅读平台建立会话,平台在消息应答中通过Cookie返回会话ID,客户端在Cookie中携带会话ID继续进行其他接口消息交互。221 终端和平台的交互流程插图1:终端和平台的交互流程流程说明:(1)终端启动时,向手机阅读平台发起登录鉴权请求(终端首次启动时发起注册请求);(2)手机阅读平台进行终端和用户合法性校验,验证通过后平台生成响应的会话信息;(3)平台将鉴权结果(Result-Code字段)和会话信息(Set-Cookie字段)返回终端;(4)平台保存会话信息用于后续其他信息的交互;(5)终端携带会话信息(Cookie字段)和平台进行其他消息的交互。注:具体字段见2.2.2请求和响应的HTTP Header定义222 请求和响应的HTTP Header定义 客户端请求消息时需要在HTTP Header 中增加以下字段信息: 表1:请求消息Header字段 请求消息字段名称是否必选描述Client-Agent必选终端类型,由客户端版本号、终端屏幕大小(宽*高)和厂商自定义信息三部分组成,三部分之间用“/”分割,如:Symbian_S60_V3/240*320/OtherInfomationx-up-calling-line-id必选用户手机号码user-id可选用户唯一标识,客户端首次启动时通过客户端注册接口获取APIVersion必选消息协议版本号,以本规范版本号定义为准,如:1.0.0Content-Type可选消息体类型,使用POST方法上传数据时指定:application/xmlAcept-Encoding可选支持的数据压缩传输格式,如:gzipCookie可选传递客户端和平台会话ID客户端和平台未建立会话时,该字段不存在;客户端和平台建立会话后,后续消息交互客户端必须携带该字段参数上报会话IDAction必选调用接口名称具体见 附录1接口名称Action定义 平台在应答的HTTP Response Header 中包含以下字段信息: 表2:响应消息Header字段应答消息字段名称是否必选描述Content-Encoding可选如果客户端支持压缩传输,平台返回内容的压缩格式Result-Code必选客户端请求的响应结果码,其中0表示成功,其他结果码表示对应的错误信息具体见 附录2 响应结果码定义Content-Type可选消息体类型 application/xmlContent-Length可选应答消息长度Set-Cookie可选如果客户端请求中没有会话ID或者会话ID过期时,平台重新指定会话IDAPIVersion必选消息协议版本号,以本规范版本号定义为准,如:1.0.0TimeStamp必选平台当前系统时间时间格式:yyyy-MM-dd HH:mm:ss 如:2010-4-19 15:14:04223 XML消息体的约定(1)请求消息体(HTTP POST请求)和响应消息体采用XML编码方式,XML格式采用W3C的1.0规范,字符编码采用UTF-8。每个XML消息格式都是以?xml version=“1.0”encoding=“UTF-8”?起始。(2)消息体格式采用XMLSchema来定义,遵循/2001/XMLSchema的国际标准。(3)请求消息体以Request作为根节点,应答消息体以Response作为根节点。(4)对响应消息的XML内容中包含复杂信息的字段,则使用CDATA语法表示。2231 请求消息体例客户端发送给平台添加系统书签的请求消息体。所添加系统书签的内容id为2010040005,章id为6,书签保存的位置相对于章首字的字数偏移为280。?xml version=1.0 encoding=UTF-8?RequestAddSystemBookmarkReqBookmarkcontentID2010040005/contentIDchapterID6/chapterIDposition280/position/Bookmark/AddSystemBookmarkReq/Request 2232 应答消息体例平台返回给客户端的添加系统书签的响应消息体。所返回信息包括该用户所有的系统书签列表。共获取该用户系统书签的数量为2,分别为书签id为1010040101,内容id为2010040550,章id为3,书签保存的位置相对于章首字的字数偏移为45;书签id为010040202,内容id为2010040005,章id为6,书签保存的位置相对于章首字的字数偏移为280。后一个书签为用户发送添加系统书签请求时添加在数据库中的。?xml version=1.0 encoding=UTF-8?ResponseAddSystemBookmarkRspBookmarkListBookmarkbookmarkID1010040101bookmarkIDcontentID2010040550/contentIDchapterID3chapterIDposition45position/BookmarkBookmarkbookmarkID1010040202bookmarkID contentID2010040005/contentIDchapterID6chapterIDposition280position/Bookmark/BookmarkList/AddSystemBookmarkRsp/Response3阅读软件与平台通信的实现31 在线阅读模块需求分析在线阅读模块包括书签管理功能和收藏管理功能。书签管理实现添加,删除和获取用户书签或系统书签;收藏管理实现添加,删除和获取用户收藏的内容。311书签管理需求分析概述客户端通过HTTP请求消息Header中的Action字段,调用平台书签管理的指定接口,平台处理客户端发送的请求,并将操作结果返回给客户端。 插图2:书签管理用例图(1)添加用户书签:用户在阅读电子书时主动设置当前阅读的位置为用户书签。客户端通过HTTP POST请求,在消息体中以XML格式传入要保存书签的书签名称,内容id,章id和保存位置相对于章首字的字数偏移。平台返回该用户的用户书签列表。(2)添加系统书签:系统自动设置系统书签,在用户退出当前阅读时,系统自动保存当前位置为系统书签。客户端通过HTTP POST请求,在消息体中以XML格式传入要保存书签的内容id,章id和保存位置相对于章首字的字数偏移。平台返回该用户的系统书签列表。(3)删除书签:客户端通过HTTP GET请求,在URL中传入书签id,平台根据书签id删除对应的书签(用户书签或系统书签),通过HTTP响应消息的状态码告诉客户端处理结果。(4)删除全部系统书签:删除该用户全部系统书签,平台通过HTTP响应消息的状态码告诉客户端处理结果。(5)删除全部用户书签:删除该用户全部用户书签,平台通过HTTP响应消息的状态码告诉客户端处理结果。(6)删除内容全部书签:客户端通过HTTP GET请求,在URL中传入内容id,平台根据内容id删除该内容的所有书签,将剩余内容的书签返回给客户端。(7)获取用户书签列表:客户端通过HTTP GET请求,在URL中传入起始记录号和数量,平台根据起始记录号和数量返回指定的用户书签列表给客户端。(8)获取系统书签列表:平台获取该用户的系统书签列表给客户端。(9)获取内容全部用户书签:客户端通过HTTP GET请求,在URL中传入内容id,平台根据内容id获取单个内容的全部用户书签给客户端。312收藏管理需求分析概述客户端通过HTTP请求消息Header中的Action字段,调用平台收藏管理的指定接口,平台处理客户端发送的请求,并将操作结果返回给客户端。 插图3:收藏管理用例图(1)获取收藏内容列表:客户端通过HTTP GET请求,在URL中传入起始记录号和数量,平台根据起始记录号和数量返回指定收藏列表给客户端。(2)添加收藏内容:客户端通过HTTP GET请求,在URL中传入内容id,平台通过HTTP响应消息的状态码告诉客户端处理结果。(3)删除收藏内容:客户端通过HTTP GET请求,在URL中传入要删除收藏的内容id,及要平台返回的收藏的起始记录号和数量,平台根据请求返回收藏列表给客户端。(4)删除全部收藏内容:删除该用户全部收藏内容,平台通过HTTP响应消息的状态码告诉客户端处理结果。 32 在线阅读模块设计实现 采用分层的结构,接入层+业务层+持久层。接入层接受客户端传来的HttpServletRequest对象,解析报头信息,URL及请求消息体,根据请求业务的不同,获取特定参数,传给业务层特定模块处理;业务层负责业务的处理流程,调用相应的持久层的方法,对数据库表进行增、删、查、改操作,将结果封装成下发包传给接入层,接入层处理响应包生成HttpServletResponse对象返回给客户端。321 活动图3211 添加用户书签活动图 插图4:添加用户书签活动图注释1:书签信息包括:书签id,书签名,用户id,内容id,章id,章名称,具体位置(保存位置相对于章首字的偏移位置),书签类别(1-用户书签,2-系统书签)及书签创建日期。注释2:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释3:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释4: 下发包(响应消息)MessageBody返回格式为?xml version=1.0 encoding=UTF-8?ResponseAddUserBookmarkRspBookmarkListBookmarkbookmarkID/ bookmarkName/ contentID/chapterID/position/Bookmark/BookmarkList/AddUserBookmarkRsp/Response注释5: 成功下发包和失败下发包生成的HttpServletResponse对象主要靠StateCode(即状态码)属性的具体值来区分。3212 添加系统书签活动图 插图5:添加系统书签活动图注释1:书签信息包括:书签id,书签名,用户id,内容id,章id,章名称,具体位置(保存位置相对于章首字的偏移位置),书签类别(1-用户书签,2-系统书签)及书签创建日期。注释2:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释3:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释4: 下发包(响应消息)MessageBody返回格式为?xml version=1.0 encoding=UTF-8?ResponseAddSystemBookmarkRspBookmarkListBookmarkbookmarkID/ contentID/chapterID/position/Bookmark/BookmarkList/AddSystemBookmarkRsp/Response注释5: 成功下发包和失败下发包生成的HttpServletResponse对象主要靠StateCode(即状态码)属性的具体值来区分。3213 删除书签活动图 插图6:删除书签活动图注释1:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释2:下发包(响应消息)中的MessageBody为空,状态码StateCode为成功。注释3: 成功下发包和失败下发包生成的HttpServletResponse对象主要靠StateCode(即状态码)属性的具体值来区分。3214 删除全部系统书签活动图 插图7:删除全部系统书签活动图注释1:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释2:下发包(响应消息)中的MessageBody为空,状态码StateCode为成功。注释3: 成功下发包和失败下发包生成的HttpServletResponse对象主要靠StateCode(即状态码)属性的具体值来区分。3215 删除全部用户书签活动图 插图8:删除全部用户书签活动图注释1:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释2:下发包(响应消息)中的MessageBody为空,状态码StateCode为成功。注释3: 成功下发包和失败下发包生成的HttpServletResponse对象主要靠StateCode(即状态码)属性的具体值来区分。3216 删除内容全部书签活动图 插图9:删除内容全部书签活动图注释1:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释2:下发包(响应消息)中的MessageBody为?xml version=1.0 encoding=UTF-8?ResponseDeleteContentBookmarkRsptotalRecordCount0/totalRecordCount/DeleteContentBookmarkRsp/Response,状态码StateCode为成功。注释3:下发包(响应消息)中的MessageBody为?xml version=1.0 encoding=UTF-8?ResponseDeleteContentBookmarkRsptotalRecordCount/ContentInfoListContentInfocontentID/contentName/authorName/isSerial/LastestChapterchapterID/chapterName/LastestChapterBookmarkListBookmarkbookmarkID/chapterID/position/Bookmark/BookmarkList/ContentInfo/ContentInfoList/DeleteContentBookmarkRsp/Response,状态码StateCode为成功。注释4:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释5: 成功下发包和失败下发包生成的HttpServletResponse对象主要靠StateCode(即状态码)属性的具体值来区分。3217 获取用户书签列表活动图 插图10:获取用户书签列表活动图注释1:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释2:下发包(响应消息)中的MessageBody为?xml version=1.0 encoding=UTF-8?ResponseGetUserBookmarkRsptotalRecordCount0/totalRecordCount/GetUserBookmarkRsp/Response,状态码StateCode为成功。注释3:下发包(响应消息)中的MessageBody为?xml version=1.0 encoding=UTF-8?ResponseGetUserBookmarkRsptotalRecordCount/ContentInfoListContentInfocontentID/contentName/authorName/isSerial/LastestChapterchapterID/chapterName/LastestChapterBookmarkListBookmarkbookmarkID/chapterID/position/Bookmark/BookmarkList/ContentInfo/ContentInfoList/GetUserBookmarkRsp/Response,状态码StateCode为成功。注释4:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释5: 成功下发包和失败下发包生成的HttpServletResponse对象主要靠StateCode(即状态码)属性的具体值来区分。3218 获取系统书签列表活动图插图11:获取系统书签列表活动图注释1:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释2:下发包(响应消息)中的MessageBody为?xml version=1.0 encoding=UTF-8?ResponseGetSystemBookmarkRsptotalRecordCount0/totalRecordCount/GetSystemBookmarkRsp/Response,状态码StateCode为成功。注释3:下发包(响应消息)中的MessageBody为?xml version=1.0 encoding=UTF-8?ResponseGetSystemBookmarkRsptotalRecordCount/ContentInfoListContentInfocontentID/contentName/bookmarkID/chapterID/position/ContentInfo/ContentInfoList/GetSystemBookmarkRsp/Response,状态码StateCode为成功。注释4:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释5: 成功下发包和失败下发包生成的HttpServletResponse对象主要靠StateCode(即状态码)属性的具体值来区分。3219 获取内容全部用户书签活动图插图12:获取内容全部用户书签活动图注释1:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释2:下发包(响应消息)中的MessageBody为?xml version=1.0 encoding=UTF-8?ResponseGetContentBookmarkRsptotalRecordCount0/totalRecordCount/GetContentBookmarkRsp/Response,状态码StateCode为成功。注释3:下发包(响应消息)中的MessageBody为?xml version=1.0 encoding=UTF-8?ResponseGetContentBookmarkRsptotalRecordCount/BookmarkListBookmarkbookmarkID/chapterID/position/Bookmark/BookmarkList/GetContentBookmarkRsp/Response,状态码StateCode为成功。注释4: 成功下发包和失败下发包生成的HttpServletResponse对象主要靠StateCode(即状态码)属性的具体值来区分。32110 获取收藏内容列表活动图 插图13:获取收藏列表活动图注释1:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释2:下发包(响应消息)中的MessageBody为?xml version=1.0 encoding=UTF-8?ResponseGetFavoriteRsptotalRecordCount0/totalRecordCount/GetFavriteRsp/Response,状态码StateCode为成功。注释3:下发包(响应消息)中的MessageBody为?xml version=1.0 encoding=UTF-8?ResponseGetFavoriteRsptotalRecordCount/ContentInfoListContentInfocontentID/contentName/authorName/isSerial/LastestChapterchapterID/chapterName/LastestChapter/ContentInfo/ContentInfoList/GetFavoriteRsp/Response,状态码StateCode为成功。注释4:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释5: 成功下发包和失败下发包生成的HttpServletResponse对象主要靠StateCode(即状态码)属性的具体值来区分。32111 添加收藏内容活动图 插图14:添加收藏内容活动图注释1:收藏信息包括:收藏id,用户id,内容id及收藏日期。注释2:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释3:下发包(响应消息)中的MessageBody为空,状态码StateCode为成功。注释4: 成功下发包和失败下发包生成的HttpServletResponse对象主要靠StateCode(即状态码)属性的具体值来区分。32112 删除收藏内容活动图 插图15:删除收藏内容活动图注释1:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释2:下发包(响应消息)中的MessageBody为?xml version=1.0 encoding=UTF-8?ResponseDeleteFavoriteRsptotalRecordCount0/totalRecordCount/DeleteFavoriteRsp/Response注释3:下发包(响应消息)中的MessageBody为?xml version=1.0 encoding=UTF-8?ResponseDeleteFavoriteRsptotalRecordCount/ContentInfoListContentInfocontentID/contentName/authorName/isSerial/LastestChapterchapterID/chapterName/LastestChapter/ContentInfo/ContentInfoList/DeleteFavoriteRsp/Response,状态码StateCode为成功。注释4:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释5: 成功下发包和失败下发包生成的HttpServletResponse对象主要靠StateCode(即状态码)属性的具体值来区分。32113 删除全部收藏内容活动图插图16:删除全部收藏内容活动图注释1:下发包(响应消息)中的MessageBody为空,状态码StateCode为服务器数据库异常。注释2:下发包(响应消息)中的MessageBody为空,状态码StateCode为成功。注释3: 成功下发包和失败下发包生成的HttpServletResponse对象主要靠StateCode(即状态码)属性的具体值来区分。322 类关系图 插图17:类关系图(1)接入层:DeliverHttpServlet类继承javax.servlet.http.HttpServlet类并实现了javax.servlet.Servlet接口。重写了doGet()和doPost()方法,用于处理客户端传来的HttpServletRequest请求,调用业务层方法,生成返回给客户端的HttpServletResponse响应。(2)业务层:BookmarkMgr和FavoriteMgr分别为书签管理和收藏管理业务层接口,BookmarkMgrBean和FavoriteMgrBean分别为其实现类,解析接入层传来的参数,调用持久层方法,对数据组装,生成下发包,实现流程的处理。(3)持久层:BookmarkDao,ContentDao和FavoriteDao分别为书签,内容和收藏的持久层接口,BookmarkDaoImpl,ContentDaoImpl和FavoriteDaoImpl分别为其实现类,分别实现对数据库书签表,内容表和收藏表的增、删、查、改操作。(4)实体类:由数据库表反向生成的同表字段一一对应的javabean,包括书签实体类Bookmark,内容实体类Content收藏实体类Favorite。323 数据库设计(1)书签表 t_bookmark 表3:数据库书签表NameCodeCommentData Type书签idbookmark_id书签idNUMBER(19)书签名bookmark_Name书签名VARCHAR2 (100)用户iduser_id用户idVARCHAR2 (100)内容idcontent_id内容idNUMBER(19)书的章chapter_id书的章NUMBER(19)章的名称chapter_name章的名称VARCHAR2 (100)位置position位置NUMBER(19)书签类别bookmark_type书签类别CHAR(1)书签日期bookmark_create_time书签日期TIMESTAMP(2)收藏表 t_favorite 表4:数据库收藏表NameCodeCommentData Type收藏idfavorite_id收藏idNUMBER(19)用户iduser_id用户idVARCHAR2 (100)内容idcontent_id内容idNUMBER(19)收藏日期favorite_create_time收藏日期TIMESTAMP(3)内容表 t_content 表5:数据库内容表NameCodeCommentData Type内容idcontent_id主键,内容idNUMBER(19)内容名称content_name内容名称VARCHAR2 (100)内容xmlcontent_xml内容xmlCLOB作者idauthor_id作者idNUMBER(19)作者姓名author_name作者姓名VARCHAR2 (100)是否连载书籍is_serialtrue/falseCHAR(1)最新章的idlc_chapter_id最新章的idNUMBER(19)最新章的名称lc_chapter_name最新章的名称VARCHAR2 (100)4关键技术解决41 请求消息及响应消息在客户端和平台的通信中,要想有条不紊地交换数据,就必须遵循事先约定好的规则,即客户端每一次的请求消息及相应的响应消息的格式。因在项目的开发中,使用Servlet技术(Servlet是运行在服务器端的java技术,主要用于处理客户端HTTP请求,并返回一个响应。郭真,王国辉.JSP程序设计教程M.人民邮电出版社,2008.P120),请求消息和响应消息是基于HTTP协议报文的。HTTP请求报文和响应报文都是由三个部分组成,包括开始行,首部行和实体主体。谢希仁.计算机网络(第五版)M. 电子工业出版社,2008. P243开始行用于区分是请求报文还是响应报文(请求报文的开始行叫请求行,响应报文的开始行叫状态行);首部行用来说明客户端,服务器或报文主体的一些信息;实体主体放信息资源。HTTP请求报文的请求行由请求方法,请求网址URI和协议构成。根据请求方法的不同,在项目中使用GET请求和POST请求。GET请求表示客户端请求一个URL,请求参数放在URL中。如项目中删除书签的请求(见插图18),参数书签bookmarkId放在URL后,与URL以“?”连接。setGetHeader方法设置GET请求首部信息,具体字段含义见222 HTTP请求Header定义。 插图18:HTTP GET请求(删除书签)报文代码实现POST请求表示客户端请求的时候还要提交数据,数据放在请求报文的实体主体部分,服务器收到这样的请求后通常需要处理这些数据。如项目中添加系统书签请求(见插图19),requestBody中为XML格式的请求消息体。 插图19:HTTP POST请求(添加系统书签)报文代码实现42 JDOM: XML消息体的解析与生成在需要对XML消息体进行处理时,了解并使用了JDOM。JDOM作为开源代码,通过Java 代码来访问、操作并输出 XML 数据,为处理XML提供了简单方便的方法。使用SAXBuilder可以从文件、流、URL中得到Document对象,Element和Attribute定义了元素和属性,通过set方法和get方法很容易获取元素及其属性。且Child和Children的形象定义显示着数据结构中树的概念,展现了xml中元素的关系及其连接方式,构成了xml消息体项目中,解析XML请求消息体,如解析客户端传来的添加系统书签的消息体xmlString(见插图20),利用SAXBuilder和StringReader将XML消息体生成Document对象;并用Element类对象

温馨提示

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

评论

0/150

提交评论