基于Java Servlet的公众平台开发实训环境搭建
作者:生力军
来源:《电脑知识与技术》2017年第01
        摘要:公众平台开发实训环境的搭建面临的主要问题是开发技术的选择和内部服务器的映射。流行的Java Servlet技术与网络映射软件的结合可以方便搭建公众平台开发的实训环境。搭建核心步骤包括:使用Apache Tomcat配置服务器、使用花生壳映射内网服务器、使用Java Servlet验证服务器的有效性,其解决了公众平台开发课程实施过程中的关键问题。
        关键词:java servlet 公众平台开发; 实训环境; 内网映射; 服务器验证
        中图分类号:TP391 文献标识码:A 文章编号:1009-3044201701-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万个,而对接公众账号的移动应用仅有85千个。可见,市场对公众平台功能的对接与开发存在了巨大的需求,公众平台应用已经与传统Web端应用同等重要。因此,各大互联网及软件企业对于公众平台开发人员的需求量也持续上升。作为需要与企业需求密切接轨的高职院校,也纷纷敏锐地捕捉到这一需求,计划在各自的计算机或软件专业中开设公众平台开发相关的专业必修或选修课。然而,由于公众平台开发涉及腾讯公司的后台服务器对于互联网消息的转发,课程在实训阶段所面临的实训环境问题成为课程实施过程中的最大阻碍。
        如图1所示,由于服务器不是像传统Web服务器直接接收和处理用户请求,而是经过了腾讯后台的转发,这就要求腾讯后台能够在Internet上与服务器进行交互。在传统的实训室中,我们能保证学生人手一台实训计算机,这台实训计算机一般被配置成虚拟服务器,只能在实训室的局域网内使用,并不能被Internet上的设备所寻址,也就无法被腾讯后台访问,导致公众平台开发的实训无法进行。
        另一方面,选择何种语言作为公众平台开发的教学也是一个关键问题。腾讯公司提供了一套公众平台开发的接口,并没有对开发语言进行限制。由于目前Web应用还是业界主流,因此高职计算机和软件专业教学一般都将JavaC#语言作为必修课。公众平台开发作为Web开发的后续课程,可以选用与先修课程同样的开发语言。
        本文以Java Servlet作为公众平台开发技术,以内网映射软件花生壳作为服务器映射工具,搭建了公众平台开发实训环境,解决了制约课程实施的关键问题。
        2 配置服务器
        进行开发,关键是开发属于我们自己的服务器。这里我们建立服务器要解
决的关键问题主要有两点:第一,采用何种平台建立服务器?第二,如何把内网服务器映射到Internet上?
        2.1 使用Apache Tomcat配置服务器
        TomcatApache软件基金会的Jakarta项目中的一个核心项目,由ApacheSun 和其他一些公司及个人共同开发而成。其主要特点是:开放源码、技术先进、性能稳定、免费使用。据调查,在现行的Java Web服务器中,Tomcat服务器的市场占有率保持在50%以上。由于我们采用Java语言作为公众平台的开发语言,Servlet作为Java服务器端开发的重要技术自然必不可少,采用Tomcat作为服务器就成了最经济实惠且一脉相承的解决方案。Tomcat的安装及配置比较简单,主要保证Tomcat的版本与JDKJRE相应的版本一致即可,本文采用的是Tomcat 7+JDK 7+JRE 1.7开发环境。
        2.2 使用花生壳映射内网服务器
        “花生壳是一个动态域名解析软件,在任何地点、任何时间、使用任何线路,均可利用动态域名解析服务建立拥有固定域名和最大自主权的互联网主机。
        1)注册并获得域名
        下载花生壳软件,注册之后便可获得一个形如:xxxxx.xicp的域名,使用这个域名,就可以让腾讯后台能够顺利寻址到我们的公众平台服务器。
        2)配置内网映射
        “花生壳软件的核心功能就是内网映射,如图2所示,我们需要填写的重要参数包括:内网主机、内网端口、外网端口。
        其中,内网主机是指局域网内部主机IP地址,由于实训时,一般都是由每个学生将自己的计算机映射成服务器,所以这里一般填写本机IP127.0.0.1;内网端口取决于前面步骤配置的Tomcat服务的端口号,以便让腾讯后台能够正确与Tomcat服务进行通信;外网端口是指映射到Internet上的Tomcat服务端口号,由于腾讯后台默认采用http协议与公众平台服务器进行通信,所以这里一般选择http协议默认采用的80端口。
        3 验证公众平台服务器的有效性
        3.1 填写服务器配置
        如果要让自己搭建的服务器能够接受腾讯公众平台的信息转发,首先就需要登录腾讯公众平台的开发者中心,填写服务器地址(URL)、令牌(Token)和消息加密解密密钥(EncodingAESKey)。
        其中URL是开发者用来接收消息和事件的接口URL,这里我们需要填写花生壳软件映射的外网地址。Token是开发者随机填写,其作用主要是参与验证算法,使公众平台服务器能够验证自己搭建服务器的安全。EncodingAESKey也是由开发者随机填写,其作用主要是作为传输消息的加密和解密密钥。
        同时,开发者可选择消息加解密方式:明文模式、兼容模式和安全模式。模式的选择与服务器配置在提交后都会立即生效。
        3.2 验证web服务器域名是什么URL的有效性
        当开发者在公众平台的开发者中心填写好URLTokenEncodingAESKey后,服务器将会发送一条信息到该URL上进行服务器有效性的验证,该消息采用了HTTPGET请求,请求中附加了4个参数,signaturetimestampnonceechostr,其含义如表1所示:
        服务器要求开发者检验参数signature,对服务求发送的HTTP请求进行校验,具体校验流程为:
        1)将tokentimestampnonce三个参数按照字典序排序;
        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}
        //tokentimestampnonce三个参数按照字典序排序
        Arrays.sortarray);
        String newStr=""
        //将三个参数拼接成一个完整的字符串
        forint i = 0 i < array.length i++{
        newStr+=array[i]

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。