信息系统分析与设计新浪微博桌面客户端java版开发文档.doc
《信息系统分析与设计新浪微博桌面客户端java版开发文档.doc》由会员分享,可在线阅读,更多相关《信息系统分析与设计新浪微博桌面客户端java版开发文档.doc(43页珍藏版)》请在三一办公上搜索。
1、信息系统分析与设计新浪微博桌面客户端java版开发文档目 录第1章 引言11.1 选题背景11.2 研究的目标和意义21.3 研究思路2第2章 系统的相关技术32.1 J2SE介绍32.2 OAuth验证机制32.3 JSON解析52.4 XML解析7第3章系统的分析123.1 技术可行性研究123.2 需求分析123.3 形式化说明技术143.3.1 形式化图表流程图说明143.3.2 形式化功能说明15第4章系统的设计164.1 总体设计功能图164.1.1 用户登录界面设计174.1.2 用户登录界面设计184.2 系统数据的设计20第5章 详细设计215.1 登陆界面设计215.2 验
2、证界面设计225.3 用户界面设计235.4 修改界面设计235.4.1 修改用户个人信息245.4.2 修改用户个人隐私245.4.3 修改信息提醒功能255.5 查找用户并加关注265.5.1 查找用户265.5.2 查找用户并取消关注275.6 关于帮助界面设计275.7 关于消息提醒界面设计27第6章系统的编程实现296.1 登陆验证296.2 登陆线程同步306.3 首页数据获取326.4 用户信息修改356.5 搜寻新用户366.6 刷新首页376.7 即时消息提醒37第7章 结论397.1 系统达到的目标397.2 后续改进39参考文献40致谢41附录42外文资料原文43译 文4
3、5第1章 引言第1章 引言1.1 选题背景21世纪以来,全球进入一个新经济时代互联网时代,互联网络和信息通信的迅猛发展创造了一个无疆界的数字世界,交易几乎可以瞬时在世界各地完成,服务产品也不例外。网络营销工具服务产品更有其独特的优势利用信息技术带来的便捷。近几年来,互联网发展的十分的快速,许多新型的网络媒体以及网络营销工具都应运而生。新浪作为一家服务于中国及全球华人社群的领先在线媒体及增值资讯服务提供商,拥有多家地区性网站,以服务大中华地区与海外华人为己任,通过旗下五大业务主线为用户提供网络服务的网站。此外,新浪是中国的四大门户网站之一,和搜狐、网易、腾讯并称为“中国四大门户”。目前,新浪网已
4、经成为下辖北京新浪、香港新浪、台北新浪、北美新浪等覆盖全球华人社区中文网站的全球最大中文门户。在这种竞争时代,针对现在互联网上如雨后春笋般不断冒出各类型的网络营销工具,新浪模仿国外知名的Twitter,并结合当前中国特有的现象,打造出适合国人的一个交流平台。新浪微博于2009年8月正式进入中文上网主流人群视野。根据相关公开数据,截至2010年1月,微博在全球已经拥有7500万注册用户。在2009年8月新浪网推出“新浪微博”内测版,成为门户网站中第一家提供微博服务的网站,微博正式进入中文上网主流人群视野。新浪微博作为国内第一个推出微博的网站,并同时在推广期间利用名人效应吸引大量用户,奠定新浪微博
5、的用户基础。根据首因效应,第一个大规模推广微博的网站势必在用户心中留下深刻印象。此外,新浪微博的平台从一开始就从运营模式着手,有一套较为完善成熟的审核机制,既可以满足中国互联网信息安全规则的需要,又不挫伤使用者的积极性,特别是在用户的分级制度上借鉴新浪“名人博客”的成功经验,利用名人效应和适当的炒作,很快就聚集了大量的人气,根据51免费论文NETJ控的社会化网络统计,新浪微博虽然才推出几个月时间,但已经在极短的时间内成为国内微博客的领跑者。1.2 研究的目标和意义通过对新浪官方提供的SDK(版本号 weibo4j-2010-12-27)的分析,理解了如何通过OAuth授权来请求服务器验证并获取
6、到数据。并且掌握了GET、POST、DELETE方法的使用,能够写出SDK中未封装的方法。在此基础上,通过Netbeans IDE7.0 开放平台,通过可视化开发界面,开放桌面JAVA版的客户端应用。意义是了解了新浪微博API的运行机制,如何对新浪提供的API接口去封装一个方法,对学习的能力有进一步的提升。开发的最终目标是能够实现桌面客户端JAVA版,并且实现新浪微博的基本功能,例如:让微博,发图片,搜索好友,获取微博信息等功能。1.3 研究思路应用程序主要是针对的新浪提供的SDK而展开的,再深入分析用户可能会用到的功能和用户喜欢的界面UI设计,实现新浪微博网页版功能,进而移植到桌面客户端,使
7、用户体验更加丰富和方便,并且在后续版本开放中,可以充分发挥桌面平台的优势,开发出更多和新浪微博相关的各种插件服务功能。在应用的开发中,主要要弄清是如何请求数据和发送数据的,对API接口需要从最初了解其功能到最终的掌握其方法。考虑到是即时通讯应用软件,并且微博更新的速度较快,主要侧重于“即时收发数据”,并且做到数据发送的完整和迅速。在整个系统中没有设置数据库来存放用户数据,只是在系统中设置了存放系统配置的文件。39第2章 系统的相关技术第2章 系统的相关技术2.1 J2SE介绍随着Internet网络的迅速发展,基于互联网的企业应用要求软件平台具有开放性、分布性和平台无关性。于是就相继出现了RP
8、C/COM/CORBA等技术,但这些技术在实际应用中存在着许多不足和局限。它们的特定协议难以通过防火墙,因而不适于Web上的应用开发。为了进一步开发基于Web的应用,出现了Sun公司的Sun ONE(Open Net Environment 开发网络环境)和Microsoft公司的。NET等Web 服务技术体系。 Sun ONE体系结构以Java语言为核心,包括J2SE/J2EE/J2ME和一系列的标准、技术及协议。它包括Sun独有的iPlanet软件系列,其中有在市场上受欢迎的LDAP目录服务器软件,以及Forte for Java便于在任何环境下书写Java 语言的软件工具。我们很容易就能
9、从网上免费获得和使用包括Java 集成开发环境、Java数据库和中间件(Application Server)服务器等产品,以及它们的源代码。Sun ONE更接近或能满足互联网在智能化Web服务方面对分布性、开发性和平台无关性的要求。2.2 OAuth验证机制OAUTH认证授权就三个步骤,三句话可以概括:1. 获取未授权的Request Token2. 获取用户授权的Request Token3. 用授权的Request Token换取Access Token当应用拿到Access Token后,就可以有权访问用户授权的资源了。这三个步骤是对应OAUTH的三个URL服务地址。上面的三个步骤中,
10、每个步骤分别请求一个URL,并且收到相关信息,并且拿到上步的相关信息去请求接下来的URL直到拿到Access Token。具体每步执行信息如下:A. 使用者(第三方软件)向OAUTH服务提供商请求未授权的Request Token。向Request Token URL发起请求。B. OAUTH服务提供商同意使用者的请求,并向其颁发未经用户授权的oauth_token与对应的oauth_token_secret,并返回给使用者。C. 使用者向OAUTH服务提供商请求用户授权的Request Token。向User Authorization URL发起请求,请求带上上步拿到的未授权的token与
11、其密钥。D. OAUTH服务提供商将引导用户授权。该过程可能会提示用户,你想将哪些受保护的资源授权给该应用。此步可能会返回授权的Request Token也可能不返回。如Yahoo OAUTH就不会返回任何信息给使用者。E. Request Token 授权后,使用者将向Access Token URL发起请求,将上步授权的Request Token换取成Access Token。请求的参数见上图,这个比第一步A多了一个参数就是Request Token。F. OAUTH服务提供商同意使用者的请求,并向其颁发Access Token与对应的密钥,并返回给使用者。G. 使用者以后就可以使用上步返
12、回的Access Token访问用户授权的资源。从上面的步骤可以看出,用户始终没有将其用户名与密码等信息提供给使用者(第三方软件),从而更安全。获取request token创建request token以及相应的密钥(secret)询问用户是否授权使用该客户端用户授权或者拒绝如果用户同意授权,则转向您的应用。用request token向新浪换取access token创建并返回access token 以及secret获取该access token 的信息并且获取用户的信息(图 2-1 OAUTH认证机制流程图)2.3 JSON解析JSON(JavaScript Object Notati
13、on) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C+, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程
14、序。这个字符串看起来有点儿古怪,但是 JavaScript 很容易解释它,而且 JSON 可以表示比名称 / 值对更复杂的结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。JSON具有以下这些形式:对象是一个无序的“名称/值对”集合。一个对象以“”(左括号)开始,“”(右括号)结束。每个“名称”后跟一个“:”(冒号);“名称/值 对”之间使用“,”(逗号)分隔。 (图 3-1)数组是值(value)的有序集合。一个数组以“”(左中括号)开始,“”(右中括号)结束。值之间使用“,”(逗号)分隔。 (图 3-2)值(value)可
15、以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。 (图 3-3) 字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。 字符串(string)与C或者Java的字符串非常相似。 (图 3-4)数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。(图 3-5)2.4 XML解析XML的解析方式有两种: 一是通过
16、文档模型解析,也就是通过父标签索引出一组标记。另外一种方法是遍历节点(document 以及 childNodes)。这个可以通过递归来实现,不过解析出来的数据仍旧是形式各异,往往也不能满足预先的要求。通过GET方法获取到的新浪微博数据是以XML或者JSON的形式返回的,这就要求我们要用XML类或者JSON类进行解析,通过某一个KEY来获取到其String值。对于XML解析,使用JDK自带类库操作XML。部分实现功能代码如下所示:/*XML类解析开始*/public static Dom newDom(String rootName) throws XmlExceptionDocument d
17、oc = null;try DocumentBuilder dombuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); doc = dombuilder.newDocument(); doc.setXmlStandalone(true); catch (Exception e) throw new XmlException(e.getMessage(), e); Element root = doc.createElement(rootName); doc.appendChild(root); return n
18、ew Dom(root);public static Dom getRoot(InputStream is) throws XmlException Document doc = null; try DocumentBuilder dombuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); doc = dombuilder.parse(is); catch (Exception e) throw new XmlException(e.getMessage(), e); Element root = doc.ge
19、tDocumentElement(); return new Dom(root);public static Dom getRoot(String xmlFile) throws XmlExceptiontryInputStream is = new FileInputStream(xmlFile);Dom root = getRoot(is); is.close(); return root; catch (Exception e) throw new XmlException(e.getMessage(), e);public String getAttributeValue(String
20、 attributeName)return e.getAttribute(attributeName); public boolean existElement(String elementName)NodeList nodeList = e.getElementsByTagName(elementName);if (nodeList = null) | (nodeList.getLength() 1) return false; return true;public String elementText(String elementName)Element element = (Elemen
21、t)e.getElementsByTagName(elementName).item(0);Node textNode = element.getFirstChild();if (textNode = null) return ;eturn textNode.getNodeValue();public Dom element(String elementName)NodeList nodeList = e.getElementsByTagName(elementName);if (nodeList = null) | (nodeList.getLength() 1) return null;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息 系统分析 设计 新浪 桌面 客户端 java 开发 文档

链接地址:https://www.31ppt.com/p-4847665.html