《微信公众互动平台的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
学校代号10532学号G132660548分类号密级/爲,满為乂多HUNANUNIVERSITY工程硕±学位论文微信公众互动平台的设计与实现学位串请人姓名刘原培养单位软件学院导师姓名及职赖彭祝斌教授、裘曙光高级工程师学科专业软件工程研究方向传媒管理论文提交日期2016年5月 学校代号:10532学号;G132660548密级:满南大学工程硕±学位论文微信公众互动平台的设计与实现学位串请人姓名:刘厚导师姓名及职称:彭祝斌教授、冀曙光高级工程师控养单位:软件学院专业名赖=软件工穏论义扭交日巧:2016年5月论立答媒日巧:2016年6月6日答據委贵会主巧:向志强教授 TheDesi打andImlementatio打ofWeChatPublicI打fractiongpPlatformbyLIUHouB.E.CentralChinaNormalUniversit2000(y)athesissubmit化dinartialsatisfactionofthe民euirementsforthedereeofpqgMasterof£rigi打eeri打gin'neerSoftw扣eEngiingin地eGraduateSchoolofHu打a打UniversitySupervisorProfessorPENGZhubinSe打iorEnineerGONGShuGuanggJune2016, 湖南大学学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加W标注引用的内容外,本论文不包含任何’其他个人或集体已经发表或撰写的成果作品。对本文的研究做化董要贡献的个人和集体,均已在文中W明确方式标明。本人完全意识到本声明的法律后果由本人承担。^作者签名:日期;方年/月曰学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部口或机构送交论文的复印件和电子版,允许论文被査巧和借阅。本人授权湖南大学可将本学位论文的全部或部分内容编入有关数据库进行检索,可W采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于1、保密□,在年巧密后适用本授权书。2、不保密〇/,""(请在UJI上相应方框内打V)足若月^作者签名:曰期:年曰导师签名日巧如^年月^曰I 微信公众互动平台的设计与实现摘要20一微信是腾讯公司于11年1月推出的款为智能手机提供即时通信服务的免费应用软件,支持跨通信运营商、跨操作系统平台发送文字、图片、语音、视频等功能。微信公众平台通过开放接曰方式提供了与用户进行消息交互、自定义菜单交互等能力。目前,基于微信公众平台开发轻应用成为新的发展趋势,很多政、府、企事业单位纷纷开设微信公众号,开发微信新应用为群众客户提供信息化服务。微信服务因其移动性、便携性、个性化等特点深受广大用户的欢迎。针对网民开展网络社交活动的功能需求,本文提出基于微信公众互动平台开发框架,结合智能手机终端设备的特点,应用J2EE、HTML、XML、Webservice、Orcale数据库等相关技术,研究开发了微信公众互动平台。该微信公众互动平台实现了用户注册、发布活动、管理活动、发现活动、参与活动、会员管理、审核活动、精品活动等功能。论文使用用例图、流程图等对微信公众互动平台的功能需求进行分析,从系统的总体设计、技术架构、功能设计、工作流程设计、内外部接日设计、数据库设计等方面,详细介绍了微信公众互动平台的系统设计。并介绍了系统的数据库存储、徹信公众账号消息收发及自定义菜单、系统核屯业务功能等具体实现技术细节。、本文设计的微信公众互动平台,具有操作简便功能容易扩充、用户体验良好一、开发成本低等优点,具有定的应用和推广价值。关键词;互动平台微信公众;网络社交;手机开发II 工程硕±学位论文Abstract-WeChatisakindoffreeapplicatio打softwarewhichrovidesinstantcommunicaptionserviceforsmarthoneanditislaunchedbyTencentCompanyinJanuar2011.Itpysuortssuchfu打ctionsascrossi打gtelecomoeratorsandoerationsstemlatformsppppypbythewaofsendi打textsicturesaudiosandvideos.WeChatubliclatformyg,p,pprovidesitsuserswiththeabilityofmessageandcustomme打uinteractionthroughpopeninterfacemode.Atpresent,developingLightAppsbasedontheWeChatpubliclatformhasbecomea打ewdevelopment化end.Manygovemmentsenterrisesandp,pinstitutio打shaveoe打edWeChatublicaccountsdeveloednewWeChatalicationspp,ppptorovideinformationservicetotheublicanditscustomers.ppDuetoitscharacteristicsofmobilitortabilitandersonalizationandsoony,,pypWeChatservicehasbeenwarmlywelcomedbythemajorityofitsusers.Basedon^neitizensfunctionalreuirementstocarroutonlinesocialnetworkinactivitiestheqyg,a山:horhasresearchedanddevelopedtheWeChatpublici打teractionplatformwhichisbasedo打WeGhatublici打teractio打i泣tformdevelome打tframeworkcombi打edwithppp,thecharac化risticsofthesmartphoneteraii打aleuimentandthealicatio打ofqpppJ2EEHTMLXMLWebserviceOrcaledatabaseandotherrelatedkchnoloies.Ithas,,,,gachievedthefunctionsofuserregis化ation,publicationactivities,managementactivities,discoveryactivities,assessmentactivities,involvementactivities,membershmanaemena打duaacvesisaerusescasearamsan打owiptlittiiti.ThdidgqyppgchartstoanalzethefunctionalreuirementsofWeChatublicinteractionlatform.Ityqppgivesadetailedintroductionofthesystematicdesignofitfromtheaspectsof化eoverallsys化mdesign,化chnicalarchi化cture,functionaldesign,workflowdesign,iiUemalandexternali打化rfacedesinanddatabasedesin.Italsointroducessecificg,gptimleme打tationof化chnicalde化ilsofthess化maicdatabasesU)raeWeChatpyg,messaging,custommenuandsys化mcorebusinessfu打ctionsandsoon.Thedesig打oftheWeChatpublicinteractionplatformbasedonthisaerhastheadvantaesofppgsimleoerationeasexansio打offunctionsooduserexerienceandlow,pp,ypgpdevelopme打tcostThereforeithas化evalueofwidealicationandromotion.,pppKeyWords:WeChatPublicInteractionPlatform;SocialNetworking;MobilePhoneDevelomentpIII 微信公众互动平台的设计与实现目录学位论文原创性声明和学位论文版权使用授权书I摘要IIAbstractIll插图索引VII附表索引VIII第1章绪论11.1课题研究背景与意义11.2国内外研究现状113.3论文的研究内容1.4论文的结构安排4第2章关键技术52.1微信公众平台52丄1微信服务组成52丄2微信消息交互机制52.2微信公众平台接口62.2.1概述62.2.2文本消息627.2.3图片消息2.2.4地理位置消息82.3微信自定义菜单82.3.1自定义菜单类型82.3.2自定义菜单接曰102.4其它技术102.4.1J2EE1021.4.2MVC模式12.4.3XML122.4.4JSON132.4.5Webservice13214.5本章小结第3章微信公众互动平台需求分析153.1概述15IV 工程硕±学位论文3.2功能需求153.2.1用户注册153.2.2发布活动153.2.3管理活动163.2.4发现活动163.2.5参与活动183.2.6会员管理183.2.7审核活动183.2.8精品活动183.3其它需求183.3.1性能需求183.3.2安全性需求183.3.3可用性需求183.4本章小结19第4章微信公众互动平台的设计204.1总体设计204丄I设计思路204丄2总体设计204丄2总体架构204.2功能设计214.2.1用户注册224.2.2发布活动234.2.3管理活动234.2.4发现活动244.2.5参与活动254.2.6精品活动254.3接日设计264.3.1内部接口264.3.2外部接口264.4数据库设计264.4.1数据库设计原则264.4.2数据库需求分析274.4.3数据库概念设计274.4.4数据库逻辑设计274.5本章小结29V 微信公众互动平台的设计与实现第5章微信公众互动平台的实现305.1数据库相关功能实现305丄1H化emate实现对象存储305丄2数据库连接池335.2微信相关功能实现%5.2.1微信消息接收%5.2.1微信消息响应415.2.3微信消息处理445.2.4微信自定义菜单46、5.3核屯业务功能实现495.3.1会员注册495.3.2会员管理535.3355.发布活动5.3.4审核活动585.4系统测试巧5.4.1测试环境605.4.2测试内容615.4.3测试用例615.4.4测试结果625.5本章小结63结论与展望64参考文献66m70附录A攻读学位期间发表的学术论文71附录B攻读学位期间参与的科研课歴72VI 工程硕±学位论文插图索引图25.1消息的交互处理过程图3.1用例图15图3216.发布活动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图425.9精品活动设计图图4.10内部接口图26-R图图427.11数据库E图5.1出bernate架构图30图5.2Hibernate的运行流程31图5.3数据库连接池原理34图537.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图559.13审核活动处理流程图5.14审核活动界面图巧vn 微信公众互动平台的设计与实现附表索引表2.1接口参数意义6表2.2文本消息参数意义7表2.3图片消息参数意义7表2.4地理位置消息参数意义8表4.1TUSER用户表设计28_表4.2TROLE角色表设计28_表4.3TUSERROLE用户角色表设计28__表4.4TACTIVITY活动表设计28_表4.5TACTIVITYUSER活动参与用户表设计29__表5.2测试用例表61表5.3测试结果62VIII 工程硕±学位论文第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、Windowsphone等几大主流智能手机平台。目前。,基于微信公众平台开发轻应用成为新的发展趋势很多政府、企事业单位纷纷开设微信公众号,开发微信新应用为群众、客户提供信息化服务。截止""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查看开发人员社区上的资料,基于JavaScript的开放平台,开发人员可W在基于JavaScript的框架上进斤挂件(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、Webservice开一发、化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.1p^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、timestampH个参数字符串拼一接成个字符串。(3)微信应用开发者将得到的密文与signature签名进行对比,验证该请求P71是否微信服务器发送的。2.2.2文本消息用户通过登录微信平台发送文本消息,系统平台在收到用户的消息之后,根据需要回复文本消息给用户,构造成XML格式的数据包,文本消息具体表达格式如代码所示。<xml><ToUserName><!CDATAtoUser></ToUserName>[[]]<FromUserName><![CDATA[fromUser]]></FromUserName><Crea化Time>l348831860</CreateTime><MsTe><![CDATA[te?rt]></MTe>gyp]巧yp-6- 工程硕±学位论文<Content><!CDATAthisisatest></Content>[[]]<]VUgId>1234%78901234%</M^Id></xml>表2.2文本消息参数意义参数描述ToUserName开发者微信号一FromUserName发送方帐号(个Open瓜)CreateTime满息创建时间(整型)M巧TetextypContent文本消息内容M巧Id消息id,64位整型2.2.3图片泊息图片消息的表现张力是非常强的,并可把多种元素附带其中,用构造而成XML格式的数据包接收图文消息,具体表达格式如代码所示。<xm>l<ToUserName><!CDATAtoUser]></ToUserName>[[]<FromUserName><![CDATA[fromUser]></FromUserName>]<CreateTime>1348831860</CreateTime><MTe><!CDATAimae></MsiTe>^yp[[g]]gyp<PicUrl><!CDATA化isisaurl></PicUrl>[[]<><>M^Id1234%78901234%/M^Id</xml>表2.3田片消患#巧意义参巧描述ToUserName开发者微信号F一romUserName发送方帐号(个OpenID)CreateTime消息创建时间(整型)MsgTypeimagePicUrl图片链接Msgid消息id,64位整型--7 微信公众互动平台的设计与实现2.2.4地理位置消息用户要把自己所处的地理位置发送给系统,XML格式的地理位置消息的表达格式如代码所示。<xm>l<ToUserName><![CDATAtoUser></ToUserName>[]]<FromUserName><!CDATAomUser></FromUsierName>[的]]<Crea化e〉1351776360</Creaime>TimteT<MTe><!CDATAocation〉</MTe>口^yp["巧yp<LocationX>23.134521</LocationX>__<LocationY>l13.358803</TocationY>__<Scale>20</Scale><Label><!CDATA位置信息><化abel>[[U<MsgId>1234567890123456</MsId>g</xml>表2.4地理位置消息参数意义?^F一romUserName发送方帐号(个OpenID)CreateTime消息创建时间(整型)MsTelocationgypLocationX地理位置维度_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?accesstokenTOKENg__(3)自定义菜单删除接口:使用接口创建自定义菜单后,开发者还可使用接口删除当前使用的自定义菜单。在个性化菜单时,调用此接口会删除默认菜单及-.全部个性化菜单。http请求方式:hts://api.weixin.com/巧ibin/menu/delete?pqq=accesst;okenACCESSTOKEN—_2.4其它技术2.4.1J2EEva2一J2EE(JaPlatformEn化rriseEdition)是个为企业复杂应用环境设计的,pJava平台。J2EE创造了标准的可重用模块组件W及由于构建出能自动处理编程中多方面问题的等级结构,简化了应用程序的开发。J2EE提供了安全,事务管理,28【】JNDIJavaNaminand0如〇1;〇Interface)寻址远程连接等服务。(g巧,J2EE平台包含服务(Services)、应用程序接口(APIs)和协议,提供了相E一些常用的技术规范的简单描关功能支持开发基于Web的多层应用。J2E中的述如下:1、JDBCJavaDatabaseConnectivit:化6〔API为访问不同数据库提供了统(y)一一的接曰,JD,屏蔽了些细节问题。另外BC对数据库的访问也具有平台无关性。2、JNDI(JavaNameandDirectoryInterface);JNDIAPI被用于执行名字和目一NSLDAP录服务,。它提供了致的模型来存取和操作企业级的资源D和本地文件系统,或应用服务器中的对象。一3、E化巧n化巧riseJavaBean);EJB提供了个框架来开发和实施分布式商务逻辑,简化了具有可伸缩性和高度复杂的企业级应用程序的开发。EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用,。容器负责提供公用的服务例如目录服务,事务管理,资源缓冲池,安全性,容错性。4、RMI(RemoteMethodlnvoke):远程方法请求,艮MI是EJB使用的更底层--10 工程硕±学位论文的协议。在客户端和服务器之间采用序列化的方式传递数据,RMI协议实现了调用远程对象上的方法。一5、JavaIDL/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、JavaServlet: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向上层支持avaTransactionAPI规范,向下层实现Java印、j象OMGOTSspecification。JTS为应用程序服务器、资源管理器等提供基本的事务服务。11、JavaMail:JavaMail定义了邮件服务器收发邮件的开发接口,它提供了实现邮件服务器相关协议的类,同时支持SMTP、IMAP两种服务器。12、JAFJavaBeansActivationFramework:JAF是JavaMail处理MIME编码()的邮件附件时使用的构件。通常大多数应用程序不直接使用JAF,因为MIME的字节流可W被直接转换成ava对象。j2.4.2MVC模式MVC全名是Mode——lViewController,是模型(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.3XMLXML即可扩展标记语言一,是标准通用标记语言的子集,是种用于标记电子文档使其具有结构性的标记语言一种允许用户定义他们的标记语言的源语。它是言一,可W被用来标记数据。它提供统的描述方法,独立于应用程序的结构化数据的交换,非常适合于万维网传输,任。XML语言的简单易用何应用程序可W中用XML语言来读写数据,XML语言迅速成为通用的数据交换的语言。虽然Windows、MacOS、LinuxW及其它平台的很多应用软件也支持不同的数据交换格式,但不久之后它们都开始支持XML语言。这样,使用XML语言的程序可W更容易的与其它操作系统平台下所产生的信息进行交互,应用程序可W很容易加载U"XML数据使用,并将运行结果转换为XML格式。XML由3个部分构成,它们分别是cumenTeet,:文档类型定义(DotypDfiniionDTD),即XML的布局语言;可扩展的样式语言(ExtensibleStyleLanguage,X化),L的样式表(ExtensL,即XM语言;W及可扩展链接语言ibleLinkangimgeXLL)。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.4JSONbeca一JSOJavaScriptOtNottion)是种轻量级的数据交换格式。它基于Wj—e一JavaScript(StandardECMAJ623rdEditionDecembr1999)的个子集。JSON采一用了完全独立于语言的文本格式,使得JSON成为种良好的数据交换语言。它不但易于人工阅读与编写,同时也易于电脑解析和生成。JSON将JavaScript对象一中表示的一应用程序的不同的函数之间组数据用字符串保存,在同、或者在客户端应用程序与服务器端应用程序之间传递这个字符串所保存的JavaScript对象。W因为JSON字符串使用的结构简单,JavaScript可W很快速的解析JSON字符串。JSON使用对象和数组这两种结构,通过这两种结构可W表示各种复杂的结构。""1、对象:对象在JSON中表示为0括起来的内容,数据格式为{关键字:值...的键值对的结构。在面向对象的语言中.ke,使用对象获取对象的属性值,,}y属性值包含数字、字符串、数姐、对象几种。"""’2、数组:数组在JSON表示为括起来的内容,数据格式为[对象IV[]"""对象23...,。属性值包含数字、字符串、数组、对象,使用索引获取数组中的值,]对象几种。2.4.5Web化rvice一webrvWebseice是个平台独立的、自包含的、低锅合的、基于可编程的的应用程序,可使用开放的XML标准来描述、发布、发现、协调和配置这些web应用程序,用于开发分布式的互操作的应用软件。WebService技术使得运行在不同设备上的不同应用程序,便捷的进行数据交换。按照WebService规范开发的不同应用程序,不管使用化么开发语言、操作eb一系统、私有协议,都可W相互交换数据。WService使用些通用的行业规范、--13 微信公众互动平台的设计与实现成熟的技术XML、HTTP等,所W很容易部暑。WebService减少了开发不同应用程序之间的接口费用一,为多个企业、组织之间的业务流程的集成提供了个通U21用机制。WebService平台使用SOAP、WSDL、UDDI等协议来实现分布式应用程序的开发。不同的平台都有不同的数据表示方法和类型等。WebService平台提供了一、套标准的类型系统,用于实现不同操作系统平台不同编程语言、不同组件模型中的信息交互。这些协议有:一1、SOAP:SOAP巧impleObectAccessProtoco是种基于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、Webservice等技术。--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巧巧巧Bkies20巧满巧巧妖嫂巧..輯鹽巧1玄色索堀繩媒义4禪货10带旬泌聲4*?20?巧n資巧光巧乐化巧巧1S全鹽巡演长沒站烫窗巧I蔭'39野忡泳.巧瞥潍》1術;;;臟Ife琴4月4因【巧巧王】十巧周年巡巧化沙站簿蠻骄MBKHmmI?;3文史醒?这滯増3截;坛净:巧图3.3活动列表(2)活动详情一用户点击条活动信息,可W在新的界面显示活动的详细信息。4月""11曰反光^资乐队幻《宾2015全国巡演长沙站严…。。_23。。^^01.*<2一*供化與茲1:^少链ei段:镑麻0JS为愣1^6^巧振牵OUSE.%1B46LIVENOUSE?zl^S‘;东'谦乐苗診f1‘苗活动照片(0)活巧介绍巧间:2015年4冯11B觸六晚t吃点:4M1VEHOUSE巧价:100悚话/120现巧株J巧巧化:bup_;//Ugm:Jg谷te致私C巧ro/Jtgnxh=i0Q.gtim?写树T仪.aEecMP&过4390日315J弓3—"20反光.巧乐目人巧巧15全戲巡巧奶輯新賊藉巧"".|編―!图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总体设计(微信公众互动平台的总体架构如下图所示,分为前台用户层后台用户层)、中间层、应用层。普通用户使用微信客户端访问微信公众账号,相关请求通过中。间层的微信服务器,转发给应用层的微信公众互动平台微信公众互动平台后台。处理好相关请求后,响应信息通过中间层的微信服务器,转发给微信客户端后台管理员直接通过浏览器与应用层的微信公众互动平台进行信息交互。前台用户层中间层应用层后台用户层II||IIIII1IIIIIIIIIIIJII发请求转发请求?Iii每:贷二转发响应发送响应I!1!普通用户I谢样服义巧微信公众后台管理员巧悟化秀巧互动平台j馈信客户巧I1电巧规览器!I{tIIIIIIIIIII14图.1平台技术架构图4.1.3总体架构、微信公众互动平台总体架构如图4.2所示应用,是由基础设施层、数据层支撑层、应用层、展示层等多层构建的综合平台,系统安全保障体系和标准及规-20- 工程硕±学化论文范体系贯穿于各个层面中。惦不层教組镇絲摩、W谢如台蒋理活动活动活动活动管理活动I化1II!..安^——r— ̄-.….…‘TJIIr?-一W统I应用缔权内巧单点I:作流通用防支撑层户巧巧解巧巧传却进录引帶报表御心孚八1iViII]罕i^数据层*I?',三;电的f基础网络妓IT资产系统软件R设施层基础设施III图4.2总体架构图(1)基础设施层包括网络、存储、系统软件、主机等网络硬件支撑平台。(2)数据层一、立数据业务模型,遵循统W微信公众互动平台数据库为核屯,建的数据库编码规范和标准,便于实现数据共享。(3)应用支撑层提供了工作流引擎、报表引擎、消息引擎、数据访问、内容管理、目录服务、单点登录等基础功能组件。(4)应用层提供用户注册、发布活动、管理活动、发现活动、参与活动、会员管理、审核活动、推荐精品活动等功能。(5)展示层包括了微信公众互动平台的微信自定义菜单、WEB后台管理。4.2功能设计微信公众互动平台的功能设计如图4.3所示,分为前台用户侧功能模块和后--21 微信公众互动平台的设计与实现台管理功能模块。前台用户侧功能模块包含用户注册、发布活动、管理活动、发现活动、参与活动等功能,后台管理功能模块包含会员管理、审核活动、推荐精品活动等功能。微惜公众I吃动f台I11'—.‘前台用户侧后台管理II功能模块功能模块II...1K,,推用发管发参会审荐户布理现与员核精注活活活活管活品册动动动动理动活动图4.3功能设计图4.2.1用户注册用户注册流程如图4.4所示,需要用户、系统、管理员S方配合,用户提交注册信息后,系统保存用户信息。管理员审核用户信息,如果审棱通过,则修改用户状态,用户注册成功,如果审核未通过,则提示用户注册失败。mm管理员IIIIT知请注册)占交注册信思〔)食待审咬(保存吉户信息、I审4^舍户信息()注功(^f修改用户状态^巧过I]?提示用户注册失败)图4.4用户注册设计图-22- 工程硕±学位论文4.2.2发布活动4.5所示、、发布活动流程如图,需要用户系统管理员H方配合,用户提交。活动信息后,系统保存活动信息管理员审核活动信息,如果审核通过,则修改活动状态,,发布活动成功如果审核未通过,则提示发布活动失败。Mm管理员^ii交巧动值適(\子>^宁审核动搞息读击為成功修改巧动状态来碰过規沪披品苗幼失^45图.发布活动设计图4.2.3管理活动4.6所示、管理活动流程如图,需要用户系统、管理员H方配合,用户先选择活动,修改活动信息后,系统保存活动信息。管理员审核活动信息,如果审核,。通过,则修改活动状态发布活动成功,如果审核未通过,则提示发布活动失败--23 微信公众互动平台的设计与实现—攝瞥賴员IIII丄选棘巧巧巧活巧^(綠改滿魂渣嫁)、輸W审核巧动情為.it巧迸\^k布活动成巧—■ ̄^—i#巧巧动巧态<<(()>亲迎过^参品占品扫强蝴-衣句非图4.6管理活动设计图4.2.4发现活动、、发现活动流程如图4.7所示,注册用户可W按照活动时间活动地点活动类型等条件进行活动检索,系统将满足查询条件的活动信息返回给用户。系统\|/选巧否^《件〔)^交造^信息^i图4.7发现活动设计图-24- 工程硕±学位论文4.2.5参与活动参与活动流程如图4.8、所示,注册用户可按照活动时间活动地点、活动类型等条件进巧活动检索,选择要报名参与的活动,系統保存用户参与活动的信息,并提示用户参与活动成功。\b选择活动()^报名参与活动)i4图.8参与活动设计图4.2.6精品活动精品活动流程如图4.9所示,,系统管理员先选择活动将其中部分活动设为。精品活动,并推荐给用户管理员m?nI/选择活动()W〔设g铸品活动)今保存活动信息査品品活动(^))图4.9棟品活动设计图-25- 微信公众互动平台的设计与实现4.3接口设计4.3.1内部接口JJA内部接口主要是展示层、业务层、数据层之间的接口,包含SP网页调用VAEJB封装好的实现业务功能的接口,JAVAEJB调用数据库提供的JDBC数据库接口等。展示层I业务层i巧据层III1I?>IIIIIIIIII调用务类调^JDBC11接数据接口P阵SP?JAVAEJB—?J网页数据库{1IIIIII*1"IIIIIIIIIIIIIIIt410图.内部接口图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.PKIfiiJD?6主I知—活动参与用户表,r——化祖^用户名称PKiD禍名称I|—— ̄ ̄r肖巧^—二活动类型:斗 ̄PKMm用户性别活动mmID ̄用尸II叫flP綱参辅巧D活动内容角色类型《帛制)賴活动时间靴那制活动地点)目A*能娜办公电话活动图片I用户状态活动状态用户巧分活动级别登陆状态活动感兴巧用户用户登录数活动报名用户登陆时间发起活动的用户4-图.11数据库ER图4.4.4数据库逻辑设计根据微信公众互动平台的业务需求,数据库设计主要有用户表、角色表、用户角色表、活动表、活动参与用户表等,具体数据库表字段设计如下。-27- 微信公众互动平台的设计与实现表4.1TUSER用户表设计_字段名称字段类型长度备注TDJJSERJDNUMBER22用户瓜TDUWRNAMEVARCHAR2200用户名称__TDUSERTYPEVARCHAR210用户类型__TDUSERSEXVARCHAR2100用户性别__TDUSERPWDVARCHAR240用户密码__TDUSEREMAILVARCHA民2100邮箱__TDUSERPHONEVARCHAR2100手机号码__TDUSERTELEVARCHA艮2100办公电话__TDUWRSTATEVARCHAR210用户状态__TDUSERLEVERNUMBER20用户积分__TDUSERLOGINNUMBER20登陆状态__TDUSERLOGINCOUNTNUMBER22用户登录数___TDUSERLOGINTIMEDATE100登陆时间___表4.2TROLE角色表设计_字段名称字段类型长度备注TDROLEJDVARCHAR222角色ID_TDROLETYPEVARCHAR2200角色类型__TDROLENAMEVARCHAR210角色名称__TDROLEPOWERVA民CHA民2100巧色权限__表4.3TU化民ROLE用户角色表设计__字段名称字段类型长度备注IDNUMBER50编号TDROLEDVARCHA民250角色编号__JTDUSERIDNUMBER22用户编号__表4.4TACTIVITY活动表设计_字段名称字段类型长度备注TDACTIVITYJDNUMBER22活动ID_TDACTIVITYNAMEVARCHAR2200活动名称__-28- 工程硕±学位论文续表:字段名称字段类型长度备注TDACTIVITYTYPEVA民CHAR250活动类型__TD_ACTIVITY_MEMOVARCHA民2500活动简介TDACTIVITYCONTENTVARCHAR2500活动内容__TDACTIVITYTIMEDATE100活动时间__TDACT1VITYADDRESSVARCHAR2500活动地点__TDACTIVITYPICBLOB500活动图片__TDACTIVITYSTATEVARCHA民210活动状态__TDACTIVITYLEVERVARCHAR210活动级别__TDACTIVITY_INTERESTNUMBER22活动感兴趣用户_TDACTIVITYCOUNTNUMBER22活动报名用户__TDACTIVITYUSERVA民CHAR2100发起活动的用户__表4.5TACTIVITYUSER活动参与巧户表设计__字段名称字段类型长度备注IDNUMBER22IDTDACTIVITYIDNUMBER22活动瓜__TDUSERIDNUMBER22参与用户ID——TDACTIVUYCOMMENTVARCHAR250活动评价__TDACTIVITYPICBLOB500活动图片__4.5本章小结本章首先介绍了微信公众互动平台的设计思路、总体设计、总体架构,然后重点对功能设计中的用户注册、发布活动、管理活动、发现活动、参与活动、精品活动等功能流程进行设计,接着介绍了平台的内部接口、外部接口设计,最后从数据库设计原则、需求分析、逻辑设计、物理设计H个方面介绍了平台的数据库设计。-29- 微信公众互动平台的设计与实现第5章微信公众互动平台的实现5.1数据库相关功能实现5.1.1H化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部er1UfecC??…C從鸿言能邸:W!Va&teab心-ieH^不品而|?].tw膽Lay知在、…州品品I1!^知巧Trs讯紛ctiQ。cry的CmtfsonluoiI|g||1^IJNDlJDrJCJTAj!j■wnwn…"""nmi,,i"川"ir"wjatagwagsrinTIW在|—一—一 ̄——一■一一一图5.1H化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巧义件1HT—.……HMiimc乂I?Cl咕.X放tmftgraii白n'ISctuBciirssFaly捕文件I***i.hbm.xmi您詢jj^’Sessoni^々lie。^支- ̄y策4—?巧义孜巧#图5.2Hibernate的运行流程(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打toeratepp;--31 澈信公众互动平台的设计与实现(7)化ssioii.getTransaction〇.commit〇;//提交数据库会话事务(8)关巧会话session;(9)关闭会话工厂sessionFactory;一e本系统创建个H化ernateUtil帮助类(hlperclass)来负责启动排bemate并使操作Session变得容易。这个帮助类将使用被称为ThreadLocalSession的模式来保证当前的单元操作和当前线程相关联。*imortor.hibemate.pg;*importorg.hibernate.cfg.;ublicclassHibernateUtilp{publicstaticfi打alSessionFactorysessionFactory;static{try{//CreatetheSessionFactoryfromhibernate乂f.xmlg=sessionFactor打ewyCon巧uration乂onfiure.buildSessio打Factor;gQgQyO}catch(Throwableex){//Makesureoulotheexcetionasitmihtbeswallowedygp,g""System.err.pri打tlnInitialSessionFactorcreationfailed.ex(y);thrownewExcetioninl凸itializerErrorexp();}}=publicstaticfinalThreadLocalsessionnewThreadLocal();publicstaticSessio打currentSessio打0throwsHiberaateException{=SessionsSessionsession.et()gO;//Oe打anewSessio打ifthisthreadhasno打eetp,y==ifsnull(){=ssessionFactor.oe打Sessio打0yp;//StoreitintheThreadLocalvariablesession.sets();}returns;}publicstaticvoidcloseSessio打0throwsH化ernateExcetionp{=Sessio打sSessionsessio打.et()g〇;=ifsnu!ll()-32- 工程硕±学位论文s.closeQ;session.set(null);}}?HibernatectionMana;本系统使用来加载和存储对象,编写了Ager类imortorh化ema化.Trani.sactonpg;imortor.h化ernate.Sessionpg;imortava.util.Datep;jpublicclassActionManager{publicstaticvoidmain(String[]args){=ActionManagermgrnewActionManagerO;""ssreifars0.eual化(g[]q()){""mr.createAndS化reActionMActionnewDateg(y,〇);}HeonFac化化ernateUtil.sssiry.closeQ;}}privatevoidcreateAndS化reAction(Stringtitle,Date化eDate){=SessionsessionH化ernateUtil.currentSessionQ;=Transactiontxsession.beinTransactiong();=ActiontheActionnewAction();也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(^J5池原理图.3数据库连接编写连接池需实现ava.sql.DataSource接口。DataSource接曰中定义了两个j重载的etConnection方法:ConnectiongetCon打ectionQ、Co打打ectio打getCo打nectiongStri打usernameStrinassword。(g,gp)实现DataSource接曰,并实现连接池功能的步骤如下;在DataSource构造函数中批量创建与数据库的连接,并把创建的连接加入LinkedList对象中。实现getConnection方法,让getConnection方法每次调用时,一从LedListectionink中取个Conn返回给用户。当用户使用完ConnectionConnection.closeQ方法时Collection,调用,对象应保证将自己返回到LinkedList中,而不要把conn还给数据库。Collection保证将自己返回到LinkedList中是此处编程的难点。本系统中实现数据库连接池的核也代码如下;timoitava.io.InuStreampjp;mortava.ioPrintWri化ri.pj;tonerimortava.lan.reflect.InvocaiHandl;pjgimortavalan.reflect.Method.pjg;imortava.p.la打reflect.Proxjgy;importava.sl.Co打打ectio打jq;-34- 工程硕±学位论文imortava.sl.DriverManagerp;jqimportjava.sql.SQLException;imortava.util.LinkedListpj;imoavauilroerirt.t.Ptespjp;imoravaxl.DaSourcet.stapjq;ublicclassJdbcPoolimlementsDa化Sourcepp{<>=privatestaticLinkedListConnectionlistConnectionsnewLinkedList<Connection>;()static{=InputStreamin""JdbcPool.class.getCIassLoader().get艮esourceAsS杜eam(db.properties);=PropertiesronewProertiespppQ;化y{rolin.oadpp();""S=tri打driverro.etProertdrivergppgpy();""=Stringurlprop.getProperty(url);=""S杜ingusernamero.getProperty(useraame);pp""=Stringpasswordprop.getProperty(password);intdbcPoolInitSizej""=n化erseIntroeProedbcPoolniSizeIr.a.trt(It^;gp(ppgpyjClass.forNamedi:iver();=<++for^nti0;ijdbcPoolInitSize;i){C=onnectionconnDriverManaer.etConnectionurlgg(,username,password);""System.out.println(获取到了连接+conn);listConnections.addconn();}catchExcetione}(p){thrownewExceptionlnlnitializerError(e);}}publicConnectiongetConnection()throwsSQLException{>0iflistConnections.size(()){=nfinalConnectionconnlistConections.removeFirst();--35 微信公众互动平台的设计与实现""Sys化m.cmLprintln(listConnections数据库连接池大小是+listConnections.sizeO);return(Connection)Proxy.newProxylnstanceydbcPool.class.getClassLoaderO,conn.etClassQ.etln化rfacesOewInvocationHandlergg,n(){ublicObectinvokeObectroxMethodmethodObectarspj(jpy,,j[]g)throwsThrowable{""ifs!me化od.etName.eualclose(g〇q()){returnmethod.invokeconnars(,g);else}{listConnections.add(conn);"System.out.printlnconn+被还给listConnections("数据库连接池!);"System.out.println(listConnections数据库连接池"大小为+listConnections.size〇);returnnull;}}});else}{""也rownewRuntiineExcetion对不起(,数据库忙)p;}}publicConnectionetConnectionStrinusernameStrinasswordg(g.gp)throwsSQLException{returnnull;}}5.2微信相关功能实现5.2.1微信消息接收当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。接收的消息类型有6种:,分别为文本消息、图片消息、语音消息、视频消息、地理位置消息、链接消息。-36- 工程硕±学位论文微信接收消息的类设计如图5.4所示,BaseMessage是消息接收的基础类,TextMessage(文本消息)、ImageMessage(图片消息)、LinkMessage(链接消息)、VoiceMessage(语音消息)、LocationMessage(地理位置消息)等都是BaseMessage的子类。Ba化Mess&gc-ToU化rName-FromUerNames-CrealeTime-MsgType-MsidgZ\AZ\TextlMessageImaeMesaeLinkMessaegsgg\oiceMessageLocationMessage--Content---icUrlTitleMedpialdLocationX_--Descr-itionFormatLocaptionY_^^-^Url-Scale-Label图5.4微信接收消息类本系统实现微信消息接收的核必代码如下;//BaseMessae是消息接收的基础类g。publicclassBaseMessage{rvatetrnpiSigToUserName;privateStrinFromUserNameg;privatelongCreateTime;privateStringMsTegyp;privatelongMsgid;publicStringetToUserNameg(){returnToUserName;}publicvoidsetToUserNameStrintoUserName(g){=ToUserNametoUserName;}publicStri打getFromUserNamegO{returnFromUserName;}-37- 微信公众互动平台的设计与实现publicvoidsetFromUserNameS打i打fromUserName(g){N=FromUseramefromUserName;}ubliclo打etCreateTimeOpgg{returnCreateTime;}publicvoidsetCreateTimeyo打gcrea化Time){C=reateTimecreateTime;}publicStringgetMs;gType〇《returnMsgType;}ublicvoidsetMsTeStrinmsTepgyp(ggyp){=MsemsegTypgTyp;}ubliclongetMIdpg巧〇{巧化rnMId巧;}publicvoidsetMsgId(longmsgid){=Msgidmsgid;}}//TextMessage是接收文本消息的类。publicclassTextMessageex化打dsBaseMessage{rivateStrinContentpg;publicStri打ggetContentO{returnContent;}ublicvoidsctGo打te打tStri打CO打te打tp(g){C=ontentcontent;}}//ImageMessage是接收图片消息的类。publicclassImageMessageexte打dsBaseMessage{privateStri打icUrl;gp-%- 工程硕±学位论文ublicStrinetPicUrlQ{pggreturnicUrlp;}publicvoidsetPicUrl(StringpicUrl){=this.icUrlicUrlp;p}}八-LinkMessage是接收链接消息的类。publicclassLinkMessageextendsBaseMessage{rivateStrinTitlepg;rivateS化inDescritionpgp;privateS杜ingUrl;ublicStringtTitlepgeQ{returnTitle;}ublicvoidsetTitleStrintitlep(g){=Titletitle;}ublicStringetDescritionpgp(){returnDescritionp;}publicvoidsetDescriptionStrindescrition){(gp=Descritiondescritionpp;}publicStringgetUrl(){returnUrl;}ublicvodselSiurlpitUrtrn(g){U=rlurl;}}//VoiceMess巧e是接收语音消息的类。publicclassVoiceMessageextendsBaseMessage{rivateStringMedialdp;-巧- 微信公众互动平台的设计与实现rivateStri打gormatpF;publicStringgetMediaId(){returnMediald;}publicvoidsetMediaIdStrinmediald(g){M=edialdmediald;}ublicStrinetFormatpgg(){returnFormat;}publicvoidsetFormat(Stri打gformat){=oFormatfrmat;}}//LocationMessage是接收位置消息的类。ublicclassLocationMessageextendsBaseMessagep{privateStringLocationX;rivateStrinLocationYpg;privateS化ingScale;rivateStri打abelpgL;publicStri打ggetLocation—X(){returnLocationX;_}publicvoidsetLocationXS化i打locationX—(g){L=ocationXlocation_X;}ublicStringetLocationYpg_(){returnLocationY;}ublicvoidsetLocationYStrinlocationYp—(g){=LocationYlocationY;—}publicStringgetScaleO{returnScale;}-40- 工程硕±学位论文publicvoidsetScaleStri打scale(g){=Scalescale;}publicStringgetLabelO{returnLabel;}ublicvoidsetLabelStrinlabel)p(g{L=abellabel;}}5.2.2微信消息响应一对于每个POST请求,开发者在响应包(Get)中返回特定XML结构,对(现支持回复文本该消息进行响应、图片、图文、语音、视频、音乐)。微信消息响应的类设计如图5.5所示eMessae,Basg是消息响应的基础类,TextMessage(文本消息)、MusicMessage(音乐消息)、NewsMessage(新闻消息)、等都是BaseMessage的子类。BaseMessaeg-ToUserName-FromU巧rName-ea化QTime-MsTegyp-Msgid-FuncFIag币TextMessaeMusicMessaeNewsMcssafggg-Con--tentMusicArlicleCount-Articles围5.5微信消患巧应类本系统实现微信消息响应的核也代码如下://BaseMessage是消息响应的基础类。publicclassBaseMessage{rvatetrnToUserNameiSipg;rivateStringFromUserNamep;rivatelongCreateTimep;-4-1 微信公众互动平台的设计与实现rivateStrinMsTepggyp;rivateintFuncFlagp;ublicStrinetToUserNamepgg(){returnToUserName;}ublicvoidsetToUserNaineStri打化UserNamep(g){=ToUserNametoUserName;}ublicStrinetFromUserNamepgg(){returnFromUserName;}publicvoidsetFromUserNameStringfromUserName(){F=romUserNamefromUserName;}publiclonggetCreateTimeO{returnCreateTime;}publicvoidsetCreateTimeloncreateTime(g){C=reateTimecreateTime;}ublicStringetMsgTypeQpg{returnMsgType;}publicvoidsetMsgType(StringmsgType){=MsgTypemsgType;}ublicintetFuncFlapggO{returnFuncFlag;}publicvoidsetFuncFlag(intfuncFlag){=FuncFlafuncFlagg;}}//TextMessage是文本消息响应的类。publicclassTextMessageextendsBaseMessage{-42- 工程硕女学位论文rivateS化i打Contentpg;ublicStri打etContentOpgg{returnContent;}publicvoidsetContent(Stringcontent){C=ontentcontent;}}八NewsMessage是新闻消息响应的类。publicclassNewsMessageextendsBaseMessage{rivateintrticleCAountp;rivateList<Article>Articles;ppublicintgetArticleCount(){returnArticleCount;}publicvoidsetArticleCount(intarticleCount){=ArticleCountarticleCount;}publicList<Article>etArticles()g{returnArticles;}publicvoidsetArticlesList<Article>articles(){=Articlesarticles;}}//MusicMessage是音乐消息响应的类。publicclassMusicMessageextendsBaseMessage{rivateMusicMusicp;publicMusicgetMusicQ{returnMusic;}publicvoidsetMusicMusicmusic(){Mu=sicmusic;}}-43- 微信公众互动平台的设计与实现5.2.3微信消息处理微信公众互动平台消息处理流程如图5乂所示:首先,微信公众互动平台接收微信服务器发送的XML消息并解析XML消息,对合法的请求调用相关业务模块进巧处理,,然后将处理结果封装成XML消息最后返回XML响应消息给微信服务器。开始—_i接收XML消II息并解析息是言\否^法?^了是i调用消息I请求业务iXML消息封装返回XML响应消息i结束图5.6微信消息处理流程微信服务器将用户发送的消息通过POST方式提交给开发者在接曰配置信息ve中填写的URL,在U化所指向的请求处理类CoreSerlt的doPost方法中处理消e、息。本系统编写了WixinchatServlet类实现接口消息处理等管理功能,核屯代码如下:ackaeWeixi打chat.servletpg;imortava.io.BufferedReaderp;jimortava.io.IOExcetio打pjp;-44- 工程硕±学位论文impoitava.io.InutStream;jpimportjava.io.InputS化eamReader;importava.io.OutputStream;jimportjavax.servlet.ServletExceptio凸;importavax.servlet.http.HttServlet;jpimoravaxserle.h.rvleeuest.vtttHttSetRt;pjppqimortavax.servlet.ht巧.HttServletResonsep;jppimortweixinchat.rocess.WechatProcesspp;publicclassWeixinchatServletextendsHttpServlet{//处理httpet请求gpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,lOException{""re-uest.setCharacterEncodin(UTF8qg);""0-化31186.化祀113化(:16[6]10〇北1111了?8口3();=StrinBuffersbnewStrinBuffergg();=*In山Streamisieuest.etln山StreampqgpQ;=""ername-In山StreamReadisrewIn山StreReadrisUTF8p(;p,)=Buffered民eaderbrnewBufferedReader(isr);=Strinsgw==hilesbrreadLine!null(.)){(Osb.aendspp();}=StringxmlsbJoStringO;=Stringresult""S=trinechostrreuest.etParameter(echostr)gqg;=>if(echostr!null&&echos比leng化()1){=res山techostr;else}{=resultnewWechatProcess.rocessWechatMaxml()pg();}try{Ou=tputstreamosresponse.etOututS杠eam;gp〇""-os.writeesult.etBtesUTF8(rgy());os.flush化os.closeQ;-45- 微信公众互动平台的设计与实现}catch(Exceptione){e.printStackTraceQ;}}//处理httpost请求ppublicvoiddoPostHttServletReuestrequestHtServl別民escmseresonse(pq,ppp)throwsServletException,lOExceptio打{doGetrequest,resonse);(p}}//格式化微信接日的XML响应信息publicclassFormatXmlProcess{ublicStrinformatXmlA打swerStrintoStrinfromStri打conte打tpg(g.g,g){=Stri打gBuffersbnewStringBuferO;=DatedatenewDate();""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)returnsbJoStringO;}}5.2.4微信自定义菜单微信自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。本系统为了方便维护自定义菜单,编写了WeixinMenuTool类实现创建菜单、删除菜单等管理功能,核也代码如下://WeixinMe肌Tool类实现菜单管理功能publicclassWeixinMenuTool{-46. 工程硕±学位论文privatestaticStringetAccesstokeng_(){.|"S=trinAPPIDg;=""S化inAPPSECRETg;=Stringurl""h-==+tts://ai.weixin..com/cibin/token?rantteclientcredential?&:aidppqqgg_yp_pp"’’APPID+&secre户+APPSECRET;=S化ingaccessTokennull;巧{=U民LurlGetnewU民Lurl();H=ttU民LConnectionhttpp(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=mItStrishtt.etInutStreappgp();=i打tsizeis.available〇;=ebtesonBtes打ewbtsizey[]jyy[];is.readso打Btes();jy""=messa-S化inggenewStrin(sonB化sUTF8gjy,);=mJSONObectdemoJsonnew化ONObectessaejj(g);""=accessToke打demoJson.getString(access_toke打);Sys化m.out.println(message);}catch(Exceptione){e.rintS化ckTraceQp;}returnaccessToken;}//创建菜单功能ublicstaticStrincreateMenupg(){""’"""""""=S化ingmenu{\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打accesstokenetAccesstoke打g_g0;=Stringactio打-47- 微信公众互动平台的设计与实现"="https://api.weixin.qq.com/cg^bin/menu/create?accesstoken+accesstoken;__巧{URL=urlnewURL(action);=URLCHttURLConnectionhttHttonnectionpp(p)url.openConnectionQ;""htt.setReuestMe化odPOSTpq();""""---www-urhtt.setReuestProertyCorUentTealication/xformlencodedpqp(yp,pp);htt.etDoOtttrupsupu(e);seouuehtt.tDInttrpp();http.connectO;=uO山山Streamoshtt.etOtiUS仕eamppgp〇;""menu-os.write(.e化tes(UTF8gy));os.flushQ;os.clo化();=uInutStreamishtt.etIntS化eam〇ppgp;=intsizeis.available();=byte[]jsonBytesnewb5^;e[size];isdnBt.reasoes(jy);""=S杜mesaiewses-inseiS化inonBtUTF8ggg(y,);j""re化rn返回信息+message;catchMalformedURLExcetione}(p){e.rintS化ckTraceQp;cakhOExcetione}yp){e.rintS化ckTraceQp;}""re化m灯eateMenu失败;}//刪除菜单功能publicstaticStringdeleteMenu(){en=StringaccesstoketAccesstoken_g_();"=rinacionhsweixnm/-Stttt://ai/ee?g.i..cocibin/menudeltppqqg"=+aaccess_tokenccess—token;化y{-48- 工程硕±学位论文=URLurlnewU反Laction();=HttURLConnectionhttppHUU民LConnectionurl.oenConnection(p)pQ;""http.setRequestMe也od(GET);""""---seeuesoe-httrt:eneaicwwwfonnurencoded.tRtPrCon1tTyplation/xlpqpy(,pp);htt.setDoOututtruepp();http.setDoInput(true);""Sys化m.setPropertysun.net.client.defaultConnectTimeout(,""30000);""""Sys化m.化tProperty(sun.net.client.defaul化eadTimecmt,30000);http.connectQ;=OutputStreamoshtt.etOututStreampgp();os.flushQ;os.closeQ;=InputStreamishttp.getInputS化eam();=intsizeis.available();=b化sonB化snewbtesizey[]jyy[];is.read(sonBtes)jy;""=Str-inmessaenewS化m(sonBytesUTF8gggj,);""KturndeleteMenu返回信息:+message;catchMalformedURLExcetione}(p){e.rintStackTracepO;}catch(lOExceptione){einSckTrace.rttaOp;}""re化radele化Menu失败;}}5.3核心业务功能实现5.3.1会员注册会员注册处理流程如图5.7所示:首先,用户提交会员注册信息后,系统检查数据的完整性、合法性,对合法的会员注册信息,系统保存会员注册信息,最后返回会员注册是否成功的处理结果。-49- 微信公众互动平台的设计与实现开始i提交会员I注册信息义是?保存会员注册信息W返回处理结果2结束5图.7会员注册处理流程""""",会员注册界面如图5.8所示用户填写好用户名称、用户性别、用"""""""""户密码、手机号码、办公电话、邮箱、兴趣爱好等信息,点击""按钮提供注注册册信息。巧户倍息州户名称'X。。'^州户作别W^—xX州户密码. ̄'""邮巧 ̄j;i;zzr…一一手化号码^知'公化话.::IZIIIII’一…—一兴趣巧好言 ̄ ̄ ̄ ̄liw图5.8会员注册界面图实现会员注册功能的核也代码如下:Userinfo类实现单个用户信息的保存。publicclassUserinfo{privateStringUserName;rivateStri打gSexp;--50 工程硕±学位论文rivateS化ingasswordpP;privateStringMobilePhone;rivateStrin了clePhonepg;privateStringEmail;privateS化i打gHobby;ublicStringetUserNamepg(){returnUserName;}publicvoidsetUserName(S化i打gsUserName){=UserNamesUserName;}publicStringgetSexQ{returnSex;}ublicvoidsetSexStrinsSexp(g){=SexsSex;}ublicStrinetPasswordpgg(){returnPassword;}publicvoidsetPasswordS化i打sPassword){(gP=woasswordsPassrd;}publicStringgetMobilePhone(){reUiraMobilePhone;}publicvoidsetMobile化one(StringsMobilePhone){M==obilePhonesMobilePhone;)publicStringgetTelePhoneQ{returnTelephone;}publicvoidsetTelePhoneStrinsTelePhone){(gT=elephonesTelePhone;}-5-1 微信公众互动平台的设计与实现publicStringgetEmail(){returnEmail;}publicvoidsetEmailStrinsEmail(g){Em=ailsEmail;}publicStringgetHobbyO{returnHobby;}ublicvoidse化obbyStrin姐obbp(gy){H=obb抽obbyy;}}UserInfoDAO类实现用户信息的数据库查询、存储、修改等操作。publicclassUserinfoDAOextendsBaseHibernateDAO{ublicvoidsaveUserinfotransientlnstancep(){""^lo.debu(savinUseiinfoinstance)ggg;化y{getSession().save(transientInstance);""log.debug(savesuccessful);}catch(RuntimeExceptionre){""lo.errorsavefailedreg(,);throwre;}}ublicvoiddeleteUseri打foersiste打tl打sta打cep(p){""lo.debu(deleti打Useri打foinstance)ggg;try{呂etSessicmQ.dele化(persistentinstance);’"loddeleccesfu.ebutesuslggC;)catch(民untimeExcetionre){}p""log.error(dele化failed,re);throwre;}}--巧 工程硕±学位论文publicUserinfofindById(java.math.BigDecimalid){'"+lo.debuettinUserinfoinstancewithid:idggCgg);try{U=serinfoinstance(Userinfo)getSession().get(""Userinfoid;,)returninstance;}catch(RuntimeExceptionre){""lo.erroretfailedreg(g,);throwre;}}publicListfl打d艮y£xample(Useri打foi打sta打ce){""log.debug(findingUserinfoinstancebyexamle);p化y{L=istresultsetSessionQg""?createCriteria(Userinfb.acid)(Examle.createinstance.listp())();""log.debugfi打dbexamlesuccessfulresultsize:(yp,+results.sizeQ);returnresults;}catch(RuntimeExceptionre){""rorndexaeedrehrowreio.er(fibymplfail;t;g,)}}}5.3.2会员管理会员管理处理流程如图5.9所示:首先,管理员审核会员注册信息,检查数据的真实性等,,,对合法的会员注册信息管理员可修改会员状态信息为已通过最后返回会员管理是否成功的处理结果。■巧- 微信公众互动平台的设计与实现开始N±管理员审核会员信息I合法是I_i修改会员状态信息i返回处理结果i结束图5.9会员管理处理流程会员管理的界面设计如下图所示,系统管理员对申请注册会员进行审核,审""""核通过的用户才能成为会员。系统管理员可W通过:用户名称、用户状态等条件查询用户信息。会员管理?条件 ̄"用户名称rI用户状态r稱曲面CM]结果i户名秘机号码晒箱隆别用户状态注册时间ItII图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类实现单个活动信息的保存。publicclassActioninfo{rivateStrinActionName;pgrivateStrinActionTepgyp;rivateStrinActionBriefpg;rivateS杜inActionContentpg;rivateStrinActionDate;pgrivateStrinActionPlacepg;rivateStrinActionPicturepg;publicStringgetActionName(){returnconNameAti;}publicvoidsetActionName(StringsActionName){A=ctionNamesActionName;}publicStringgetActio打Type〇{returnconTeAtiyp;}publicvoidsetActio打Type(StringsActionType){A=ctionTypesActio打Type;}ublicStrinetActionBriefpgg(){returnActionBrief;}publicvoidsetActionBrief(Stri打gsActio打Brief){=ActionBriefsActionBrief;}publicStri打ggetActio打GontentO{returnActionContent;}ublicvoidsetActio打GontentStri打sActio打Gontentp(g){=Actio打ContentsActionContent;}publicStringgetActionDateO{ 工程硕±学位论文returnActionDate;}publicvoidsetActionDateStrinsActionDate(g){=ActionDatesActionDate;}ublicStrinetActionPlacepggO{returnActionPlace;}ublicvoidsetActionPlaceStrinsActionPlacep(g){A=ctionPIacesActionPlace;}publicStringetActionPic化re()g{returnActionPicture;}ubvoidecioncurS化inioicureplicstAtPitesAct打Pt(g){A=ctio打PicturesActionPicture;}}//ActionInfoDAO类实现活动信息的数据库查询、存储、修改等操作。ublicclassActio打infoDAOexte打dsDaseMibernateDAOp{ublicvoidsave〇Acticmi打fotransie打tinstancep){""lo.debu(savinActioni打foinstanceggg);by{getSessionQ.save(化ansientinstance);""log.debug(savesuccessful);}ca化h(民untimeExceptionre){""lorrorsavefailedre.eg(,);throwre;}}ublicvoiddeleteUserinfoersistentinstancep(p){""lo.debu(deletinActioni打foinstance)ggg;by{getSession〇.deIete(persis化ntinstance);’"lo.debudele化successful)ggC;-57- 微信公众互动平台的设计与实现}catch(RuntimeExceptionre){""lo.errordeletefailedreg(,);throwre;}}ublicActio打hifofind艮ldava.math?良igDecimalidpy(j){""lo.debuetti打Actioninfoinstancewithid:+idgg(gg);巧{=Actioninfoi打stanceActioninfoetSession.et()g()g(""Actioninfbid,);returninstance;}catch(民untimeExceptionre){""loeorefailedre.rrtg(g,);throwre;}}publicListfindByExample(Actioninfoinstance){""lo.debug(findinActioninfoi打s化neebexamle)ggyp;巧{L=istresultsetSessionQg"".createCrheriaAetioninfo.add()(Examle.createinstance.listp())〇;""log.debugfindbexamlesuccessfulresultsize:(yp,+results.sizeQ);returnresults;catchRuntimeExceptionre}(){""lo.error(findbexamlefailedregyp,);throwre;}}}5.3.4审核活动审核活动处理流程如图5.13所示:首先,管理员审核活动基本信息,检查数,对合法的活动信息据的真实性等,管理员可W修改活动状态信息为已通过,最-58- 工程硕±学位论文后返回会员管理是否成功的处理结果。开始i管理员审核活动信息I乂动信合\否^合法是▼修改活动状态信息iJJ返回处理结果2结束图5.13审核活动处理流程审核活动的界面设计如图5.14所示,系统管理员对申请发布的活动进行审"""核:活动名称、,审核通过的活动才能发布。系统管理员可W通过活动状态"等条件查询用户信息。审核活动查巧条件巧巧名称巧动状态寻审核曰査巧1[I查询结果若巧名称巧巧介绍活动时间活动地点洁巧类型审核状态申请时间IIIIII田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.3PC操作系统Windowsxp,wmdows7.0,windows8.0浏览器化9化10lEll狐浏览器,,,火-60- 工程硕±学位论文续表机器参数名参数服务器环境云平台操作系统Windows2008serverWebTOMCAT7.0数据库MySQL5.75.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、Webservice、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.口]微信]ppqq口8]吕继云.基于J2EE的Web应用服务器的设计与实现[D].华中科技大学,2004.:口9孙卫琴.Struts:MVC的JAVAWeb设计与开发M.北京电子工]精通基于[]业出版社,2009.口0]戚克涛,胡涛,张申生.基于Java平台和XML开发Web应用[J].计算机工200228-程:5354.,,〇)自聪.Ajax开发精要[M.电子工业出版化,20〇6.趴]柯]口引刘英丹,董传良.利用WebService实现企业应用集成町计算机应化2003,237-:124126.()口3]肖金华,黄丽红.基于微信的图书馆信息服务模式研巧[J].现代情报,20-136:5557.()34.J.20132777.崔岩移动开发平台的构建[科技创新与应用,(:[]])口5]李欢.基于移动互联的IM交互设计研究[D].北京交通大学,2013.口6]范丰龙.电子商务中微信服务系统设计与实现[J].商场现代化.2013,(20):-101103.-7.社交网络的特性及其发展趋势[J.新闻界2010534.]李林容]:32口,,8乔散新.J.电信科学2010口],朱吉化,沈勇手机移动社交网络的用户研巧[],,26-10:109113.()-:9.SNSJ.现代电信科技2009399B.口]王亮社交网络发展现状及趋势[],,巧)[40]邓夏巧.基于社交网络的用户行为研巧[D].北京交通大学,2012.41陈清华.SNSJ.],李林锦,翁正秋网站用户关系挖掘的设计与其现[]计算机[37361-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.,(),口引王国辉,王毅,伊相群.JavaWeb开发技术方案宝典[M].北京:人民邮电出版社,200ts2:8.5.Strut权威指南[M].北京电子工业出版化200[引李刚5rutsMVC的JAVAWeb设计与开:M.[W孙卫琴精通別:基于发[]北京电子工业出版社,2009.55ESSEJAMESGARRETT.Aax:ANewAroach化WebAlicationDB/〇.[]jpppp[U-t---ht://adativepath.com/ideas/aaxnewaroachwebapplications2011.ppjpp,56:约翰逊怀特查兰.AJAX企业级开发[M].北京人民邮电出版社2008.[],,,57夏昕曹晓刚.深入浅出fibernateM.北京:.[],,唐勇[]电子工业出版狂,2005口8AUERCKING任出bernateinActionM.Greenwich:ManninPublications],[]gCo2005.,口叫JohnsonRHoellerJ.M.J2EEDevelomentwi出outEJB2005.,[]p,[60]JohnsonR,HoellerJ.[M].ASpringJava/J2EEapplicationFramework,2004.’ewhh61DSouzaDFCamronWills.[M].AObjectscomonentsandframeworks[],,pUML2003.,[62]SzyperskiC,GruntzD,MurerS.[M].Componentsoftware:b巧ondobectorieiUedrorammin2003.jpgg,吹]华乾郝克刚,葛带基于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.[],王能斌异构数据源集成系统查询分解和优化的实现[]软件学报,200011.,口)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-
此文档下载收益归作者所有