基于Java Servlet的微信公众平台开发实训环境搭建

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:iloveyouggyyvc
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:微信公众平台开发实训环境的搭建面临的主要问题是开发技术的选择和内部服務器的映射。流行的Java Servlet技术与网络映射软件的结合可以方便搭建微信公众平台开发的实训环境。搭建核心步骤包括:使用Apache Tomcat配置公众号服务器、使用“花生壳”映射内网服务器、使用Java Servlet验证服务器的有效性,其解决了微信公众平台开发课程实施过程中的关键问题。
  关键词:java servlet; 微信公众平台开发; 实训环境; 内网映射; 服务器验证
  中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2017)01-0079-03
  Abstract: Training environment of WeChat public platform development is constructed by using Java Servlet and network mapping software. Core steps include configuring public server, mapping intranet server, validating server. It solves the key problem in implementation of the curriculum of WeChat public platform development.
  Key words: java Servlet; WeChat public platform development; training environment; network mapping; server validation
  1 微信公众平台开发实训环境搭建存在的问题
  目前,智能手机已经广泛普及到了人们的生活当中,而微信又是智能手机上使用率首屈一指的移动应用。据2015年腾讯统计的微信数据显示:90%以上的智能手机安装了微信,微信每月活跃用户高达5.49亿,遍及全世界200多个国家,使用语言超过20种,微信支付用户达到了4亿人。特别需要关注的是:各类品牌、企业、个体开通的微信公众账号总数已超过850万个,而对接公众账号的移动应用仅有8万5千个。可见,市场对微信公众平台功能的对接与开发存在了巨大的需求,微信公众平台应用已经与传统Web端应用同等重要。因此,各大互联网及软件企业对于微信公众平台开发人员的需求量也持续上升。作为需要与企业需求密切接轨的高职院校,也纷纷敏锐地捕捉到这一需求,计划在各自的计算机或软件专业中开设微信公众平台开发相关的专业必修或选修课。然而,由于微信公众平台开发涉及腾讯公司的后台服务器对于互联网消息的转发,课程在实训阶段所面临的实训环境问题成为课程实施过程中的最大阻碍。
  如图1所示,由于微信公众号服务器不是像传统Web服务器直接接收和处理用户请求,而是经过了腾讯微信后台的转发,这就要求腾讯微信后台能够在Internet上与微信公众号服务器进行交互。在传统的实训室中,我们能保证学生人手一台实训计算机,这台实训计算机一般被配置成虚拟服务器,只能在实训室的局域网内使用,并不能被Internet上的设备所寻址,也就无法被腾讯微信后台访问,导致微信公众平台开发的实训无法进行。
  另一方面,选择何种语言作为微信公众平台开发的教学也是一个关键问题。腾讯公司提供了一套微信公众平台开发的接口,并没有对开发语言进行限制。由于目前Web应用还是业界主流,因此高职计算机和软件专业教学一般都将Java或C#语言作为必修课。微信公众平台开发作为Web开发的后续课程,可以选用与先修课程同样的开发语言。
  本文以Java Servlet作为微信公众平台开发技术,以内网映射软件“花生壳”作为服务器映射工具,搭建了微信公众平台开发实训环境,解决了制约课程实施的关键问题。
  2 配置微信公众号服务器
  进行公众号开发,关键是开发属于我们自己的公众号服务器。这里我们建立服务器要解决的关键问题主要有两点:第一,采用何种平台建立服务器?第二,如何把内网服务器映射到Internet上?
  2.1 使用Apache Tomcat配置微信公众号服务器
  Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。其主要特点是:开放源码、技术先进、性能稳定、免费使用。据调查,在现行的Java Web服务器中,Tomcat服务器的市场占有率保持在50%以上。由于我们采用Java语言作为微信公众平台的开发语言,Servlet作为Java服务器端开发的重要技术自然必不可少,采用Tomcat作为服务器就成了最经济实惠且一脉相承的解决方案。Tomcat的安装及配置比较简单,主要保证Tomcat的版本与JDK、JRE相应的版本一致即可,本文采用的是Tomcat 7 JDK 7 JRE 1.7开发环境。
  2.2 使用“花生壳”映射内网服务器
  “花生壳”是一个动态域名解析软件,在任何地点、任何时间、使用任何线路,均可利用动态域名解析服务建立拥有固定域名和最大自主权的互联网主机。
  1)注册并获得域名
  下载“花生壳”软件,注册之后便可获得一个形如:xxxxx.xicp.net的域名,使用这个域名,就可以让腾讯微信后台能够顺利寻址到我们的微信公众平台服务器。
  2)配置内网映射
  “花生壳”软件的核心功能就是内网映射,如图2所示,我们需要填写的重要参数包括:内网主机、内网端口、外网端口。
  其中,内网主机是指局域网内部主机IP地址,由于实训时,一般都是由每个学生将自己的计算机映射成服务器,所以这里一般填写本机IP:127.0.0.1;内网端口取决于前面步骤配置的Tomcat服务的端口号,以便让腾讯微信后台能够正确与Tomcat服务进行通信;外网端口是指映射到Internet上的Tomcat服务端口号,由于腾讯微信后台默认采用http协议与微信公众平台服务器进行通信,所以这里一般选择http协议默认采用的80端口。   3 验证微信公众平台服务器的有效性
  3.1 填写服务器配置
  如果要讓自己搭建的服务器能够接受腾讯微信公众平台的信息转发,首先就需要登录腾讯微信公众平台官网的开发者中心,填写服务器地址(URL)、令牌(Token)和消息加密解密密钥(EncodingAESKey)。
  其中URL是开发者用来接收微信消息和事件的接口URL,这里我们需要填写“花生壳”软件映射的外网地址。Token是开发者随机填写,其作用主要是参与验证算法,使微信公众平台服务器能够验证自己搭建服务器的安全。EncodingAESKey也是由开发者随机填写,其作用主要是作为传输消息的加密和解密密钥。
  同时,开发者可选择消息加解密方式:明文模式、兼容模式和安全模式。模式的选择与服务器配置在提交后都会立即生效。
  3.2 验证URL的有效性
  当开发者在微信公众平台官网的开发者中心填写好URL、Token和EncodingAESKey后,微信服务器将会发送一条信息到该URL上进行服务器有效性的验证,该消息采用了HTTP的GET请求,请求中附加了4个参数,signature、timestamp、nonce、echostr,其含义如表1所示:
  微信服务器要求开发者检验参数signature,对微信服务求发送的HTTP请求进行校验,具体校验流程为:
  1)将token、timestamp、nonce三个参数按照字典序排序;
  2)将三个参数拼接成一个完整的字符串;
  3)使用sha1算法对拼接后的字符串进行加密;
  4)将加密后的字符串与signature对比,如果一致就表示该HTTP GET请求来源于微信服务器。
  如果能够确认此HTTP GET请求来自微信服务器,则只需要将echostr参数的内容原样返回给微信服务器即可,自此接入即可生效;如果校验不成功,则接入失败。
  为了使用Java Servlet实现上述流程,我们使用MyEclipse2015集成开发工具,新建一个Web项目,添加一个新的工具类Tool来实现上述流程,实现代码如下:
  public class Tool {
  //这里的Token与微信服务器配置信息中的 Token 要一致
  private static String token = "whslj2015";
  //函数checkSign用来验证签名
  public static boolean checkSign (String sign, String time, String nonce){
  String[] array = new String[]{token, time, nonce};
  //将token、timestamp、nonce三个参数按照字典序排序
  Arrays.sort(array);
  String newStr="";
  //将三个参数拼接成一个完整的字符串
  for(int i = 0; i < array.length; i ){
  newStr =array[i];
  }
  String tmpStr = "";
  try {
  MessageDigest md = MessageDigest.getInstance("SHA-1");
  //使用sha1算法对拼接后的字符串进行加密
  byte[] secret = md.digest(newStr.getBytes());
  tmpStr = bytesToStr(secret);
  } catch (NoSuchAlgorithmException e) {
  e.printStackTrace();
  }
  newStr = null;
  //将加密后的字符串与signature对比
  if (tmpStr.equals(sign.toUpperCase())) {
  return true;
  }
  else {
  return false;
  }
  }
  //函数bytesToStr用来将字节数组转为16进制字符串
  private static String bytesToStr(byte[] dig) {
  String str = "";
  for(int i = 0; i < dig.length; i ){
  str = bytesTo16Str(dig[i]);
  }
  return str;
  }
  //函数bytesTo16Str将单字节转为16进制字符串
  private static String bytesTo16Str(byte by) {
  char[] Digital = {’0’, ’1’, ’2’, ’3’, ’4’, ’5’, ’6’, ’7’, ’8’, ’9’, ’A’, ’B’, ’C’, ’D’, ’E’, ’F’};
  char[] tempArray = new char[2];
  tempArray[0] = Digital[(by >>> 4)
其他文献
LF钢包炉作为一种高效钢的二次精炼手段,借助电弧加热、造还原渣和底吹氩气搅拌等手段,以达到快速脱氧、脱硫、均匀钢水温度、成分,以及有效去除钢水中夹杂物的目的。探讨合
摘要:近些年以来,网络技术正在运用于各个行业,与之相应的虚拟化技术也获得了全方位的改进。对于现阶段的存储领域而言,逻辑资源应当构成其中的核心与关键,软件资源逐步取代了传统磁盘。因此可见,针对网络服务器应当予以联合使用,在此前提下逐步实现虚拟式的存储软件,突显虚拟化技术具备的独特优势。与此同时,软件定义存储本身具有很显著的独立性特征,有助于减少成本并且支持了基础性的存储设施。因此针对软件定义存储的新
厂坝-李家沟矿区由于1997年以前的群采乱挖,在众多的区域内留下了难以计数、形状各异的空区。为此,在对部分空区进行试采的基础上,成功地应用分段空场法进行了这一典型空区区
摘要:在信息技术教学中进行美育渗透,不仅能使学生在学会知识,掌握技术的同时,得到美的享受,陶冶美的情操,提高审美能力,而且能使学生在审美体验中进行自我教育,激发对美好生活的向往,在轻松愉快的教学中获得成功的体验,摩擦出创造的火花,促进身心更加和谐全面地发展。教育家凯洛夫说:“美育是学生全面发展的一个不可缺少的部分,它的本质在于理解自然和社会的美,理解人与人的相互关系的美,在于以艺术的眼光来认识周围
本文对酒钢成套研发的结晶器内置式电磁搅拌装置的结构特点、性能参数及应用效果进行了综述。通过近几年的上线运行,各项性能指标优良。
大柳沟多金属矿属北祁连塔尔沟-小柳沟钨钼多金属成矿带小柳沟钨钼多金属矿田东延。矿区广泛发育的北西、北东向断裂构造控制了区内多金属矿化体的分布、规模。工作区铁、铜
摘要:AdHoc网络目前的发展速度很快,应用前景广泛,该文从组网模式、拓扑结构、网络管理策略等方面对该网络展开研究,定性分析了AdHoc网络的全向和定向路由性能,并在此基础上利用Matlab仿真路由发现机制,对这两种不同的路由机制进行仿真实验,通过对结果的对比分析,讨论了这两种路由的性能差异,以期对Ad Hoc网络路由技术的发展起到一定的参考作用。  关键词:AdHoc网络;路由性能;AODV  
窑沟铜矿点位于秦岭造山带西段北缘,处于黑河岩体南部下拉地铜、铅、锌多金属成矿带上。中石炭统(C2x)下加岭组为本区主要含矿层。区内构造形态复杂,岩浆活动频繁,具有形成大型、
本文主要介绍21 000 m3/h制氧FTE网络的配置、Cisco交换机的安装与配置过程及FTE网络的特点。