微信开发之框架
白羽 2018-06-20 来源 :网络 阅读 1033 评论 0

摘要:本文将带你了解微信开发之框架,希望本文对大家学微信有所帮助。


LiteWeixin介绍

LiteWeixin是一个开源的小型框架,与其说是框架倒不如说是将一些微信开发的常用的操作包装了起来,让开发者不再面对着xml的解析与生成,而能够有更多的精力来面对业务逻辑

LiteWeixin接入步骤

· 使用LiteWeixin接入微信开发非常简单,首先先引入LiteWeixin的jar包和xstream的jar包,将他们放入WEB-INF下面的lib文件夹下面,目录如下: 

微信开发之框架

· 在web.xml文件里面加入如下所示的监听器:

  <listener>

    <listener-class>cn.karent.listener.ContextListener</listener-class>

  </listener>


· 创建一个类继承自LiteWeixin,并重写里面响应的方法,如下所示:

package com.chxxi614.servlet;

import cn.karent.bean.common.BaseMessage;import cn.karent.bean.common.TextMessage;import cn.karent.bean.req.EventMessage;import cn.karent.bean.req.ImageMessage;import cn.karent.bean.req.LinkMessage;import cn.karent.bean.req.LocationMessage;import cn.karent.bean.req.VideoMessage;import cn.karent.bean.req.VoiceMessage;import cn.karent.servlet.LiteWeixin;

public class Main extends LiteWeixin{

 

    /**

     * 处理文本消息

     */

    @Override

    public BaseMessage textMessage(TextMessage text) {

 

        return super.textMessage(text);

    }

 

    /**

     * 处理图片消息

     */

    @Override

    public BaseMessage imageMessage(ImageMessage image) {

        // TODO Auto-generated method stub

        return super.imageMessage(image);

    }

 

    /**

     * 处理声音消息

     */

    @Override

    public BaseMessage voiceMessage(VoiceMessage voice) {

        // TODO Auto-generated method stub

        return super.voiceMessage(voice);

    }

 

    /**

     * 处理链接消息

     */

    @Override

    public BaseMessage linkMessage(LinkMessage link) {

        // TODO Auto-generated method stub

        return super.linkMessage(link);

    }

 

    /**

     * 处理地理位置消息

     */

    @Override

    public BaseMessage locationMessage(LocationMessage location) {

        // TODO Auto-generated method stub

        return super.locationMessage(location);

    }

 

    /**

     * 处理视频消息

     */

    @Override

    public BaseMessage videoMessage(VideoMessage video) {

        // TODO Auto-generated method stub

        return super.videoMessage(video);

    }

 

    /**

     * 处理事件消息

     */

    @Override

    public BaseMessage eventMessage(EventMessage event) {

        // TODO Auto-generated method stub

        return super.eventMessage(event);

    }

 

 

 

}

里面的参数是相应的bean,例如文本消息对应的xml文件如下:

 <xml>

 <ToUserName><![CDATA[toUser]]></ToUserName>

 <FromUserName><![CDATA[fromUser]]></FromUserName> 

 <CreateTime>1348831860</CreateTime>

 <MsgType><![CDATA[text]]></MsgType>

 <Content><![CDATA[this is a test]]></Content>

 <MsgId>1234567890123456</MsgId>

 </xml>

它对应的bean是TextMessage,看下TextMessage里面的定义:

package cn.karent.bean.common;

 

/**

 * 文本消息

 * @author wan

 */public class TextMessage extends BaseMessage{

 

    public TextMessage() {

        setMsgType("text");

    }

 

    private String Content;

 

    public String getContent() {

        return Content;

    }

 

    public void setContent(String content) {

        Content = content;

    }

 

}

 

package cn.karent.bean.common;

/**

 * model基类

 * @author wan

 */public class BaseMessage {

 

    private String ToUserName;

 

    private String FromUserName;

 

    private long CreateTime;

 

    private String MsgType;

 

    private int FuncFlag;

 

    public String getToUserName() {

        return ToUserName;

    }

 

    public void setToUserName(String toUserName) {

        ToUserName = toUserName;

    }

 

    public String getFromUserName() {

        return FromUserName;

    }

 

    public void setFromUserName(String fromUserName) {

        FromUserName = fromUserName;

    }

 

    public long getCreateTime() {

        return CreateTime;

    }

 

    public void setCreateTime(long createTime) {

        CreateTime = createTime;

    }

 

    public String getMsgType() {

        return MsgType;

    }

 

    public void setMsgType(String msgType) {

        MsgType = msgType;

    }

 

    public int getFuncFlag() {

        return FuncFlag;

    }

 

    public void setFuncFlag(int funcFlag) {

        FuncFlag = funcFlag;

    }

 

}

同理ImageMessage也是一样:

 <xml>

 <ToUserName><![CDATA[toUser]]></ToUserName>

 <FromUserName><![CDATA[fromUser]]></FromUserName>

 <CreateTime>1348831860</CreateTime>

 <MsgType><![CDATA[image]]></MsgType>

 <PicUrl><![CDATA[this is a url]]></PicUrl>

 <MediaId><![CDATA[media_id]]></MediaId>

 <MsgId>1234567890123456</MsgId>

 </xml>

它对应的bean ImageMessage如下:

package cn.karent.bean.req;

import cn.karent.bean.common.BaseMessage;

/**

 * 请求之图片消息

 * @author wan

 */public class ImageMessage extends BaseMessage {

 

    private String PicUrl;

 

    private String MediaId;

 

    public String getPicUrl() {

        return PicUrl;

    }

 

    public void setPicUrl(String picUrl) {

        PicUrl = picUrl;

    }

 

    public String getMediaId() {

        return MediaId;

    }

 

    public void setMediaId(String mediaId) {

        MediaId = mediaId;

    }

 

}

· 在src目录下面创建一个weixin.xml文件,在里面填入如下内容:

<?xml version="1.0" encoding="UTF-8"?> <weixin> <token>chxxi614</token> <core>com.chxxi614.servlet.Main</core> </weixin>

其中token标签是接入微信开发所需要的token, <core></core>标签里面的内容是指定我们刚刚创建的那个继承自LiteWeixin的类

注意事项

前面说过在我们指定的Main类的里面每个请求对应着一个方法,每个请求的数据对应着方法参数里面的java bean,我们向微信服务回应消息也对应着一个java bean,例如回应图片消息对应的xml:

<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[image]]></MsgType><Image><MediaId><![CDATA[media_id]]></MediaId></Image></xml>

这个xml对应的java bean如下:

package cn.karent.bean.resp;

import cn.karent.bean.common.BaseMessage;

/**

 * 回复图片消息

 * @author wan

 */public class ImageMessage extends BaseMessage{

 

    public ImageMessage() {

        setMsgType("image");

    }

 

    private Image Image;

 

    public Image getImage() {

        return Image;

    }

 

    public void setImage(Image image) {

        Image = image;

    }

 

}

 

package cn.karent.bean.resp;

public class Image {

 

    private String MediaId;

 

    public String getMediaId() {

        return MediaId;

    }

 

    public void setMediaId(String mediaId) {

        MediaId = mediaId;

    }

 

 

}

 

我们不要管xml怎么响应的,我们只要return 相应的bean即可(注意,这些bean都是在LiteWeixin里面定义好了的),更多的细节可以参考LiteWeixin里面的源码。

使用LiteWeixin回复文本和图片消息

先引入LiteWeixin.jar和xstream-1.3.1.jar到lib文件夹下面(LiteWeixin.jar的下载地址),然后使用刚刚创建的Main类,在对应的textMessage和imageMessage中加入如下代码:

public BaseMessage textMessage(TextMessage text) {

System.out.println("I'm text message, content:" + text.getContent());

        TextMessage resp = new TextMessage();

        initResponseData(text, resp);

        resp.setContent("hello, I'm liteWeixin text message");

        return resp;

    }

 

    /**

     * 处理图片消息

     */

    @Override

    public BaseMessage imageMessage(ImageMessage image) {

        // TODO Auto-generated method stub

System.out.println("image Message:" + image.getFromUserName() + "\t" + image.getMediaId());

        TextMessage text = new TextMessage();

        initResponseData(image, text);

        text.setContent("hello, I'm LiteWeixin image Message");

        return text;

    }

然后使用刚刚创建的weixin.xml文件,目录结构如下: 
 微信开发之框架

最后别忘了在web.xml里面注册一个监听器:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="//www.w3.org/2001/XMLSchema-instance" xmlns="//java.sun.com/xml/ns/javaee" xsi:schemaLocation="//java.sun.com/xml/ns/javaee //java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

  <listener>

    <listener-class>cn.karent.listener.ContextListener</listener-class>

  </listener></web-app>

微信上面的配置

因为所以的接入都是LiteWeixin帮我们配置好了,LiteWeixin默认的入口是叫做entry,例如我们创建的项目名叫做testweixin,那么完整的项目配置路径应该是

//域名/testweixin/entry

这个就是我们的URL,至于token,那就是我们在weixin.xml文件<token></token>当中配置的内容

看效果

 微信开发之框架

结尾

LiteWeixin应该不算是一个框架吧,只是将一些微信开发公共的部分抽取了出来。

 


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程