微信公众互动平台的设计与实现

微信公众互动平台的设计与实现

ID:35106759

大小:7.28 MB

页数:83页

时间:2019-03-18

上传者:U-56225
微信公众互动平台的设计与实现_第1页
微信公众互动平台的设计与实现_第2页
微信公众互动平台的设计与实现_第3页
微信公众互动平台的设计与实现_第4页
微信公众互动平台的设计与实现_第5页
资源描述:

《微信公众互动平台的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

学校代号10532学号G132660548分类号密级/爲,满為乂多HUNANUNIVERSITY工程硕±学位论文微信公众互动平台的设计与实现学位串请人姓名刘原培养单位软件学院导师姓名及职赖彭祝斌教授、裘曙光高级工程师学科专业软件工程研究方向传媒管理论文提交日期2016年5月 学校代号:10532学号;G132660548密级:满南大学工程硕±学位论文微信公众互动平台的设计与实现学位串请人姓名:刘厚导师姓名及职称:彭祝斌教授、冀曙光高级工程师控养单位:软件学院专业名赖=软件工穏论义扭交日巧:2016年5月论立答媒日巧:2016年6月6日答據委贵会主巧:向志强教授 TheDesi打andImlementatio打ofWeChatPublicI打fractiongpPlatformbyLIUHouB.E.CentralChinaNormalUniversit2000(y)athesissubmit化dinartialsatisfactionofthe民euirementsforthedereeofpqgMasterof£rigi打eeri打gin'neerSoftw扣eEngiingin地eGraduateSchoolofHu打a打UniversitySupervisorProfessorPENGZhubinSe打iorEnineerGONGShuGuanggJune2016, 湖南大学学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加W标注引用的内容外,本论文不包含任何’其他个人或集体已经发表或撰写的成果作品。对本文的研究做化董要贡献的个人和集体,均已在文中W明确方式标明。本人完全意识到本声明的法律后果由本人承担。^作者签名:日期;方年/月曰学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部口或机构送交论文的复印件和电子版,允许论文被査巧和借阅。本人授权湖南大学可将本学位论文的全部或部分内容编入有关数据库进行检索,可W采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于1、保密□,在年巧密后适用本授权书。2、不保密〇/,""(请在UJI上相应方框内打V)足若月^作者签名:曰期:年曰导师签名日巧如^年月^曰I 微信公众互动平台的设计与实现摘要20一微信是腾讯公司于11年1月推出的款为智能手机提供即时通信服务的免费应用软件,支持跨通信运营商、跨操作系统平台发送文字、图片、语音、视频等功能。微信公众平台通过开放接曰方式提供了与用户进行消息交互、自定义菜单交互等能力。目前,基于微信公众平台开发轻应用成为新的发展趋势,很多政、府、企事业单位纷纷开设微信公众号,开发微信新应用为群众客户提供信息化服务。微信服务因其移动性、便携性、个性化等特点深受广大用户的欢迎。针对网民开展网络社交活动的功能需求,本文提出基于微信公众互动平台开发框架,结合智能手机终端设备的特点,应用J2EE、HTML、XML、Webservice、Orcale数据库等相关技术,研究开发了微信公众互动平台。该微信公众互动平台实现了用户注册、发布活动、管理活动、发现活动、参与活动、会员管理、审核活动、精品活动等功能。论文使用用例图、流程图等对微信公众互动平台的功能需求进行分析,从系统的总体设计、技术架构、功能设计、工作流程设计、内外部接日设计、数据库设计等方面,详细介绍了微信公众互动平台的系统设计。并介绍了系统的数据库存储、徹信公众账号消息收发及自定义菜单、系统核屯业务功能等具体实现技术细节。、本文设计的微信公众互动平台,具有操作简便功能容易扩充、用户体验良好一、开发成本低等优点,具有定的应用和推广价值。关键词;互动平台微信公众;网络社交;手机开发II 工程硕±学位论文Abstract-WeChatisakindoffreeapplicatio打softwarewhichrovidesinstantcommunicaptionserviceforsmarthoneanditislaunchedbyTencentCompanyinJanuar2011.Itpysuortssuchfu打ctionsascrossi打gtelecomoeratorsandoerationsstemlatformsppppypbythewaofsendi打textsicturesaudiosandvideos.WeChatubliclatformyg,p,pprovidesitsuserswiththeabilityofmessageandcustomme打uinteractionthroughpopeninterfacemode.Atpresent,developingLightAppsbasedontheWeChatpubliclatformhasbecomea打ewdevelopment化end.Manygovemmentsenterrisesandp,pinstitutio打shaveoe打edWeChatublicaccountsdeveloednewWeChatalicationspp,ppptorovideinformationservicetotheublicanditscustomers.ppDuetoitscharacteristicsofmobilitortabilitandersonalizationandsoony,,pypWeChatservicehasbeenwarmlywelcomedbythemajorityofitsusers.Basedon^neitizensfunctionalreuirementstocarroutonlinesocialnetworkinactivitiestheqyg,a山:horhasresearchedanddevelopedtheWeChatpublici打teractionplatformwhichisbasedo打WeGhatublici打teractio打i泣tformdevelome打tframeworkcombi打edwithppp,thecharac化risticsofthesmartphoneteraii打aleuimentandthealicatio打ofqpppJ2EEHTMLXMLWebserviceOrcaledatabaseandotherrelatedkchnoloies.Ithas,,,,gachievedthefunctionsofuserregis化ation,publicationactivities,managementactivities,discoveryactivities,assessmentactivities,involvementactivities,membershmanaemena打duaacvesisaerusescasearamsan打owiptlittiiti.ThdidgqyppgchartstoanalzethefunctionalreuirementsofWeChatublicinteractionlatform.Ityqppgivesadetailedintroductionofthesystematicdesignofitfromtheaspectsof化eoverallsys化mdesign,化chnicalarchi化cture,functionaldesign,workflowdesign,iiUemalandexternali打化rfacedesinanddatabasedesin.Italsointroducessecificg,gptimleme打tationof化chnicalde化ilsofthess化maicdatabasesU)raeWeChatpyg,messaging,custommenuandsys化mcorebusinessfu打ctionsandsoon.Thedesig打oftheWeChatpublicinteractionplatformbasedonthisaerhastheadvantaesofppgsimleoerationeasexansio打offunctionsooduserexerienceandlow,pp,ypgpdevelopme打tcostThereforeithas化evalueofwidealicationandromotion.,pppKeyWords:WeChatPublicInteractionPlatform;SocialNetworking;MobilePhoneDevelomentpIII 微信公众互动平台的设计与实现目录学位论文原创性声明和学位论文版权使用授权书I摘要IIAbstractIll插图索引VII附表索引VIII第1章绪论11.1课题研究背景与意义11.2国内外研究现状113.3论文的研究内容1.4论文的结构安排4第2章关键技术52.1微信公众平台52丄1微信服务组成52丄2微信消息交互机制52.2微信公众平台接口62.2.1概述62.2.2文本消息627.2.3图片消息2.2.4地理位置消息82.3微信自定义菜单82.3.1自定义菜单类型82.3.2自定义菜单接曰102.4其它技术102.4.1J2EE1021.4.2MVC模式12.4.3XML122.4.4JSON132.4.5Webservice13214.5本章小结第3章微信公众互动平台需求分析153.1概述15IV 工程硕±学位论文3.2功能需求153.2.1用户注册153.2.2发布活动153.2.3管理活动163.2.4发现活动163.2.5参与活动183.2.6会员管理183.2.7审核活动183.2.8精品活动183.3其它需求183.3.1性能需求183.3.2安全性需求183.3.3可用性需求183.4本章小结19第4章微信公众互动平台的设计204.1总体设计204丄I设计思路204丄2总体设计204丄2总体架构204.2功能设计214.2.1用户注册224.2.2发布活动234.2.3管理活动234.2.4发现活动244.2.5参与活动254.2.6精品活动254.3接日设计264.3.1内部接口264.3.2外部接口264.4数据库设计264.4.1数据库设计原则264.4.2数据库需求分析274.4.3数据库概念设计274.4.4数据库逻辑设计274.5本章小结29V 微信公众互动平台的设计与实现第5章微信公众互动平台的实现305.1数据库相关功能实现305丄1H化emate实现对象存储305丄2数据库连接池335.2微信相关功能实现%5.2.1微信消息接收%5.2.1微信消息响应415.2.3微信消息处理445.2.4微信自定义菜单46、5.3核屯业务功能实现495.3.1会员注册495.3.2会员管理535.3355.发布活动5.3.4审核活动585.4系统测试巧5.4.1测试环境605.4.2测试内容615.4.3测试用例615.4.4测试结果625.5本章小结63结论与展望64参考文献66m70附录A攻读学位期间发表的学术论文71附录B攻读学位期间参与的科研课歴72VI 工程硕±学位论文插图索引图25.1消息的交互处理过程图3.1用例图15图3216.发布活动3图.3活动列表17图3.4活动弹情17图4.1平台技术架构图20图4.2总体架构图21图4.3功能设计图22图4.4用户注册设计图22图4....5发布活动设计图23图4.6管理活动设计图24图4.7发现活动设计图24图4.8参与活动设计图25图425.9精品活动设计图图4.10内部接口图26-R图图427.11数据库E图5.1出bernate架构图30图5.2Hibernate的运行流程31图5.3数据库连接池原理34图537.4微信接收消息类图5.5微信消息响应类41图5.6微信消息处理流程44图5.7会员注册处理流程50图5.8会员注册界面图50图5.9会员管理处理流程54图5.10会员管理界面图54图5.11发布活动处理流程55图5.12发布活动界面图55图559.13审核活动处理流程图5.14审核活动界面图巧vn 微信公众互动平台的设计与实现附表索引表2.1接口参数意义6表2.2文本消息参数意义7表2.3图片消息参数意义7表2.4地理位置消息参数意义8表4.1TUSER用户表设计28_表4.2TROLE角色表设计28_表4.3TUSERROLE用户角色表设计28__表4.4TACTIVITY活动表设计28_表4.5TACTIVITYUSER活动参与用户表设计29__表5.2测试用例表61表5.3测试结果62VIII 工程硕±学位论文第1章绪论1.1课题研究背景与意义一微信是腾讯公司于2011年1月推出的款为智能手机提供即时通信服务的免、费应用软件,微信支持跨通信运营商跨操作系统平台通过手机网络发送文字、图片、语音、视频,还提供了基于LBS的位置服务、语音对讲、消息广播、支付等功能。2013年8月,微信公众平台进行升级,将微信公众平台分成订阅号和服务号两种类型一。服务号是公众平台的种帐号类型,旨在为用户提供服务。巧一。阅号也是公众平台的种帐号类型,为用户提供信息和资讯同时,微信提供了公众平台开发接口与用户进行消息、自定义菜单等交互。当用户通过微信客户端发信息给公众账号,微信服务器通过POST方式将信息,提交给微信应用开发者在接曰配置信息中填写的服务器URL地址,应用服务器接收、处理和响应微信消身山〇〇,田、微信与传统的网络社交应用论坛(BBS)、博客(Blog)、SNS交友相比,具有W下特点:(1)用。微信是目前全球使用人数最多的移动通信工具户数量大,(拥有庞大的用户群体,微信全球用户总数己突破6亿个。2)用户体验好。微信功能设计简洁易用,不但可通过扫描二维码和添加微信号来添加和关注好友,(3)信息互动强还可W通过QQ、微博、手机通讯录等多种方式添加好友。。微信不仅支持文字、图片、语音、视频等类型信息,还可W支持名片、位置等类型。(。信息,实现多媒体互动模式4)开发成本低用户可W免费开发微信应用,而W且微信支持iOS、Android、Windowsphone等几大主流智能手机平台。目前。,基于微信公众平台开发轻应用成为新的发展趋势很多政府、企事业单位纷纷开设微信公众号,开发微信新应用为群众、客户提供信息化服务。截止""2016年2月,作者建立的六丈日子微信公众号已经有近50万粉丝。本文提出基于微信公众平台,开发微信公众互动平台,为网民开展网络社交、发布社交一活动信息、参与社交活动提供便捷的渠道,具有定的应用价值。1.2国内外研究现状互联网本质上就是计算机之间的联网。网络社交的起点是电子邮件,早期的-ma电子邮件(Eil)解决了远程的邮件传输的问题,成为互联网上最普及的应用,一同时它也是网络社交的起点。论坛(BBS)把网络社交推进了步,把点对点交流的成本降低,实现了点对面交流成本的降低。即时通信(IM)从用户之间实时--1 微信公众互动平台的设计与实现,发展为集成了信息交流发送和接收消息、娱乐、捜索、资讯、办公、客户服务等功能的综合平台。博客(Blog)是由个人管理、不定期发表新的文章的网站,它集合了文字、图像、其它网站的链接,W及其它与主题相关的媒体,读者可W互动的方式留下意见,,及时有效轻松地与他人进行交流实现了丰富多彩的个性W化的综合平台。目前,国外主要的网络社交应用及开放接口情况如下:一(1)Facebook。Facebook是美国排名第的照片分享站点,每天上载八百一五十万张照片。Facebook是个充满乐趣的社交网站,你可W在Facebook添加你的个人信息。在Facebook你可W结交朋友、玩游戏、送朋友礼物,创建虚巧的宠物或虚拟的花园等,,。早在2007年5月Facebook开放了自己的平台将Facebook拥有的海量社交用户档案和关系数据,通过开放自己的API(应用程序编程接口),将网站用户和关系数据开放给第H方开发者。利用这个框架,第H方软件开发者W可W开发与Facebook核也功能集成的应用程序。一(2)MySpace。MySpace为全球用户提供了个集交友、个人信息分享、即时通讯等多种功能于一Sace音乐盒里体的互动平台。在你自己的Myp,你可W添加收藏来自世界各地的音乐,你还可在音乐档案里添加有相同爱好的朋友。MySpace的视频很多都来自YouTube,你自己也可W添加喜欢的视频或下载其他人的影片。2008年,MySpace中国宣布正式启动开放平台计划,第H方开发者可W免费申请开发者权限,获得批准后可W查看开发人员社区上的资料,基于JavaScript的开放平台,开发人员可W在基于JavaScript的框架上进斤挂件(Widget)W开发。一一(3)Twitter。Twitter是个可让你传递短消息给你的朋友的个微型博客,一它也同样可允许你加其他Twitter用户为好友,这样你可W在个页面上就能读取一他们发布的信息tter通过API的方式些应用接口,如用户认证、获取。Twi开放WTw化er中部分数据等。目前,国内主要的网络社交应用及开放接口情况如下:一(1)新浪微博。新浪微博是款为大众提供娱乐休闲生活服务的信息分享和交流平台。用户可W通过网页、WAP页面、手机客户端、手机短信、彩信发布消息或上传图片。新浪微博开放微博、评论、用户、关系、账号、搜索等接口,覆盖了新浪微博的全部功能,,可W通过API发微博,传照片,加关注甚至搜索等全部功能W。一(2)陌陌。陌陌是款基于地理位置的移动社交产品。通过陌陌,您可W认识身边的人:。;加入附近的群组;查看附近的留言参加附近的活动还可W和朋W友交换各自的地理位置,用有趣的表情聊天等等。(3)来往。来往是阿里己己发布的移动好友互动平台,其核也功能是实现熟--2 工程硕±学位论文""人之间的社交、,还实现了。来往支持文本语音、视频等信息的交流阅后即焚P功能。来往开放了公共账号AI,如公众账号菜单获取、公众账号菜单创建、公众账号消息发送获取、多媒体文件上传、获取用户基本信息、获取关注者列表等阴〇一当前,网络社交成为个研巧热点。有研充网络社交的发展趋势,如:社交1IU网站的现状与发展趋势研究社交网络的特性及其发展趋势、SNS社交网络W发展现状及趋势。有研巧网络社交软件的设计与实现,如:高校校园社交网络WM系统的设计与实现、基于移动终端的社交系统的设计与实现、浅析中外社交W3BBS网络界面设计差异。有研究网络社交数据分析的,如;校园论坛情感数据W抓取与分析系统设计与实现基于用户聚类的异构社交网络推荐算法、基于UW结构相似度的大规模社交网络聚类算法。随着微信的功能不断升级W及微信接曰开放后,基于微信的研究及应用开发W日益丰富。有研究微信平台及协议,如:微信交互协议和加密模式研究、微信一"W统服务平台的构建研究。有研究微信公众平台应用开发技巧,如:微信公众平台应用开发实战微信公众平台搭建与开发解密微信公众平台开发最佳UW实践。有研究基于微信的应用系统开发,如;基于微信的中小企业CRM系统""设计与实现、基于微信公众平台的高校图书馆信息服务研巧基于微信的叫号点餐系统的设计与实现等。1.3论文的研究内容,基于微信公众互动平台开发框架针对网民开展网络社交活动的功能需求,结合智能手机终端设备的特点,应用J2EE、HTML开发、XML、Webservice开一发、化cale数据库等相关技术,研究开发了个微信公众互动平台。该微信公众互动平台实现了用户注册、发布活动、管理活动、发现活动、参与活动、会员管理:、审核活动、精品活动等功能。本文主要研究内容如下(1)研究了微信公众平台的微信服务组成、微信消息交互机制,微信公众平台接曰中的文本消息,、图片消息、地理位置消息等微信自定义菜单的类型、自定义菜单接口,实现了微信平台与后台数据库服务器的对接。(2)研究了使用Hiberna化实现对象存储,利用数据库连接池提升应用系统数据库性能等技术。(3)研巧r微信公众互动平台的需求分析、总体设计、总体架构、功设计、内外部接口设计、数据库设计等,并通过J2EE、微信公众账号接口开发等技术实现了系统设计的功能。--3 微信公众互动平台的设计与实现1.4论文的结构安排本文共分成六个章节:一第章绪论。本章主要介绍课题的研究背景,概述课题的研究意义,分析国。内外的研究现状,介绍了论文的主要研究内容第二章关键技术。本章对微信公众互动平台的开发技术集中进巧了研究,介绍了微信公众平台、微信公众平台接曰、微信自定义菜单,W及系统开发中用到的J2EE、MVC模式、XML、JSON、Web化rvice等技术。第三章微信公众互动平台需求分析。本章使用用例图、流程图等对微信公众互动平台的总体需求、具体功能需求进行分析,并分析了性能需求、安全性需求、可用性需求等其它需求。第四章微信公众互动平台的设计。本章从总体设计、、技术架构、功能设计工作流程设计、内外部接曰设计、数据库设计等方面,详细介绍了微信公众互动平台的设计。第五章微信公众互动平台的实现。本章从数据库存储、微信公众账号功能实、现系统主要功能的实现等方面,详细介绍了微信公众互动平台的具体实现技术细节。从测试方案的测试环境、测试内容、测试用例、测试结果等方面,介绍了系绕测试的情况。第六章结论与展望。对课题研究过程中的工作进行系统总结,并对今后的发展趋势进行了展望。-4- 工程硕±学位论文第2章关键技术2.1微j旨公众平台微信公众平台是腾讯公司专为个人、政府、媒体、企业等机构提供的服务平台,分成订阅号和服务号两种类型。通过该平台,个人、政府、媒体、企业可1^申请注册微信公众账号,发布文字、图片、语音、视频、图文消息等。订阅号为用户提供信息和资讯一一,每天可^^发送条群发消息。服务号个月内仅可^发送四条群发消息。2丄1微信服务组成微信服务包含核必服务和业务应用服务。核必服务提供微信帐号的申请、管理等基础性的服务内容。业务应用服务提供适应各个行业需求的扩展服务,如微官网、微会员、微活动等。2.1.2微信消息交互机制个人一、政府、媒体、企业等机构要提供微信服务,需要先申请个公众账号。普通用户通过手机上的微信应用向关注的微信公众帐号发信息,微信服务器通过POST方式将信息,提交给微信应用开发者在接口配置信息中填写的服务器URL地址,应用服务器接收、处理和响应微信消息。微信服务器通过接口调用与网站服务器之间通信,消息交互处理过程如图2.1所示。微信用户向微信公众号发信息,微信服务器将该信息转发给开发者配置的服务器地址。开发服务器接收到信息后,,先解析信息类型再根据业务流程进行处理,,把处理结果发送给微信服务器最后微信服务器将该信息转发到微信用户的手机徹信应用程序。发送请求转发请求"%1>y.1p^iI°|转細应纖献终端设备巧信服务器开发服务器图2.1消息的交互处理过程微信服务器在其中作为一个转发服务器上发起请求至微信服,微信应用终端--5 微信公众互动平台的设计与实现。务器,微信服务器将请求转发给开发者配置的应用服务器应用服务器处理完后,。回复给微信服务器,微信服务器再将处理结果发送给微信应用终端2.2微信公众平台接口2.2.1概述微信公众平台接曰是提供服务的基础,微信公众平台客户提交信息后,提交的Get请求将通过微信服务器发送到开发人员填写的URL上,并且带上了Get请求需要的四个参数:表2.1接口参数意义参数描述signature信息加密签名timestamp时间戳random随机数strecho回复字符串微信应用开发接入微信服务器,需要通过检验signature对请求进行校验。如,就原样发送strecho参数内容果通过检验GET请求是微信服务器发送的,接入生效。signature结合了微信应用开发者注册时的化ken参数和消息请求中的timestamp参数、nonce参数。微信应用接入微信服务器的加密、校验流程如下:(1)按照字典序,将化ke凸、random、timestamp进行排序。(2)使用shal加密算法,将化ken、random、timestampH个参数字符串拼一接成个字符串。(3)微信应用开发者将得到的密文与signature签名进行对比,验证该请求P71是否微信服务器发送的。2.2.2文本消息用户通过登录微信平台发送文本消息,系统平台在收到用户的消息之后,根据需要回复文本消息给用户,构造成XML格式的数据包,文本消息具体表达格式如代码所示。<xml><ToUserName><!CDATAtoUser></ToUserName>[[]]<FromUserName><![CDATA[fromUser]]></FromUserName><Crea化Time>l348831860</CreateTime><MsTe><![CDATA[te?rt]></MTe>gyp]巧yp-6- 工程硕±学位论文<Content><!CDATAthisisatest></Content>[[]]<]VUgId>1234%78901234%</M^Id></xml>表2.2文本消息参数意义参数描述ToUserName开发者微信号一FromUserName发送方帐号(个Open瓜)CreateTime满息创建时间(整型)M巧TetextypContent文本消息内容M巧Id消息id,64位整型2.2.3图片泊息图片消息的表现张力是非常强的,并可把多种元素附带其中,用构造而成XML格式的数据包接收图文消息,具体表达格式如代码所示。<xm>l<ToUserName><!CDATAtoUser]></ToUserName>[[]<FromUserName><![CDATA[fromUser]></FromUserName>]<CreateTime>1348831860</CreateTime><MTe><!CDATAimae></MsiTe>^yp[[g]]gyp<PicUrl><!CDATA化isisaurl></PicUrl>[[]<><>M^Id1234%78901234%/M^Id</xml>表2.3田片消患#巧意义参巧描述ToUserName开发者微信号F一romUserName发送方帐号(个OpenID)CreateTime消息创建时间(整型)MsgTypeimagePicUrl图片链接Msgid消息id,64位整型--7 微信公众互动平台的设计与实现2.2.4地理位置消息用户要把自己所处的地理位置发送给系统,XML格式的地理位置消息的表达格式如代码所示。<xm>l<ToUserName><![CDATAtoUser></ToUserName>[]]<FromUserName><!CDATAomUser></FromUsierName>[的]]<Crea化e〉1351776360</Creaime>TimteT<MTe><!CDATAocation〉</MTe>口^yp["巧yp<LocationX>23.134521</LocationX>__<LocationY>l13.358803</TocationY>__<Scale>20</Scale><Label><!CDATA位置信息><化abel>[[U<MsgId>1234567890123456</MsId>g</xml>表2.4地理位置消息参数意义?^F一romUserName发送方帐号(个OpenID)CreateTime消息创建时间(整型)MsTelocationgypLocationX地理位置维度_LocationY地理位置精度_Scale地图缩放大小Label地理位置信息Msgid消息id,64位整型2.3微信自定义菜单微信公众平台的服务号、巧阅号都具有自定义菜单的功能。程序员可利用自定义菜单功能,给微信公众账号操作页面増加自定义菜单。用户在微信公众账号自定义菜单中点击选项,可W调用相应的菜单功能或进入配置好的网页地址。2.3.1自定义菜单类型<开发者获得使用凭证后,可^^1对自己的微信公众账号进行自定义菜单的创建、查询和删除等操作。自定义菜单接口包含W下类型按钮:-8- 工程硕±学位论文(1)click(点击推事件):用户点击微信公众账号自定义菜单中的click类型按钮,微信服务器会推送event类型消息给开发者,消息中包含应用开发者预先定义的k巧值,应用开发者可W通过自定义的key值与用户进行交互。(2)view(跳转URL):用户点击view类型按钮后,微信客户端将会打开应用开发者预先定义的网页URL,应用开发者可W通过网页授权获取用户基本信息。(3)scancodeush(扫码推事件):用户点击微信公众账号自定义菜单中_pcancodeu一的ssh按钮,微信客户端将调用扫扫工具,完成扫码操作后显示扫_p描结果(如果是URL,将进入URL),且会将扫码的结果传给开发者,开发者可W下发消息。""(4)scancodewaitm(扫码推事件且弹出消息接收中提示框):用户_巧点击微信公众账号自定义菜单中的scancodewaitms按钮,微信客户端将调用扫_g一扫工具一,完成扫码操作后,将扫码的结果传给开发者,同时收起扫扫工具,""然后弹出消息接收中提示框,随后可能会收到开发者下发的消息。(5)picsysphoto(弹出系统拍照发图):用户点击按钮后,微信客户端将_调起系统相机,完成拍照操作后,会将拍摄的相片发送给开发者,并推送事件给开发者,同时收起系统相机,随后可能会收到开发者下发的消息。(6)pichoWora化um(弹出拍照或者相册发图):用户点击微信公众账_p__号自定义菜单中的pichotooraAum按钮,微信客户端将弹出选择器供用户选_p__""""择拍照或者从手机相册选择。用户选择后即走其他两种流程。(7)picweixin(弹出微信相册发图器):用户点击微信公众账号自定义菜_单中的picweixin按钮,微信客户端将调起微信相册,完成选择操作后,将选择_的相片发送给开发者的服务器,并推送事件给开发者,同时收起相册,随后可能会收到开发者下发的消息。(8)Iocationselect(弹出地理位置选择器):用户点击微信公众账号自定_义菜单中的l〇cationselect按钮,微信客户端将调起地理位置选择工具,完成选_择操作后,将选择的地理位置发送给开发者的服务器,同时收起位置选择工具,随后可能会收到开发者下发的消息。(9)mediajd(下发消息,除文本消息):用户点击微信公众账号自定义菜meda单中的ijd类型按钮,微信服务器会将开发者填写的永久素材id对应的素材下发给用户:永,永久素材类型可W是图片、音频、视频、图文消息。请注意""久素材id必须是在素材管理/新増永久素材接口上传后获得的合法id。(10)viewlimited(跳转图文消息URL):用户点击微信公众账号自定义_菜单中的viewlimited类型按钮后,微信客户端将打开开发者在按钮中填写的永_久素材id对应的图文消息URL:,永久素材类型只支持图文消息。请注意永久-9- 微信公众互动平台的设计与实现""PU素材id必须是在素材管理/新增永久素材接口上传后获得的合法id。2.3.2自定义菜单接口一一(1),自定义菜单创建接曰:自定义菜单最多包括3个级菜单每个级菜单一4最多包含5个二级菜单。级菜单最多个汉字,二级菜单最多7个汉字。请求方ex乂omc-reae?access=式:htts://ai.wiin./gbin/menu/cttokenACCESSTOKEN。ppqqi——(2)自定义菜单创建接口:使用接口创建自定义菜单后,开发者还可使用接口查询自定义菜单的结构。在设置了个性化菜单后,使用本自定义菜单查询接口可获取默认菜单和全部个性化菜单信息。htp请求方式:https://api.weixin.qq.-=ACCESScom/cibin/menu/get?accesstokenTOKENg__(3)自定义菜单删除接口:使用接口创建自定义菜单后,开发者还可使用接口删除当前使用的自定义菜单。在个性化菜单时,调用此接口会删除默认菜单及-.全部个性化菜单。http请求方式:hts://api.weixin.com/巧ibin/menu/delete?pqq=accesst;okenACCESSTOKEN—_2.4其它技术2.4.1J2EEva2一J2EE(JaPlatformEn化rriseEdition)是个为企业复杂应用环境设计的,pJava平台。J2EE创造了标准的可重用模块组件W及由于构建出能自动处理编程中多方面问题的等级结构,简化了应用程序的开发。J2EE提供了安全,事务管理,28【】JNDIJavaNaminand0如〇1;〇Interface)寻址远程连接等服务。(g巧,J2EE平台包含服务(Services)、应用程序接口(APIs)和协议,提供了相E一些常用的技术规范的简单描关功能支持开发基于Web的多层应用。J2E中的述如下:1、JDBCJavaDatabaseConnectivit:化6〔API为访问不同数据库提供了统(y)一一的接曰,JD,屏蔽了些细节问题。另外BC对数据库的访问也具有平台无关性。2、JNDI(JavaNameandDirectoryInterface);JNDIAPI被用于执行名字和目一NSLDAP录服务,。它提供了致的模型来存取和操作企业级的资源D和本地文件系统,或应用服务器中的对象。一3、E化巧n化巧riseJavaBean);EJB提供了个框架来开发和实施分布式商务逻辑,简化了具有可伸缩性和高度复杂的企业级应用程序的开发。EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用,。容器负责提供公用的服务例如目录服务,事务管理,资源缓冲池,安全性,容错性。4、RMI(RemoteMethodlnvoke):远程方法请求,艮MI是EJB使用的更底层--10 工程硕±学位论文的协议。在客户端和服务器之间采用序列化的方式传递数据,RMI协议实现了调用远程对象上的方法。一5、JavaIDL/CORBA通用对象请求代理架构是软件构建的个标准):通过(Java一使用IDL,应用开发人员可W将Java和CORBA集成在起。开发者创建Java对象并使之可在CORBA—ORB中展开,他们还可创建Java类并和其它ORB一起展开的CORBA对象客户。通过后种方法,可W将你的新的应用程序和旧的一系统集合在起。6、JSP:JSP页面由HTML代码和嵌入其中的Java代码组成。JSP页面被客户端所请求W后,服务器将JSP页面编译成java代码进行处理,然后将生成的HTML页面返回给客户端浏览器。web服一7、JavaServlet:Servlet是务器端运行的种小型Java程序。Servlet,提供和JSP的类似功能。JSP页面包含大量的HTML代码使用不同的实现方式,只有少量的Java代码,而servlet是完全用ava编写完成某些业务功能的。j8一、JMS:JMS是种与面向对象消息中间件进行通信的应用程序接口。JMS支持发布/巧阅类型^及点对点类型的域。JMS提供了消息传递、事务型消息的传{一递、致性消息和具有持久性的订阅者等类型的支持。JMS使用通信,实现了对一旧后台系统与新系统相互集成另种方式。9一、JTA:JTA定义了种标准API,应用程序由此可访问各种事务监控。10、JTS:JTS实现了CORBAOTS事务监控的基本功能。JTS规定了事务管理的实现方法。JTS向上层支持avaTransactionAPI规范,向下层实现Java印、j象OMGOTSspecification。JTS为应用程序服务器、资源管理器等提供基本的事务服务。11、JavaMail:JavaMail定义了邮件服务器收发邮件的开发接口,它提供了实现邮件服务器相关协议的类,同时支持SMTP、IMAP两种服务器。12、JAFJavaBeansActivationFramework:JAF是JavaMail处理MIME编码()的邮件附件时使用的构件。通常大多数应用程序不直接使用JAF,因为MIME的字节流可W被直接转换成ava对象。j2.4.2MVC模式MVC全名是Mode——lViewController,是模型(model)视图(view控制器)一(controller)的缩写。MVC是种软件设计模式,它采用业务逻辑、数据、界面显一示分离的方法组织代码,使用个部件实现业务逻辑,当界面进行修改、用户交互进行改进时,业务逻辑不需要重新编写。通过发展,MVC用于映射传统的输入、一wti处理和输出功能在个逻辑的图形化用户界面的结构中。--11 微信公众互动平台的设计与实现视图view:视图是用户看到并与之交互的界面。视图包含由HTML元素组()HTMLML一些标识语言成的界面,也包括由AdobeFlash、X,XML/XSL,W等定义的界面。模型、model;模型表示企业数据和业务规则,用来处理最核屯的任务。例如()它可能用Hibernate、比atis、EJB这样的对象处理数据库。模型处理数据后返回的一信息与数据格式无关,多个视图可W使用个模型提供的数据。这样模型的代码编写一次,就可W被多个视图重用,所W减少了大量的工作量。控制器(controller:控制器接受用户的输入并调用模型和视图去完成用户的)需求。用户单击Web页面中的超链接和提交HTML请求表单时,控制器接收用户请求,通过分析,决定将请求分配给合适的模型构件去处理,然后再决定返回的数据由合适的视图来显示。2.4.3XMLXML即可扩展标记语言一,是标准通用标记语言的子集,是种用于标记电子文档使其具有结构性的标记语言一种允许用户定义他们的标记语言的源语。它是言一,可W被用来标记数据。它提供统的描述方法,独立于应用程序的结构化数据的交换,非常适合于万维网传输,任。XML语言的简单易用何应用程序可W中用XML语言来读写数据,XML语言迅速成为通用的数据交换的语言。虽然Windows、MacOS、LinuxW及其它平台的很多应用软件也支持不同的数据交换格式,但不久之后它们都开始支持XML语言。这样,使用XML语言的程序可W更容易的与其它操作系统平台下所产生的信息进行交互,应用程序可W很容易加载U"XML数据使用,并将运行结果转换为XML格式。XML由3个部分构成,它们分别是cumenTeet,:文档类型定义(DotypDfiniionDTD),即XML的布局语言;可扩展的样式语言(ExtensibleStyleLanguage,X化),L的样式表(ExtensL,即XM语言;W及可扩展链接语言ibleLinkangimgeXLL)。1、DTD:DTD即文档类型定义,定义了文档的逻辑结构。它定义了文档的语法,让XML语法分析程序检查文档标记使用的合法性。DTD定义了文档的元素一一、元素的属性、元素和属性间的关系。文档的每个元素都有个用名字标识一的类型一,还可W有个属性说明集。每个属性说明包含个名字和值。元素与元素间用起始标记和结束标记来分隔一。使用个空元素标记来分隔空元素。DTD定义了与应用程序相关的文档数据结构,而不是如何显示数据的格式。例如DTD一一个元素定义为个标题行,如何显示标题斤是样式表和脚本定义来实现把。DTD不是强制实施的,开发简单的应用程序,可W使用其它组织预先定义的公共DTD,,不需要建立自己的DTD。例如某个文档己经有DTD如果文档组织--12 工程硕±学位论文J,可l结构合理,应用程序的语法分析程序y不用对照文档己经有的DTD检验文档的合法性。应用服务器可W对文档预先进行检查,这样客户端可W大幅度节省检验的带宽、时间。2、XSL:XSL是定义XML文档样式的语言。XSL能使Web浏览器不用与服务器进行交互通信,而是根据文档样式,改变原有文档的表示法。通过样式表的变换一,同文档可W显示出更多的格式。XSL的可扩展性,使它能够控制无限的标记,给Web网页提供了复杂的布局方式一页上混合。如旋转文本、单列与多列区域。XSL支持国际书写格式,可在使用从左至右、从右至左及从上至下的书写格式。3、XIX:XLL可扩展链接语言,不仅支持Web上简单链接,而且包括间接链接、从查询服务器中获得的某个元素的相关部分链接等。2.4.4JSONbeca一JSOJavaScriptOtNottion)是种轻量级的数据交换格式。它基于Wj—e一JavaScript(StandardECMAJ623rdEditionDecembr1999)的个子集。JSON采一用了完全独立于语言的文本格式,使得JSON成为种良好的数据交换语言。它不但易于人工阅读与编写,同时也易于电脑解析和生成。JSON将JavaScript对象一中表示的一应用程序的不同的函数之间组数据用字符串保存,在同、或者在客户端应用程序与服务器端应用程序之间传递这个字符串所保存的JavaScript对象。W因为JSON字符串使用的结构简单,JavaScript可W很快速的解析JSON字符串。JSON使用对象和数组这两种结构,通过这两种结构可W表示各种复杂的结构。""1、对象:对象在JSON中表示为0括起来的内容,数据格式为{关键字:值...的键值对的结构。在面向对象的语言中.ke,使用对象获取对象的属性值,,}y属性值包含数字、字符串、数姐、对象几种。"""’2、数组:数组在JSON表示为括起来的内容,数据格式为[对象IV[]"""对象23...,。属性值包含数字、字符串、数组、对象,使用索引获取数组中的值,]对象几种。2.4.5Web化rvice一webrvWebseice是个平台独立的、自包含的、低锅合的、基于可编程的的应用程序,可使用开放的XML标准来描述、发布、发现、协调和配置这些web应用程序,用于开发分布式的互操作的应用软件。WebService技术使得运行在不同设备上的不同应用程序,便捷的进行数据交换。按照WebService规范开发的不同应用程序,不管使用化么开发语言、操作eb一系统、私有协议,都可W相互交换数据。WService使用些通用的行业规范、--13 微信公众互动平台的设计与实现成熟的技术XML、HTTP等,所W很容易部暑。WebService减少了开发不同应用程序之间的接口费用一,为多个企业、组织之间的业务流程的集成提供了个通U21用机制。WebService平台使用SOAP、WSDL、UDDI等协议来实现分布式应用程序的开发。不同的平台都有不同的数据表示方法和类型等。WebService平台提供了一、套标准的类型系统,用于实现不同操作系统平台不同编程语言、不同组件模型中的信息交互。这些协议有:一1、SOAP:SOAP巧impleObectAccessProtoco是种基于XML用于交换jl。SOJlSMTP编码信息的轻量级协议AP可t所有的传输协议上运行,如可W使用协议来传输SOAP消息。不同传输层协议的格式是不同的,但封装的有效数据是一-样的。2一、WSDL:WSDL即Web服务描述语言,它提供的个基于XML的语言来定义Web服务及其函数、参数和返回值。WSDL是基于XML,所W它是可W被电脑自动解析。3一、UDDI!UDDI是套实现标准规范,它是分布式的为Web服务提供的一、组访问协议的实现标准信息注册中屯的标准,还包含,让别的企业能够发现的自身提供的Web服务。2.5本章小结本章首先介绍了微信公众平台的微信服务组成、微信消息交互机制,然后介绍了微信公众平台接口中的文本消息、图片消息、地理位置消息等,接着介绍了微信自定义菜单的类型、自定义菜单接曰,最后介绍了系统开发中用到的J2EE、MVC模式、XML、JSON、Webservice等技术。--14 工程硕±学位论文第3章微信公众互动平台需求分析3.1概述微信公众互动平台的目标是基于微信提供一个网民社交活动平台,实现注册用户发布社交活动、参与社交活动、管理社交活动、活动交流等功能。微信公众互动平台的总体需求如图3.1用例图所示,系统中有普通用户和系统管理员两种角色用户。普通用户可W进行用户注册、发布活动、管理活动、发现活动、参与活动等,系统管理员可W进行会员管理、审核活动、推荐精品活动等。微信公众互动平台、<uses?^^?uses^\发布活动/)^ ̄ ̄<<u>>^ses\Q^<uses>^^人/\戸系统管巧员\普通用户、品活动\参与活动^图3.1用例困3.2功能需求3.2.1用户注册""""""""用户注册要填写用户名称、用户性别、用户密码、手机号码、""""""办公电话、邮箱、兴趣爱好等信息,手机号码也要通过发送验证码进行验证。3.2.2发布活动"""""LJ注册用户可:l发布社交活动,要填写活动名称、活动介绍、活动"""""""""时间、活动地点、办公电话、活动类型、活动图片等信息。--15 微信公众互动平台的设计与实现用户发布活动时,,系统自动判断是否包含违规内容如包含则禁止提交。对己提交的活动,系统后台可W人工进行审核,审核通过后才可W在公众平台上显示。从主页上点击发布活动直接进入活动发布页面。纔入活巧龙題瑰巧箭強鍵说BS巧廣、靖席、擊粹防,允许互动吧推荐更多高汲功能>^'第懸f>。?,詢田?巧違谭辨k图3.2发布活动3.2.3管理活动管理自己发布的活动。在活动列表中可显示所有自己发布的活动,按时间逆序排列。在活动详情中对于未结束的活动可W编辑。(1)活动列表:湿示所有自己发布的活动,按时间逆序排列。(2)活动详情:对于未结束的活动可编辑。3.2.4发现活动注册用户可W浏览近期的活动,也可W按照活动时间、活动地点、活动类型等条件进行活动检索,查看活动详情并报名参与相关活动。同时,系统可レッ根据用户所在的地理位置,W及用户的爱好向用户推荐活动。(1)活动列表显示所有自己发布的活动,按时间逆序排列。--16 工程硕壬学位论文'.:;?:3繫:S;—I期.-——全却巧",全巧巧里全巧巧旺I*!._5巧資张於""3巧巧巧Bkies20巧满巧巧妖嫂巧..輯鹽巧1玄色索堀繩媒义4禪货10带旬泌聲4*?20?巧n資巧光巧乐化巧巧1S全鹽巡演长沒站烫窗巧I蔭'39野忡泳.巧瞥潍》1術;;;臟Ife琴4月4因【巧巧王】十巧周年巡巧化沙站簿蠻骄MBKHmmI?;3文史醒?这滯増3截;坛净:巧图3.3活动列表(2)活动详情一用户点击条活动信息,可W在新的界面显示活动的详细信息。4月""11曰反光^资乐队幻《宾2015全国巡演长沙站严…。。_23。。^^01.*<2一*供化與茲1:^少链ei段:镑麻0JS为愣1^6^巧振牵OUSE.%1B46LIVENOUSE?zl^S‘;东'谦乐苗診f1‘苗活动照片(0)活巧介绍巧间:2015年4冯11B觸六晚t吃点:4M1VEHOUSE巧价:100悚话/120现巧株J巧巧化:bup_;//Ugm:Jg谷te致私C巧ro/Jtgnxh=i0Q.gtim?写树T仪.aEecMP&过4390日315J弓3—"20反光.巧乐目人巧巧15全戲巡巧奶輯新賊藉巧"".|編―!图3.4活动详情--17 微信公众互动平台的设计与实现(3)推荐活动。根据用户所在的地理位置,W及用户的爱好向用户推荐活动3.2.5参与活动可W报名参与己经发布的活动,也可W显示所有我所参与的活动,用户可W将参与活动后的感受、照片等信息上传,与其它用户交流共享。3.2.6会员管理系统管理员对申请注册会员进行审核,每个会员设置积分和等级。会员每次开展活动得分计入积分,参与活动和每天签到得分计入积分,根据积分多少设置等级。3..27审核活动系统管理员对申请发布活动进行审核,审核通过的活动才能发布,注册会员才能报名参与该活动。3.2.8精品活动后台管理员可对某些活动设为精品推荐给用户。3.3其它需求3.3.1性能需求一般响应时间不超过2秒客户端,支持1000名用户并发使用,并保证性能不受影响。3.3.2安全性需求(1)权限控制:微信公众互动平台应用系统可W对不同的用户角色,设置不同权限。用户在系统中的重要操作都在微信公众互动平台的系统日志中记录W备查看,没有权限的用户禁止登录使用微信公众互动平台。一(2)重要数据加密:微信公众互动平台中所有重要数据都按定的算法进行加密,如微信公众互动平台中的用户口令、系统参数等。(3)数据备份:微信公众互动平台中的管理员可W完成数据的备份、恢复操。作,W防止数据被破坏或丢失(4)记录日志:微信公众互动平台运巧时所发生网络错误、本机运行错误等。都能够记录下来管理员通过查看这些记录日志,方便查找系统错误原因,用户在微信公众互动平台中的关键操作信息都要记录在日志中。3.3.3可用性需求--18 工程硕±学位论文(1)易用性:微信公众互动平台的用户界面友好,操作方便,操作流程合理。尽量从用户角度出发,设计操作界面。(2)信息核验:微信公众互动平台对数据录入的必填项目进行检验,检查数据的合法性,能够确保录入微信公众互动平台的信息正确无误。一(3)容错能力:微信公众互动平台设计时要有定的冗余机制,如双机热备一等,在出现些非致命的硬件、网络故障时,微信公众互动平台能够正常运行,确保用户有效完成操作任务。3.4本章小结本章首先使用用例图介绍了微信公众互动平台的总体需求,然后重点对用户注册、发布活动、管理活动、发现活动、参与活动、会员管理、审核活动、精品活动等具体功能需求进行分析,最后介绍了性能需求、安全性需求、可用性需求等其它需求。--19 微信公众互动平台的设计与实现第4章微信公众互动平台的设计4.1总体设计4丄1设计思路。根据微信公众互动平台的实际需求,提出了W下总体设计思路(B/S结合模式,1)平台采用多层分布式体系结构,使用手机微信客户端和、J2EE便于系统的维护升级。为支持高性能高可靠性W及高安全性,采用架构及0民ACLE数据库。(2)系统操作简单便捷,有利于吸引用户注册使用。用户在操作过程中,有向导式的操作提醒、完整性进行检验。,并自动对数据的准确性(3)系统运行安全方面,服务端采用防火墙、入侵检测等网络安全设备进行。防护,并对服务器采用集群、数据自动备份等方案确保系统运行安全稳定4丄2总体设计(微信公众互动平台的总体架构如下图所示,分为前台用户层后台用户层)、中间层、应用层。普通用户使用微信客户端访问微信公众账号,相关请求通过中。间层的微信服务器,转发给应用层的微信公众互动平台微信公众互动平台后台。处理好相关请求后,响应信息通过中间层的微信服务器,转发给微信客户端后台管理员直接通过浏览器与应用层的微信公众互动平台进行信息交互。前台用户层中间层应用层后台用户层II||IIIII1IIIIIIIIIIIJII发请求转发请求?Iii每:贷二转发响应发送响应I!1!普通用户I谢样服义巧微信公众后台管理员巧悟化秀巧互动平台j馈信客户巧I1电巧规览器!I{tIIIIIIIIIII14图.1平台技术架构图4.1.3总体架构、微信公众互动平台总体架构如图4.2所示应用,是由基础设施层、数据层支撑层、应用层、展示层等多层构建的综合平台,系统安全保障体系和标准及规-20- 工程硕±学化论文范体系贯穿于各个层面中。惦不层教組镇絲摩、W谢如台蒋理活动活动活动活动管理活动I化1II!..安^——r— ̄-.….…‘TJIIr?-一W统I应用缔权内巧单点I:作流通用防支撑层户巧巧解巧巧传却进录引帶报表御心孚八1iViII]罕i^数据层*I?',三;电的f基础网络妓IT资产系统软件R设施层基础设施III图4.2总体架构图(1)基础设施层包括网络、存储、系统软件、主机等网络硬件支撑平台。(2)数据层一、立数据业务模型,遵循统W微信公众互动平台数据库为核屯,建的数据库编码规范和标准,便于实现数据共享。(3)应用支撑层提供了工作流引擎、报表引擎、消息引擎、数据访问、内容管理、目录服务、单点登录等基础功能组件。(4)应用层提供用户注册、发布活动、管理活动、发现活动、参与活动、会员管理、审核活动、推荐精品活动等功能。(5)展示层包括了微信公众互动平台的微信自定义菜单、WEB后台管理。4.2功能设计微信公众互动平台的功能设计如图4.3所示,分为前台用户侧功能模块和后--21 微信公众互动平台的设计与实现台管理功能模块。前台用户侧功能模块包含用户注册、发布活动、管理活动、发现活动、参与活动等功能,后台管理功能模块包含会员管理、审核活动、推荐精品活动等功能。微惜公众I吃动f台I11'—.‘前台用户侧后台管理II功能模块功能模块II...1K,,推用发管发参会审荐户布理现与员核精注活活活活管活品册动动动动理动活动图4.3功能设计图4.2.1用户注册用户注册流程如图4.4所示,需要用户、系统、管理员S方配合,用户提交注册信息后,系统保存用户信息。管理员审核用户信息,如果审棱通过,则修改用户状态,用户注册成功,如果审核未通过,则提示用户注册失败。mm管理员IIIIT知请注册)占交注册信思〔)食待审咬(保存吉户信息、I审4^舍户信息()注功(^f修改用户状态^巧过I]?提示用户注册失败)图4.4用户注册设计图-22- 工程硕±学位论文4.2.2发布活动4.5所示、、发布活动流程如图,需要用户系统管理员H方配合,用户提交。活动信息后,系统保存活动信息管理员审核活动信息,如果审核通过,则修改活动状态,,发布活动成功如果审核未通过,则提示发布活动失败。Mm管理员^ii交巧动值適(\子>^宁审核动搞息读击為成功修改巧动状态来碰过規沪披品苗幼失^45图.发布活动设计图4.2.3管理活动4.6所示、管理活动流程如图,需要用户系统、管理员H方配合,用户先选择活动,修改活动信息后,系统保存活动信息。管理员审核活动信息,如果审核,。通过,则修改活动状态发布活动成功,如果审核未通过,则提示发布活动失败--23 微信公众互动平台的设计与实现—攝瞥賴员IIII丄选棘巧巧巧活巧^(綠改滿魂渣嫁)、輸W审核巧动情為.it巧迸\^k布活动成巧—■ ̄^—i#巧巧动巧态<<(()>亲迎过^参品占品扫强蝴-衣句非图4.6管理活动设计图4.2.4发现活动、、发现活动流程如图4.7所示,注册用户可W按照活动时间活动地点活动类型等条件进行活动检索,系统将满足查询条件的活动信息返回给用户。系统\|/选巧否^《件〔)^交造^信息^i图4.7发现活动设计图-24- 工程硕±学位论文4.2.5参与活动参与活动流程如图4.8、所示,注册用户可按照活动时间活动地点、活动类型等条件进巧活动检索,选择要报名参与的活动,系統保存用户参与活动的信息,并提示用户参与活动成功。\b选择活动()^报名参与活动)i4图.8参与活动设计图4.2.6精品活动精品活动流程如图4.9所示,,系统管理员先选择活动将其中部分活动设为。精品活动,并推荐给用户管理员m?nI/选择活动()W〔设g铸品活动)今保存活动信息査品品活动(^))图4.9棟品活动设计图-25- 微信公众互动平台的设计与实现4.3接口设计4.3.1内部接口JJA内部接口主要是展示层、业务层、数据层之间的接口,包含SP网页调用VAEJB封装好的实现业务功能的接口,JAVAEJB调用数据库提供的JDBC数据库接口等。展示层I业务层i巧据层III1I?>IIIIIIIIII调用务类调^JDBC11接数据接口P阵SP?JAVAEJB—?J网页数据库{1IIIIII*1"IIIIIIIIIIIIIIIt410图.内部接口图4.3.2外部接口外部接口主要是与微信公众平台之间的接口。微信公众平台和本应用系统之间通过接口调用来通信。当用户向公众帐号发消息时,微信服务器将消息通过POST方式提交给U民L开发者事先在接曰配置信息中填写的URL,开发者需要在URL所指向的请求处理类中接收消息、处理消息和响应消息。4.4数据库设计4.4.1数据库设计原则目前应用系统开发中,使用最多的数据库类型是关系型数据库。实际上数据一库的设计就是将系统使用到的数据进斤合理的组织。在数据库设计中,个数据库的优劣取决于关系模型的构建。在设计数据库时,要想办法提高数据库的可扩展性,减少冗余的数据。数据库中的所有表按照关系数据库设计的范式,进行标准化后性能会有提升,但是在实际使用过程中,经常要查询数据库中关联的多个表,这样会使数据库的效率降低。在数据库的设计过程中,要根据数据库的实际。使用情况,适当采用冗余数据,兼顾数据库的性能和效率-26- 工程硕±学位论文4.4.2数据库需求分析根据微信公众互动平台的业务需求,本系统的主要数据库实例有:(1)用户基本信息:用户ID、用户名称、用户类型、用户性别、用户密码、邮箱、手机号码、办公电话、用户状态、用户积分、登陆状态、用户登录数、登陆时间。(2)角色基本信息:角色ID、角色类型、角色名称、角色权限。(3)用户角色基本信息:编号、角色编号、用户编号。(4):活动活动基本信息ID、活动名称、活动类型、活动简介、活动内容、活动时间、活动地点、活动图片、活动状态、活动级别、活动感兴趣用户、活动报名用户、发起活动的用户。(5)活动参与用户基本信息:ID、活动ID、参与用户ID、活动评价、活动图片。4.4.3数据库概念设计微信公众互动平台的逻辑设计如图-R图所11数据库E示,包括用户实体,角色实体,用户角色实体,。,活动实体活动参与用户实体各个表实体和属性的关系也如图所示。用户表活动表用户角色表PkIDmI.PKIfiiJD?6主I知—活动参与用户表,r——化祖^用户名称PKiD禍名称I|—— ̄ ̄r肖巧^—二活动类型:斗 ̄PKMm用户性别活动mmID ̄用尸II叫flP綱参辅巧D活动内容角色类型《帛制)賴活动时间靴那制活动地点)目A*能娜办公电话活动图片I用户状态活动状态用户巧分活动级别登陆状态活动感兴巧用户用户登录数活动报名用户登陆时间发起活动的用户4-图.11数据库ER图4.4.4数据库逻辑设计根据微信公众互动平台的业务需求,数据库设计主要有用户表、角色表、用户角色表、活动表、活动参与用户表等,具体数据库表字段设计如下。-27- 微信公众互动平台的设计与实现表4.1TUSER用户表设计_字段名称字段类型长度备注TDJJSERJDNUMBER22用户瓜TDUWRNAMEVARCHAR2200用户名称__TDUSERTYPEVARCHAR210用户类型__TDUSERSEXVARCHAR2100用户性别__TDUSERPWDVARCHAR240用户密码__TDUSEREMAILVARCHA民2100邮箱__TDUSERPHONEVARCHAR2100手机号码__TDUSERTELEVARCHA艮2100办公电话__TDUWRSTATEVARCHAR210用户状态__TDUSERLEVERNUMBER20用户积分__TDUSERLOGINNUMBER20登陆状态__TDUSERLOGINCOUNTNUMBER22用户登录数___TDUSERLOGINTIMEDATE100登陆时间___表4.2TROLE角色表设计_字段名称字段类型长度备注TDROLEJDVARCHAR222角色ID_TDROLETYPEVARCHAR2200角色类型__TDROLENAMEVARCHAR210角色名称__TDROLEPOWERVA民CHA民2100巧色权限__表4.3TU化民ROLE用户角色表设计__字段名称字段类型长度备注IDNUMBER50编号TDROLEDVARCHA民250角色编号__JTDUSERIDNUMBER22用户编号__表4.4TACTIVITY活动表设计_字段名称字段类型长度备注TDACTIVITYJDNUMBER22活动ID_TDACTIVITYNAMEVARCHAR2200活动名称__-28- 工程硕±学位论文续表:字段名称字段类型长度备注TDACTIVITYTYPEVA民CHAR250活动类型__TD_ACTIVITY_MEMOVARCHA民2500活动简介TDACTIVITYCONTENTVARCHAR2500活动内容__TDACTIVITYTIMEDATE100活动时间__TDACT1VITYADDRESSVARCHAR2500活动地点__TDACTIVITYPICBLOB500活动图片__TDACTIVITYSTATEVARCHA民210活动状态__TDACTIVITYLEVERVARCHAR210活动级别__TDACTIVITY_INTERESTNUMBER22活动感兴趣用户_TDACTIVITYCOUNTNUMBER22活动报名用户__TDACTIVITYUSERVA民CHAR2100发起活动的用户__表4.5TACTIVITYUSER活动参与巧户表设计__字段名称字段类型长度备注IDNUMBER22IDTDACTIVITYIDNUMBER22活动瓜__TDUSERIDNUMBER22参与用户ID——TDACTIVUYCOMMENTVARCHAR250活动评价__TDACTIVITYPICBLOB500活动图片__4.5本章小结本章首先介绍了微信公众互动平台的设计思路、总体设计、总体架构,然后重点对功能设计中的用户注册、发布活动、管理活动、发现活动、参与活动、精品活动等功能流程进行设计,接着介绍了平台的内部接口、外部接口设计,最后从数据库设计原则、需求分析、逻辑设计、物理设计H个方面介绍了平台的数据库设计。-29- 微信公众互动平台的设计与实现第5章微信公众互动平台的实现5.1数据库相关功能实现5.1.1H化ernate实现对象存储一mbernate是个开放源代码的对象关系映射框架,它使用了轻量级的对象封装了JDBC接口。这样,Java应用开发者可W使用面向对象编程的思维对数据库进行操作JDBC的应,不仅Java的客户端程序可W使用。在任何使用用程序中出berna化,在Servlet/JSP的网页应用程序中也可W使用出bernate。在使用J2EE架构中的E化,可W使用mberna化代替CMP,实现数据持久化功能。一比berna、te的架构如图5.1所示,核屯类和接口共有六个,分别为:Session、SessionFact;ory、Transaction、Query、Criteria和Configuration。在开发应用程序时都会用到这六个核也类和接曰。程序员通过这些接口,既可W存取数据库持久化对象,还可W完成数据库事务操作。揉usin齡吊I部er1UfecC??…C從鸿言能邸:W!Va&teab心-ieH^不品而|?].tw膽Lay知在、…州品品I1!^知巧Trs讯紛ctiQ。cry的CmtfsonluoiI|g||1^IJNDlJDrJCJTAj!j■wnwn…"""nmi,,i"川"ir"wjatagwagsrinTIW在|—一—一 ̄——一■一一一图5.1H化erna化架构图Session:开发者通过Session接曰,完成被持久化对象的C民UD操作。但是Session对象是非线程安全的。数据库中的Session与JSP应用中的HttpSession有区别。SessionFactor:SessionFac化r使用了工厂模式H化erna化yy,完成的辆始化工作。SessionFactory代理存储数据源,SessionFactory可科生成Session对象。一一SessionFactoressionFactor。y是重量级的,在个应用系统中,只需要生成个Sy一一如果应用系统中有多个数据库,可切指定个SessionFac化巧连接个数据库。Transaction;Transaction接口定义了数据库事务处理实现的接日,包括JTA-30- 工程硕±学位论文中的UserTransaction数据库事务处理、JDBC的数据库事务处理、CORBA数据一库事务处理一。这样设计Transaction接口是让程序员使用个抽象、统的数据库事务操作接口,使得应用系统可方便地移植到不同的操作系统运行环境、不同的WEB容器。Query:开发者通过Que巧接口可对数据库及持久对象进行查询,Que巧接曰包含两种语言:本地数据库SQL语言、HQL语言。开发者通过Query接曰,可实现设置参数查询,配置查询返回的数量,完成最后的查询操作。Criteria:开发者通过Criteria接口创建面向对象的SQL查询,Criteria接口不能在Session之外使用,它是捏量级的。Confiuration:Confiurationgg类的作用是对Hibernate进行配置,W及对它进行启动。系统启动比bernate的过程中,首先通过实例化Configuration对象来寻找映射文档化一。通过读取映射文档的配置ess,接着SionFacry类被实例化为e一个对象。在出brnate工程中,Confiuration是第个运行hibernate所生成的对g象。Hibernate的运斤流程如下:应用程巧K巧义件1HT—.……HMiimc乂I?Cl咕.X放tmftgraii白n'ISctuBciirssFaly捕文件I***i.hbm.xmi您詢jj^’Sessoni^々lie。^支- ̄y策4—?巧义孜巧#图5.2Hibernate的运行流程(1)通过Confiuration.confiuretgOgO;读取配置文件hibernae.cfg.xml。"(<ma=2)erna化.cf.xml中的n通过h化gppiresourcecom/xx/Userhbm乂ml7>g.文件,解析hibernate配置。(3)confi.buildSessionFacU)F通过gry(;//得到会话工厂sessionac化r。;)y*(4)sessio打FactoioenSessony.pi//得至U会话session。();(5)session.b巧inTransactionQ;//开始数据库会话事务。(6)ersiste打toeratepp;--31 澈信公众互动平台的设计与实现(7)化ssioii.getTransaction〇.commit〇;//提交数据库会话事务(8)关巧会话session;(9)关闭会话工厂sessionFactory;一e本系统创建个H化ernateUtil帮助类(hlperclass)来负责启动排bemate并使操作Session变得容易。这个帮助类将使用被称为ThreadLocalSession的模式来保证当前的单元操作和当前线程相关联。*imortor.hibemate.pg;*importorg.hibernate.cfg.;ublicclassHibernateUtilp{publicstaticfi打alSessionFactorysessionFactory;static{try{//CreatetheSessionFactoryfromhibernate乂f.xmlg=sessionFactor打ewyCon巧uration乂onfiure.buildSessio打Factor;gQgQyO}catch(Throwableex){//Makesureoulotheexcetionasitmihtbeswallowedygp,g""System.err.pri打tlnInitialSessionFactorcreationfailed.ex(y);thrownewExcetioninl凸itializerErrorexp();}}=publicstaticfinalThreadLocalsessionnewThreadLocal();publicstaticSessio打currentSessio打0throwsHiberaateException{=SessionsSessionsession.et()gO;//Oe打anewSessio打ifthisthreadhasno打eetp,y==ifsnull(){=ssessionFactor.oe打Sessio打0yp;//StoreitintheThreadLocalvariablesession.sets();}returns;}publicstaticvoidcloseSessio打0throwsH化ernateExcetionp{=Sessio打sSessionsessio打.et()g〇;=ifsnu!ll()-32- 工程硕±学位论文s.closeQ;session.set(null);}}?HibernatectionMana;本系统使用来加载和存储对象,编写了Ager类imortorh化ema化.Trani.sactonpg;imortor.h化ernate.Sessionpg;imortava.util.Datep;jpublicclassActionManager{publicstaticvoidmain(String[]args){=ActionManagermgrnewActionManagerO;""ssreifars0.eual化(g[]q()){""mr.createAndS化reActionMActionnewDateg(y,〇);}HeonFac化化ernateUtil.sssiry.closeQ;}}privatevoidcreateAndS化reAction(Stringtitle,Date化eDate){=SessionsessionH化ernateUtil.currentSessionQ;=Transactiontxsession.beinTransactiong();=ActiontheActionnewAction();也eAction.se订itletitle();化eAction.setDate比eDate();session.save比eAction)(;tx.commitO;H化erna化Util.closeSessionO;}5丄2数据库连接池数据库连接是微信公众互动平台应用系统中的关键资源,在多用户并发访问的微信公众互动平台应用时影响系统性能。在微信公众互动平台中如何管理数据库连接,会影响到整个微信公众互动平台的伸缩性和健壮性,对微信公众互动平台的性能指标造成重要影响。数据库连接池负责分配、管理和择放数据库连接,它允许多个用户访问应用程序时一个数据库连,重复使用数据库连接池中已有的--33 微信公众互动平台的设计与实现接。一"缓数据库连接池的原理如图5.3所示,基本思想就是为数据库连接建立个"一定数量的连接,当需要建立数据库连接时冲池。预先在缓冲池中放入,只需"缓"一从冲池中取出个,使用完毕之后再放回去。我们可W通过设定连接池最大连接数来防止系统无尽的与数据库连接。一*^巧接池-Da。Q嫉"二:。8;话於;媽;接与数巧居^1|/I___£J适巧Sn(^J5池原理图.3数据库连接编写连接池需实现ava.sql.DataSource接口。DataSource接曰中定义了两个j重载的etConnection方法:ConnectiongetCon打ectionQ、Co打打ectio打getCo打nectiongStri打usernameStrinassword。(g,gp)实现DataSource接曰,并实现连接池功能的步骤如下;在DataSource构造函数中批量创建与数据库的连接,并把创建的连接加入LinkedList对象中。实现getConnection方法,让getConnection方法每次调用时,一从LedListectionink中取个Conn返回给用户。当用户使用完ConnectionConnection.closeQ方法时Collection,调用,对象应保证将自己返回到LinkedList中,而不要把conn还给数据库。Collection保证将自己返回到LinkedList中是此处编程的难点。本系统中实现数据库连接池的核也代码如下;timoitava.io.InuStreampjp;mortava.ioPrintWri化ri.pj;tonerimortava.lan.reflect.InvocaiHandl;pjgimortavalan.reflect.Method.pjg;imortava.p.la打reflect.Proxjgy;importava.sl.Co打打ectio打jq;-34- 工程硕±学位论文imortava.sl.DriverManagerp;jqimportjava.sql.SQLException;imortava.util.LinkedListpj;imoavauilroerirt.t.Ptespjp;imoravaxl.DaSourcet.stapjq;ublicclassJdbcPoolimlementsDa化Sourcepp{<>=privatestaticLinkedListConnectionlistConnectionsnewLinkedList<Connection>;()static{=InputStreamin""JdbcPool.class.getCIassLoader().get艮esourceAsS杜eam(db.properties);=PropertiesronewProertiespppQ;化y{rolin.oadpp();""S=tri打driverro.etProertdrivergppgpy();""=Stringurlprop.getProperty(url);=""S杜ingusernamero.getProperty(useraame);pp""=Stringpasswordprop.getProperty(password);intdbcPoolInitSizej""=n化erseIntroeProedbcPoolniSizeIr.a.trt(It^;gp(ppgpyjClass.forNamedi:iver();=<++for^nti0;ijdbcPoolInitSize;i){C=onnectionconnDriverManaer.etConnectionurlgg(,username,password);""System.out.println(获取到了连接+conn);listConnections.addconn();}catchExcetione}(p){thrownewExceptionlnlnitializerError(e);}}publicConnectiongetConnection()throwsSQLException{>0iflistConnections.size(()){=nfinalConnectionconnlistConections.removeFirst();--35 微信公众互动平台的设计与实现""Sys化m.cmLprintln(listConnections数据库连接池大小是+listConnections.sizeO);return(Connection)Proxy.newProxylnstanceydbcPool.class.getClassLoaderO,conn.etClassQ.etln化rfacesOewInvocationHandlergg,n(){ublicObectinvokeObectroxMethodmethodObectarspj(jpy,,j[]g)throwsThrowable{""ifs!me化od.etName.eualclose(g〇q()){returnmethod.invokeconnars(,g);else}{listConnections.add(conn);"System.out.printlnconn+被还给listConnections("数据库连接池!);"System.out.println(listConnections数据库连接池"大小为+listConnections.size〇);returnnull;}}});else}{""也rownewRuntiineExcetion对不起(,数据库忙)p;}}publicConnectionetConnectionStrinusernameStrinasswordg(g.gp)throwsSQLException{returnnull;}}5.2微信相关功能实现5.2.1微信消息接收当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。接收的消息类型有6种:,分别为文本消息、图片消息、语音消息、视频消息、地理位置消息、链接消息。-36- 工程硕±学位论文微信接收消息的类设计如图5.4所示,BaseMessage是消息接收的基础类,TextMessage(文本消息)、ImageMessage(图片消息)、LinkMessage(链接消息)、VoiceMessage(语音消息)、LocationMessage(地理位置消息)等都是BaseMessage的子类。Ba化Mess&gc-ToU化rName-FromUerNames-CrealeTime-MsgType-MsidgZ\AZ\TextlMessageImaeMesaeLinkMessaegsgg\oiceMessageLocationMessage--Content---icUrlTitleMedpialdLocationX_--Descr-itionFormatLocaptionY_^^-^Url-Scale-Label图5.4微信接收消息类本系统实现微信消息接收的核必代码如下;//BaseMessae是消息接收的基础类g。publicclassBaseMessage{rvatetrnpiSigToUserName;privateStrinFromUserNameg;privatelongCreateTime;privateStringMsTegyp;privatelongMsgid;publicStringetToUserNameg(){returnToUserName;}publicvoidsetToUserNameStrintoUserName(g){=ToUserNametoUserName;}publicStri打getFromUserNamegO{returnFromUserName;}-37- 微信公众互动平台的设计与实现publicvoidsetFromUserNameS打i打fromUserName(g){N=FromUseramefromUserName;}ubliclo打etCreateTimeOpgg{returnCreateTime;}publicvoidsetCreateTimeyo打gcrea化Time){C=reateTimecreateTime;}publicStringgetMs;gType〇《returnMsgType;}ublicvoidsetMsTeStrinmsTepgyp(ggyp){=MsemsegTypgTyp;}ubliclongetMIdpg巧〇{巧化rnMId巧;}publicvoidsetMsgId(longmsgid){=Msgidmsgid;}}//TextMessage是接收文本消息的类。publicclassTextMessageex化打dsBaseMessage{rivateStrinContentpg;publicStri打ggetContentO{returnContent;}ublicvoidsctGo打te打tStri打CO打te打tp(g){C=ontentcontent;}}//ImageMessage是接收图片消息的类。publicclassImageMessageexte打dsBaseMessage{privateStri打icUrl;gp-%- 工程硕±学位论文ublicStrinetPicUrlQ{pggreturnicUrlp;}publicvoidsetPicUrl(StringpicUrl){=this.icUrlicUrlp;p}}八-LinkMessage是接收链接消息的类。publicclassLinkMessageextendsBaseMessage{rivateStrinTitlepg;rivateS化inDescritionpgp;privateS杜ingUrl;ublicStringtTitlepgeQ{returnTitle;}ublicvoidsetTitleStrintitlep(g){=Titletitle;}ublicStringetDescritionpgp(){returnDescritionp;}publicvoidsetDescriptionStrindescrition){(gp=Descritiondescritionpp;}publicStringgetUrl(){returnUrl;}ublicvodselSiurlpitUrtrn(g){U=rlurl;}}//VoiceMess巧e是接收语音消息的类。publicclassVoiceMessageextendsBaseMessage{rivateStringMedialdp;-巧- 微信公众互动平台的设计与实现rivateStri打gormatpF;publicStringgetMediaId(){returnMediald;}publicvoidsetMediaIdStrinmediald(g){M=edialdmediald;}ublicStrinetFormatpgg(){returnFormat;}publicvoidsetFormat(Stri打gformat){=oFormatfrmat;}}//LocationMessage是接收位置消息的类。ublicclassLocationMessageextendsBaseMessagep{privateStringLocationX;rivateStrinLocationYpg;privateS化ingScale;rivateStri打abelpgL;publicStri打ggetLocation—X(){returnLocationX;_}publicvoidsetLocationXS化i打locationX—(g){L=ocationXlocation_X;}ublicStringetLocationYpg_(){returnLocationY;}ublicvoidsetLocationYStrinlocationYp—(g){=LocationYlocationY;—}publicStringgetScaleO{returnScale;}-40- 工程硕±学位论文publicvoidsetScaleStri打scale(g){=Scalescale;}publicStringgetLabelO{returnLabel;}ublicvoidsetLabelStrinlabel)p(g{L=abellabel;}}5.2.2微信消息响应一对于每个POST请求,开发者在响应包(Get)中返回特定XML结构,对(现支持回复文本该消息进行响应、图片、图文、语音、视频、音乐)。微信消息响应的类设计如图5.5所示eMessae,Basg是消息响应的基础类,TextMessage(文本消息)、MusicMessage(音乐消息)、NewsMessage(新闻消息)、等都是BaseMessage的子类。BaseMessaeg-ToUserName-FromU巧rName-ea化QTime-MsTegyp-Msgid-FuncFIag币TextMessaeMusicMessaeNewsMcssafggg-Con--tentMusicArlicleCount-Articles围5.5微信消患巧应类本系统实现微信消息响应的核也代码如下://BaseMessage是消息响应的基础类。publicclassBaseMessage{rvatetrnToUserNameiSipg;rivateStringFromUserNamep;rivatelongCreateTimep;-4-1 微信公众互动平台的设计与实现rivateStrinMsTepggyp;rivateintFuncFlagp;ublicStrinetToUserNamepgg(){returnToUserName;}ublicvoidsetToUserNaineStri打化UserNamep(g){=ToUserNametoUserName;}ublicStrinetFromUserNamepgg(){returnFromUserName;}publicvoidsetFromUserNameStringfromUserName(){F=romUserNamefromUserName;}publiclonggetCreateTimeO{returnCreateTime;}publicvoidsetCreateTimeloncreateTime(g){C=reateTimecreateTime;}ublicStringetMsgTypeQpg{returnMsgType;}publicvoidsetMsgType(StringmsgType){=MsgTypemsgType;}ublicintetFuncFlapggO{returnFuncFlag;}publicvoidsetFuncFlag(intfuncFlag){=FuncFlafuncFlagg;}}//TextMessage是文本消息响应的类。publicclassTextMessageextendsBaseMessage{-42- 工程硕女学位论文rivateS化i打Contentpg;ublicStri打etContentOpgg{returnContent;}publicvoidsetContent(Stringcontent){C=ontentcontent;}}八NewsMessage是新闻消息响应的类。publicclassNewsMessageextendsBaseMessage{rivateintrticleCAountp;rivateList<Article>Articles;ppublicintgetArticleCount(){returnArticleCount;}publicvoidsetArticleCount(intarticleCount){=ArticleCountarticleCount;}publicList<Article>etArticles()g{returnArticles;}publicvoidsetArticlesList<Article>articles(){=Articlesarticles;}}//MusicMessage是音乐消息响应的类。publicclassMusicMessageextendsBaseMessage{rivateMusicMusicp;publicMusicgetMusicQ{returnMusic;}publicvoidsetMusicMusicmusic(){Mu=sicmusic;}}-43- 微信公众互动平台的设计与实现5.2.3微信消息处理微信公众互动平台消息处理流程如图5乂所示:首先,微信公众互动平台接收微信服务器发送的XML消息并解析XML消息,对合法的请求调用相关业务模块进巧处理,,然后将处理结果封装成XML消息最后返回XML响应消息给微信服务器。开始—_i接收XML消II息并解析息是言\否^法?^了是i调用消息I请求业务iXML消息封装返回XML响应消息i结束图5.6微信消息处理流程微信服务器将用户发送的消息通过POST方式提交给开发者在接曰配置信息ve中填写的URL,在U化所指向的请求处理类CoreSerlt的doPost方法中处理消e、息。本系统编写了WixinchatServlet类实现接口消息处理等管理功能,核屯代码如下:ackaeWeixi打chat.servletpg;imortava.io.BufferedReaderp;jimortava.io.IOExcetio打pjp;-44- 工程硕±学位论文impoitava.io.InutStream;jpimportjava.io.InputS化eamReader;importava.io.OutputStream;jimportjavax.servlet.ServletExceptio凸;importavax.servlet.http.HttServlet;jpimoravaxserle.h.rvleeuest.vtttHttSetRt;pjppqimortavax.servlet.ht巧.HttServletResonsep;jppimortweixinchat.rocess.WechatProcesspp;publicclassWeixinchatServletextendsHttpServlet{//处理httpet请求gpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,lOException{""re-uest.setCharacterEncodin(UTF8qg);""0-化31186.化祀113化(:16[6]10〇北1111了?8口3();=StrinBuffersbnewStrinBuffergg();=*In山Streamisieuest.etln山StreampqgpQ;=""ername-In山StreamReadisrewIn山StreReadrisUTF8p(;p,)=Buffered民eaderbrnewBufferedReader(isr);=Strinsgw==hilesbrreadLine!null(.)){(Osb.aendspp();}=StringxmlsbJoStringO;=Stringresult""S=trinechostrreuest.etParameter(echostr)gqg;=>if(echostr!null&&echos比leng化()1){=res山techostr;else}{=resultnewWechatProcess.rocessWechatMaxml()pg();}try{Ou=tputstreamosresponse.etOututS杠eam;gp〇""-os.writeesult.etBtesUTF8(rgy());os.flush化os.closeQ;-45- 微信公众互动平台的设计与实现}catch(Exceptione){e.printStackTraceQ;}}//处理httpost请求ppublicvoiddoPostHttServletReuestrequestHtServl別民escmseresonse(pq,ppp)throwsServletException,lOExceptio打{doGetrequest,resonse);(p}}//格式化微信接日的XML响应信息publicclassFormatXmlProcess{ublicStrinformatXmlA打swerStrintoStrinfromStri打conte打tpg(g.g,g){=Stri打gBuffersbnewStringBuferO;=DatedatenewDate();""sb.aend<xml><ToUserName><!CDATApp([[);sb.appe打d(to;)""sb.append]]></ToUserName><FromUserName><!CDATA;([[)sb.aendfrompp();""sb.append]]></FromUserName><CreateTime>;()sb.append(date.getTimeQ);"sb-append</CreateTime><Mse><![CDATA[texU]></M巧Te><Content><!C(gTypyp["DATA[);sb.appe打d(conte打t);""sb.aend></Content><FuncFla>0</FuncFla></xml>;pp(]]gg)returnsbJoStringO;}}5.2.4微信自定义菜单微信自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。本系统为了方便维护自定义菜单,编写了WeixinMenuTool类实现创建菜单、删除菜单等管理功能,核也代码如下://WeixinMe肌Tool类实现菜单管理功能publicclassWeixinMenuTool{-46. 工程硕±学位论文privatestaticStringetAccesstokeng_(){.|"S=trinAPPIDg;=""S化inAPPSECRETg;=Stringurl""h-==+tts://ai.weixin..com/cibin/token?rantteclientcredential?&:aidppqqgg_yp_pp"’’APPID+&secre户+APPSECRET;=S化ingaccessTokennull;巧{=U民LurlGetnewU民Lurl();H=ttU民LConnectionhttpp(HttpU民LConnection)urlGet.openCo打打ectionQ;""htt.se1:ReuestMe化odGETpq();""""*--hseeuese-www-tt.t民tProitContentTealication/xformurlencodedpqpy(yp,pp);http.setDoOutput(true);htt.setDoInuttruepp();http.connectO;nueam=mItStrishtt.etInutStreappgp();=i打tsizeis.available〇;=ebtesonBtes打ewbtsizey[]jyy[];is.readso打Btes();jy""=messa-S化inggenewStrin(sonB化sUTF8gjy,);=mJSONObectdemoJsonnew化ONObectessaejj(g);""=accessToke打demoJson.getString(access_toke打);Sys化m.out.println(message);}catch(Exceptione){e.rintS化ckTraceQp;}returnaccessToken;}//创建菜单功能ublicstaticStrincreateMenupg(){""’"""""""=S化ingmenu{\buttonV:[{\type\:\click\,\name\:\发布活动"""""""""""i’""’""\\key\:\l\\te\:\click\\name\:V参与V\ke\:V2\,\na,},{yp,活动,y}{?""""""""""""?""\3\\te\:\ci打am\:\\\ke\:V管理活动V,lck\,\e精品活动4\;,}{yp,y}]}=S化i打accesstokenetAccesstoke打g_g0;=Stringactio打-47- 微信公众互动平台的设计与实现"="https://api.weixin.qq.com/cg^bin/menu/create?accesstoken+accesstoken;__巧{URL=urlnewURL(action);=URLCHttURLConnectionhttHttonnectionpp(p)url.openConnectionQ;""htt.setReuestMe化odPOSTpq();""""---www-urhtt.setReuestProertyCorUentTealication/xformlencodedpqp(yp,pp);htt.etDoOtttrupsupu(e);seouuehtt.tDInttrpp();http.connectO;=uO山山Streamoshtt.etOtiUS仕eamppgp〇;""menu-os.write(.e化tes(UTF8gy));os.flushQ;os.clo化();=uInutStreamishtt.etIntS化eam〇ppgp;=intsizeis.available();=byte[]jsonBytesnewb5^;e[size];isdnBt.reasoes(jy);""=S杜mesaiewses-inseiS化inonBtUTF8ggg(y,);j""re化rn返回信息+message;catchMalformedURLExcetione}(p){e.rintS化ckTraceQp;cakhOExcetione}yp){e.rintS化ckTraceQp;}""re化m灯eateMenu失败;}//刪除菜单功能publicstaticStringdeleteMenu(){en=StringaccesstoketAccesstoken_g_();"=rinacionhsweixnm/-Stttt://ai/ee?g.i..cocibin/menudeltppqqg"=+aaccess_tokenccess—token;化y{-48- 工程硕±学位论文=URLurlnewU反Laction();=HttURLConnectionhttppHUU民LConnectionurl.oenConnection(p)pQ;""http.setRequestMe也od(GET);""""---seeuesoe-httrt:eneaicwwwfonnurencoded.tRtPrCon1tTyplation/xlpqpy(,pp);htt.setDoOututtruepp();http.setDoInput(true);""Sys化m.setPropertysun.net.client.defaultConnectTimeout(,""30000);""""Sys化m.化tProperty(sun.net.client.defaul化eadTimecmt,30000);http.connectQ;=OutputStreamoshtt.etOututStreampgp();os.flushQ;os.closeQ;=InputStreamishttp.getInputS化eam();=intsizeis.available();=b化sonB化snewbtesizey[]jyy[];is.read(sonBtes)jy;""=Str-inmessaenewS化m(sonBytesUTF8gggj,);""KturndeleteMenu返回信息:+message;catchMalformedURLExcetione}(p){e.rintStackTracepO;}catch(lOExceptione){einSckTrace.rttaOp;}""re化radele化Menu失败;}}5.3核心业务功能实现5.3.1会员注册会员注册处理流程如图5.7所示:首先,用户提交会员注册信息后,系统检查数据的完整性、合法性,对合法的会员注册信息,系统保存会员注册信息,最后返回会员注册是否成功的处理结果。-49- 微信公众互动平台的设计与实现开始i提交会员I注册信息义是?保存会员注册信息W返回处理结果2结束5图.7会员注册处理流程""""",会员注册界面如图5.8所示用户填写好用户名称、用户性别、用"""""""""户密码、手机号码、办公电话、邮箱、兴趣爱好等信息,点击""按钮提供注注册册信息。巧户倍息州户名称'X。。'^州户作别W^—xX州户密码. ̄'""邮巧 ̄j;i;zzr…一一手化号码^知'公化话.::IZIIIII’一…—一兴趣巧好言 ̄ ̄ ̄ ̄liw图5.8会员注册界面图实现会员注册功能的核也代码如下:Userinfo类实现单个用户信息的保存。publicclassUserinfo{privateStringUserName;rivateStri打gSexp;--50 工程硕±学位论文rivateS化ingasswordpP;privateStringMobilePhone;rivateStrin了clePhonepg;privateStringEmail;privateS化i打gHobby;ublicStringetUserNamepg(){returnUserName;}publicvoidsetUserName(S化i打gsUserName){=UserNamesUserName;}publicStringgetSexQ{returnSex;}ublicvoidsetSexStrinsSexp(g){=SexsSex;}ublicStrinetPasswordpgg(){returnPassword;}publicvoidsetPasswordS化i打sPassword){(gP=woasswordsPassrd;}publicStringgetMobilePhone(){reUiraMobilePhone;}publicvoidsetMobile化one(StringsMobilePhone){M==obilePhonesMobilePhone;)publicStringgetTelePhoneQ{returnTelephone;}publicvoidsetTelePhoneStrinsTelePhone){(gT=elephonesTelePhone;}-5-1 微信公众互动平台的设计与实现publicStringgetEmail(){returnEmail;}publicvoidsetEmailStrinsEmail(g){Em=ailsEmail;}publicStringgetHobbyO{returnHobby;}ublicvoidse化obbyStrin姐obbp(gy){H=obb抽obbyy;}}UserInfoDAO类实现用户信息的数据库查询、存储、修改等操作。publicclassUserinfoDAOextendsBaseHibernateDAO{ublicvoidsaveUserinfotransientlnstancep(){""^lo.debu(savinUseiinfoinstance)ggg;化y{getSession().save(transientInstance);""log.debug(savesuccessful);}catch(RuntimeExceptionre){""lo.errorsavefailedreg(,);throwre;}}ublicvoiddeleteUseri打foersiste打tl打sta打cep(p){""lo.debu(deleti打Useri打foinstance)ggg;try{呂etSessicmQ.dele化(persistentinstance);’"loddeleccesfu.ebutesuslggC;)catch(民untimeExcetionre){}p""log.error(dele化failed,re);throwre;}}--巧 工程硕±学位论文publicUserinfofindById(java.math.BigDecimalid){'"+lo.debuettinUserinfoinstancewithid:idggCgg);try{U=serinfoinstance(Userinfo)getSession().get(""Userinfoid;,)returninstance;}catch(RuntimeExceptionre){""lo.erroretfailedreg(g,);throwre;}}publicListfl打d艮y£xample(Useri打foi打sta打ce){""log.debug(findingUserinfoinstancebyexamle);p化y{L=istresultsetSessionQg""?createCriteria(Userinfb.acid)(Examle.createinstance.listp())();""log.debugfi打dbexamlesuccessfulresultsize:(yp,+results.sizeQ);returnresults;}catch(RuntimeExceptionre){""rorndexaeedrehrowreio.er(fibymplfail;t;g,)}}}5.3.2会员管理会员管理处理流程如图5.9所示:首先,管理员审核会员注册信息,检查数据的真实性等,,,对合法的会员注册信息管理员可修改会员状态信息为已通过最后返回会员管理是否成功的处理结果。■巧- 微信公众互动平台的设计与实现开始N±管理员审核会员信息I合法是I_i修改会员状态信息i返回处理结果i结束图5.9会员管理处理流程会员管理的界面设计如下图所示,系统管理员对申请注册会员进行审核,审""""核通过的用户才能成为会员。系统管理员可W通过:用户名称、用户状态等条件查询用户信息。会员管理?条件 ̄"用户名称rI用户状态r稱曲面CM]结果i户名秘机号码晒箱隆别用户状态注册时间ItII图5.10会员管理界面图-54- 工程硕±学位论文5.3.3发布活动51发布活动处理流程如图.1所示;首先,用户提交活动信息后,系统检查数据的完整性、合法性,对合法的活动信息,系统保存活动信息,最后返回发布活动是否成功的处理结果。开始i提交发布|活动信息I动信否是I古保存发布活动信息i返四处理结果▼结束图5.11发布活动处理流程"""""51发布活动界面如图.2所示,用户填写好活动名称、活动介绍、活"""""""""动时间、活动地点、办公电话、活动类型、活动图片等信息,""点击发布活动按钮提供活动信息。巧幼倍总巧动名称X巧巧构[介X活巧内容X巧动时问X活巧地点^^X活动幽片 ̄发布活iT图5.12发布活动界面图-55- 微信公众互动平台的设计与实现实现会员注册功能的核也代码如下://Actioninfo类实现单个活动信息的保存。publicclassActioninfo{rivateStrinActionName;pgrivateStrinActionTepgyp;rivateStrinActionBriefpg;rivateS杜inActionContentpg;rivateStrinActionDate;pgrivateStrinActionPlacepg;rivateStrinActionPicturepg;publicStringgetActionName(){returnconNameAti;}publicvoidsetActionName(StringsActionName){A=ctionNamesActionName;}publicStringgetActio打Type〇{returnconTeAtiyp;}publicvoidsetActio打Type(StringsActionType){A=ctionTypesActio打Type;}ublicStrinetActionBriefpgg(){returnActionBrief;}publicvoidsetActionBrief(Stri打gsActio打Brief){=ActionBriefsActionBrief;}publicStri打ggetActio打GontentO{returnActionContent;}ublicvoidsetActio打GontentStri打sActio打Gontentp(g){=Actio打ContentsActionContent;}publicStringgetActionDateO{ 工程硕±学位论文returnActionDate;}publicvoidsetActionDateStrinsActionDate(g){=ActionDatesActionDate;}ublicStrinetActionPlacepggO{returnActionPlace;}ublicvoidsetActionPlaceStrinsActionPlacep(g){A=ctionPIacesActionPlace;}publicStringetActionPic化re()g{returnActionPicture;}ubvoidecioncurS化inioicureplicstAtPitesAct打Pt(g){A=ctio打PicturesActionPicture;}}//ActionInfoDAO类实现活动信息的数据库查询、存储、修改等操作。ublicclassActio打infoDAOexte打dsDaseMibernateDAOp{ublicvoidsave〇Acticmi打fotransie打tinstancep){""lo.debu(savinActioni打foinstanceggg);by{getSessionQ.save(化ansientinstance);""log.debug(savesuccessful);}ca化h(民untimeExceptionre){""lorrorsavefailedre.eg(,);throwre;}}ublicvoiddeleteUserinfoersistentinstancep(p){""lo.debu(deletinActioni打foinstance)ggg;by{getSession〇.deIete(persis化ntinstance);’"lo.debudele化successful)ggC;-57- 微信公众互动平台的设计与实现}catch(RuntimeExceptionre){""lo.errordeletefailedreg(,);throwre;}}ublicActio打hifofind艮ldava.math?良igDecimalidpy(j){""lo.debuetti打Actioninfoinstancewithid:+idgg(gg);巧{=Actioninfoi打stanceActioninfoetSession.et()g()g(""Actioninfbid,);returninstance;}catch(民untimeExceptionre){""loeorefailedre.rrtg(g,);throwre;}}publicListfindByExample(Actioninfoinstance){""lo.debug(findinActioninfoi打s化neebexamle)ggyp;巧{L=istresultsetSessionQg"".createCrheriaAetioninfo.add()(Examle.createinstance.listp())〇;""log.debugfindbexamlesuccessfulresultsize:(yp,+results.sizeQ);returnresults;catchRuntimeExceptionre}(){""lo.error(findbexamlefailedregyp,);throwre;}}}5.3.4审核活动审核活动处理流程如图5.13所示:首先,管理员审核活动基本信息,检查数,对合法的活动信息据的真实性等,管理员可W修改活动状态信息为已通过,最-58- 工程硕±学位论文后返回会员管理是否成功的处理结果。开始i管理员审核活动信息I乂动信合\否^合法是▼修改活动状态信息iJJ返回处理结果2结束图5.13审核活动处理流程审核活动的界面设计如图5.14所示,系统管理员对申请发布的活动进行审"""核:活动名称、,审核通过的活动才能发布。系统管理员可W通过活动状态"等条件查询用户信息。审核活动查巧条件巧巧名称巧动状态寻审核曰査巧1[I查询结果若巧名称巧巧介绍活动时间活动地点洁巧类型审核状态申请时间IIIIII田5.14审核活动界面图5.4系统测试为了确保微信公众互动平台的软件质量,在开发微信公众互动平台的过程中,-巧- 微信公众互动平台的设计与实现要不断进行软件测试。微信公众互动平台的软件测试严格按照测试流程,编写了,。在测试过程中,测试计划按照编写的测试方案逐步实施测试,分析测试结果编写测试报告。微信公众互动平台的测试是为了及时发现程序中可能存在的错误,并尽早修复程序错误。在开发微信公众互动平台的过程中;,进行软件测试的步骤有(1)单元测试:是对微信公众互动平台的基本单元功能模块进行测试是否正确性的工作。单元测试用于发现微信公众互动平台各个模块内部可能存在的各种错误。要从微信公众互动平台模块内部结构出发,设计软件测试用例,可W平行、独立地测试多个模块。(2)集成测试:按设计要求,把微信公众互动平台单元测试通过的所有功能模块集成进行测试,检验微信公众互动平台各功能模块之间接曰是否有设计问题,检验微信公众互动平台的模块之间是否互相影响,检验全局变量对微信公众互动平台系统的影响,检验上下层模块间是否存在差错等。(3)确认测试:按照微信公众互动平台需求说明书中的功能和性能,检验开发的微信公众互动平台应用软件是否实现了需求说明书的要求。一(4)系统测试:将微信公众互动平台应用系统作为个元素,在实际使用环境下,与应用服务器、其它应用软件、用户等元素进行系统的测试。软件测试作为系统实现和部署的最后阶段,它旨在找出软件系统中的缺陷(BUG),确保软件的高质量和高可靠性。微信公众互动平台主要有两个部分组成,分别为:微信前台部分id智、后台管理网页。对于微信前台部分,使用Andro能手机和iPhone智能手机进行测试。对于后台管理页面,由于浏览器的兼容性问,需要在不同浏览器环境下进行测试题。微信公众互动平台的测试方案包含测试环境、测试内容、测试用例、测试结果分析等。5.4.1测试环境微信公众互动平台在实际的互联网、智能手机、PC上进行测试。后台管理网页部署在云平台上,,安装有微信客户端的智能手机作为微信测试客户端安装有浏览器的PC作为后台管理页面测试客户端。具体测试环境如表5.1所示:51表.测试环境机器参数名参数IOS8.0、IOS9.0ArArr.手机系统版本,ndoid4.0、ndoids.0、Andoid60微信版本微信6.2,微信6.3PC操作系统Windowsxp,wmdows7.0,windows8.0浏览器化9化10lEll狐浏览器,,,火-60- 工程硕±学位论文续表机器参数名参数服务器环境云平台操作系统Windows2008serverWebTOMCAT7.0数据库MySQL5.75.4.2测试内容微信公众互动平台的测试内容包含界面测试、功能测试。、性能测试(1)界面测试;界面是系统与用户交互的直接载体,微信公众互动平台的界面应整齐、大方,界面操作应相对灵活、不同智能手机、PC等设备分辨率情况下对系统U。I的改观不大微信公众互动平台的界面测试主要包括:界面风格是一否统显示是否整齐一,致,不凌乱用户操作方便,简洁,提升用户体验;对;不同分辨率设备是否显示相同。(2)功能测试:微信公众互动平台的功能测试是验证系统中的功能逻辑是否按照需求和设计正确实现。根据微信公众互动平台的需求分析、总体设计,对平台的各个功能模块进斤测试。(3)性能测试:微信公众互动平台的性能测试是通过自动化的测试工具模拟多种正常、峰值W及异常负载条件来对系统的各项性能指标进斤测试。如微信公众互动平台最大支持在线用户数、登录系统需要时长、发布活动操作时长等。5.4.3测试用例根据微信公众互动平台的测试方案,设计的测试用例如表5.2所示;表5.2測试用例表编号拥试名称測试目的況试步巧预期结果"""、1用户注册检査用户注用户巧写用户名称用检査用户注册信息合法""""册功能模块户性别、用户密码、手性,化果合法,则保存""""是否正确机号码、办公电话、邮用户注册信息。如果不箱"""等信、兴趣爱好息,合法,提示用户原因。点击提交按钮。"""2发布活动检査发布活用户填写活动名称、活检查活动信息合法性,""""动功能模块动介绍、活动时间、活如果合法,则保存活动"""",是否正确动地点、办公电话、活信息。如果不合法提"""动类型、活动图片等信示用户原因。息等信息,点击提交按钮。--61 微信公众互动平台的设计与实现续表编号测试名称测试目的测试步骤预期结果""3管理活动检査管理活管理员可W通过活动名称、检查活动信息的合法""动功能模块活动状态等条件査询活动性,如果合法,则修改是否正确信息,对申请发布的活动进行活动状态信息。"审核,根据情况点击审核通"""过或审核未通过按铅。""4会员管理检查会员管管理员可W通过会员名称、检查会员信息的合法""理功能模块会员状态等条件查询会员性,如果合法,则修改,对申请注册会员进斤审会员状态信息是否正确信息。""核,根据情况点击审核通过""按钮或审核未通过。5发现活动检查发现活用户可W按照活动时间、活动用户可W检索活动、查动功能模块地点、活动类型等条件进行活看活动信息。是否正确动检索,系统将满足査询条件的活动信息返回给用户,用户查看活动巧情。6参与活动检查参与活用户可W按照活动时间、活动用户可W检索活动、查动功能模块地点、活动类型等条件进行活看活动信息、参与活动。是否正确动检索,选择要报名参与的活动,点击参与活动按钮。5.4.4测试结果经过界面测试、功能测试、性能测试等步骤,微信公众互动平台的界面经过多次设计修改现已基本满足需求,能适应不同分辨率的智能手机、PC及不同浏览器下,平台的功能及性能达到了系统的设计要求。具体测试结果如表5.3所示;表5.3測试结果测试项目测试结果测试结果分析一一界面风格良好风格统,色调统,用户操作方便、简洁。,按功能划分区域界面布局良好布局合理。兼容性良好在不同手机、不同分辨率、不同浏览器、不同操作系统(XP、W一in7、Wins)情况下测试致功能良好经测试,系统的功能满足设计要求。性能良好经测试,系统能支持1000用户并发访问,达到设计要求。--62 工程硕±学位论文5.5本章小结本章首先从出bemate实现对象存储、数据库连接池两个方面介绍了系统数据库相关功能实现,然后重点对微信相关功能实现中的微信消息接收、微信消息响应、微信消息处理、微信自定义菜单等功能实现,其次介绍了核私业务功能中的会员注册、会员管理、发布活动、审核活动的核也代码、界面设计等。最后从测试方案的测试环境、测试内容、测试用例、测试结果等方面,介绍了系统界面测试、功能测试、性能测试的情况。--63 微信公众互动平台的设计与实现结论与展望结论微信服务因其移动性、便携性、个性化等特点深受广大网民的欢迎。针对网民开展网络社交活动的功能需求,本文基于微信公众互动平台的开发框架,结合J2EE、Webservice、Oracle数据库等相关技术,研究开发了微信公众互动平台,用户可通过关注本服务号,实现用户注册、发布活动、管理活动、发现活动、参与活动等社交功能,系统管理员可W在后台实现会员管理、审核活动、精品活动。本文做的主要工作如下。(1)从电子邮件、论坛(BBS)、即时通信(IM)、博客(Blog)等介绍了网络社交应用的发展历程,并对国外网络社交应用Facebook、MySpace、Twhter,国内网络社交应用新浪微博、陌陌、来往的功能及开放接口情况,W及网络社交、微信应用的研究现状进行了分析。(2)对微信公众互动平台的开发关键技术集中进行了研究,介绍了微信公众平台的微信服务姐成、微信消息交互机制、微信公众平台接口、微信自定义菜单,W及J2EE、MVC模式、XML、JS0N、Webservice等技术。(3)从用户需求和功能需求出发梳理了微信公众互动平台的基本需求,使用用例图、流程图等对微信公众互动平台的功能需求进行分析,并分析了性能需求、安全性需求、可用性需求等其它需求。(4)从平台的总体设计、技术架构、功能设计、工作流程设计、内外部接口设计、数据库设计等方面,详细介绍了微信公众互动平台的设计。(5)从数据库相关功能实现,微信消息接收、微信消息响应、微信消息处理、微信自定义菜单等功能实现,核也业务功能中的会员注册、会员管理、发布活动、审核活动的核屯、代码、界面设计等方面详细介绍了微信公众互动平台的实现。最后从测试环境、测试内容、测试结果等方面,介绍了系统测试的情况。本文设计的微信公众互动平台,具有操作简便、功能容易扩充、用户体验良一好、开发成本低等优点,具有定的应用和推广价值。展望由于时间有限,本文所设计的微信公众互动平台在诸如功能扩展等方面的研一究还有待进步的深入和完善:(1)随着微信公众平台不断进行升级,微信的功能不断扩充W及4G移动通信的推广使用,网民开展网络狂交活动的功能需求将会逐步增加,本系统需要实-64- 工程硕±学位论文一现进步完善功能。(2)随着微信公众互动平台用户不断増加,系统的网络安全问题更加重要,一在后的研巧中还需要投入更多的精力,进步提升数据安全、应用安全、存储、。安全等,提升系统的安全性可用性3一()随着用户的増加、业务需求的扩展,系统的性能需要进步的优化,使系统能支持大量用户的并发访问。-65- 微信公众互动平台的设计与实现参考文献[1]柳峰.微信公众平台应用开发方法、技巧与案例[M].北京:机械工业出版社,2014.口.J.2013.]李冬微信的特点和应用趋势[]科技传播,—3:eb友君.20从W我国网络社交工具发[]杜,杜惜年到APP,从开放到圈子展历程简析[J].现代传播,2014(10).[4]Facebook网站巧B/OL].https://www.facebook.com.[5]MySpace网站巧B/OL].http://WWW.myspace.com.问Twitter网站巧B/0".htp://www.twitter,com.[7]新浪微博网站[EB/OL].http://WWW.weibo.com.口/OL.htt://www.immomo.com.]陌陌网站巧B]p仪B/OL.ha://WWW.laiwan.com.1来往网站巧]pg10.D.郑州大学.[]王奕琳社交网站的现状与发展趋势研究[],2011-.J.新闻界5:3235.[川李林容社交网络的特性及其发展趋势[],2010()-U王亮.SNS20096:913.[]社交网络发展现状及趋势化现代电信科拉()[13]杜招赵灿付小龙.高校校园社交网络系统的设计与实现[J.实验技术与,,]20-管理127:99102.,()[14]张妹,付立新.基于移动终端的社交系统的设计与实现[J].计算机科学,20-1310;151153.()-5肖波.浅析中外社交网络界面设计差异J.0136:54巧.[1]袁可,[]美与时代,2()16巧师达.BBS论坛D.上海交通[]校园情感数据抓取与分析系统设计与实现[]大学,2014.17吩盼.J.[]陈克寒,韩,吴健基于用户聚类的异构社交网络推荐算法[]计算机20-学报132:349358.,()[18]陈季梦佳俊,刘杰,黄亚楼,王娠冯霞.基于结构相似度的大规模社交,陈,-网络聚类算法[J.电子与信息学报20152:449454.],()19万园春.顾腐铺.邱卫东.微信交互协议和加密模式研究[J.微型电脑应用[]],20-1531:3134.,口)一20杨省伟..微信统服务平台的构建研究[J.湖南工程学院学报(自然[]杨浩杰]20-14244:3840科学版).,,()[21]钟志勇.微信公众平台应用开发实战[M].北京;机械工业出版社,2013.[22]易伟.微信公众平台搭建与开发解密[M].北京:机械工业出版社,2013.-66- 工程硕±学位论文3:20.微信公众平台开发最佳实践[M].科技出版社14.口]方倍工作室北京,4春..山东大学.口]肖富基于微信的中小企业CRM系统设计与实现[D],20145.口缕玲玲.基于微信公众平台的高校图书馆信息服务研究[D南京航空航天]]大学,2015.26..华中科技大学.[]黄文基于微信的叫号点餐系统的设计与实现[D],20147公众平台API文档田B/OL.ht://m.weixin..com.口]微信]ppqq口8]吕继云.基于J2EE的Web应用服务器的设计与实现[D].华中科技大学,2004.:口9孙卫琴.Struts:MVC的JAVAWeb设计与开发M.北京电子工]精通基于[]业出版社,2009.口0]戚克涛,胡涛,张申生.基于Java平台和XML开发Web应用[J].计算机工200228-程:5354.,,〇)自聪.Ajax开发精要[M.电子工业出版化,20〇6.趴]柯]口引刘英丹,董传良.利用WebService实现企业应用集成町计算机应化2003,237-:124126.()口3]肖金华,黄丽红.基于微信的图书馆信息服务模式研巧[J].现代情报,20-136:5557.()34.J.20132777.崔岩移动开发平台的构建[科技创新与应用,(:[]])口5]李欢.基于移动互联的IM交互设计研究[D].北京交通大学,2013.口6]范丰龙.电子商务中微信服务系统设计与实现[J].商场现代化.2013,(20):-101103.-7.社交网络的特性及其发展趋势[J.新闻界2010534.]李林容]:32口,,8乔散新.J.电信科学2010口],朱吉化,沈勇手机移动社交网络的用户研巧[],,26-10:109113.()-:9.SNSJ.现代电信科技2009399B.口]王亮社交网络发展现状及趋势[],,巧)[40]邓夏巧.基于社交网络的用户行为研巧[D].北京交通大学,2012.41陈清华.SNSJ.],李林锦,翁正秋网站用户关系挖掘的设计与其现[]计算机[37361-63工程.,2011:,()[4引焦文华.基于Android的移动互联网应用的研巧和实现[D].北京邮电大学,2013.4.常用HTML5移动应用框架[J.电脑知识与技术2013910:[引符石],,()-23042305+2313.44]邹俊.基于Oracle数据库系统性能调整与优化研巧[D.江西财经大学,2006.[]-45.ORACLE数据库设计与开发规范研巧[J.湖南农机23.[]徐安平,2009。):17]46]潘志宏,罗伟带柳青.基于HTML5跨平台移动应用的研巧与实践[J].电脑[--67 微信公众互动平台的设计与实现39-知识与技术,20117:39923995.,()47叶海智.基于徹信的图书馆移动信息服务设计与实现[J.软[],刘强,尹丹丹]20-131211:8890.件导刊,,()48甘宇健毛灵芝.向龙莲.银行智能微信公众平台设计与实现[J]软件导刊[],,20-141302:67.,()4.XML语言在Web开发中的应用研究[J.20131212:[^徐进强]软件导刊,,()33-34.:50荣石..广州华南理工大学[]甘基于微信平台的移动银行应用架构研巧[D],2013.5.基于SrinJ2EE架构与应用化计[U胡启觀薛锦云,钟林辉pg框架的轻量级2008440-算机工程与应用5:115118.,(),口引王国辉,王毅,伊相群.JavaWeb开发技术方案宝典[M].北京:人民邮电出版社,200ts2:8.5.Strut权威指南[M].北京电子工业出版化200[引李刚5rutsMVC的JAVAWeb设计与开:M.[W孙卫琴精通別:基于发[]北京电子工业出版社,2009.55ESSEJAMESGARRETT.Aax:ANewAroach化WebAlicationDB/〇.[]jpppp[U-t---ht://adativepath.com/ideas/aaxnewaroachwebapplications2011.ppjpp,56:约翰逊怀特查兰.AJAX企业级开发[M].北京人民邮电出版社2008.[],,,57夏昕曹晓刚.深入浅出fibernateM.北京:.[],,唐勇[]电子工业出版狂,2005口8AUERCKING任出bernateinActionM.Greenwich:ManninPublications],[]gCo2005.,口叫JohnsonRHoellerJ.M.J2EEDevelomentwi出outEJB2005.,[]p,[60]JohnsonR,HoellerJ.[M].ASpringJava/J2EEapplicationFramework,2004.’ewhh61DSouzaDFCamronWills.[M].AObjectscomonentsandframeworks[],,pUML2003.,[62]SzyperskiC,GruntzD,MurerS.[M].Componentsoftware:b巧ondobectorieiUedrorammin2003.jpgg,吹]华乾郝克刚,葛带基于Hibernate和Spring框架的Web应用研对J].计算-20061611:8486机技术与发展.,,()64MVCStrutsWeb应用研巧与实现J:.计算机与现代化20081[]模式和框架的[],-103106.65王安保闻季鸿.Struts框架Web应用的国际化[J.[],蒋文蓉,朱彬,]计算机技2007-术与发展174:189191.,,()66淫.J.199910.[]陈,王能斌半结构化数据查询的处理和优化[]软件学报,,巧)-68- 工程硕±学位论文67军杨冬青.半结构化数据查询重写[J.[]高,唐世渭,,王腾蛟]计算机研巧与-2002巧2:165171发展).,,(68王宁.J.[],王能斌异构数据源集成系统查询分解和优化的实现[]软件学报,200011.,口)69戚克涛胡涛.JavaebJ.[],,张申生基于平台和XML开发W应用[]计算机工28-程20021:5354.,()[70]刘芳珠,潘亦,潘金贵.基于H层网络架构及DOM的XML系统模型[J].小200-型微型计算机系统12212:14171420.,,()71]王戴娃,基于Android平台移动社交网络的设计与实现[D].大连海事大学,[2014.-烘- 微信公众互动平台的设计与实现致谢。光阴似箭,时光谨巧,研究生生涯转眼就要过去了在学业即将完成之际,我首先要对我的导师彭祝斌教授和粪曙光高工表达深深的谢意,感谢导师在研究生学习工作过程中对我的关怀指导和鞭策,导师严谨的治学态度W及脚踏实地的"工作作风都使我深受启迪和教诲一彭教授,借此机会向他说声,粪高工,辛苦’’了,谢谢!感谢周小尧、毛星亮、谢林霞等同事,能在繁忙的工作之余,和我探讨很多技术问题。在他们的帮助下,让我对微信公众平台开发技术有了更全面的认识,同时在软件开发过程中,帮我解决了很多技术难题。感谢刘冀、张泉森、甘宁、王平等同学,在我读研期间,他们在生活和学习上给予了我很多帮助。2016年6月--70 工程硕±学位论文附录A攻读学位期间发表的学术论文[1]《中国网络助政发展现状、问题与对策》入选中国社会科学院新闻与传播研究所主编的《中国新媒体发展报告蓝皮书(2014)》;2]《2014年中国网络助政发展报告》入选中国社会科学院新闻与传播研巧所主[编的《中国新媒体发展报告蓝皮书(2015)》-7-1 微信公众互动平台的设计与实现附录B攻读学位期间参与的科研课题1参与唐亚阳教授牵头的国家教育部重点项目攻关课题《加强和改进网络内容[]建设》-72-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭