package com.gx.core.wx.support;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import com.fangjian.framework.core.wx4j.lang.JaxbParser;
import com.fangjian.framework.core.wx4j.lang.StreamUtils;
import com.fangjian.framework.core.wx4j.event.EventType;
import com.fangjian.framework.core.wx4j.event.MsgType;
import com.fangjian.framework.core.wx4j.request.WechatRequest;
import com.fangjian.framework.core.wx4j.response.ArticleResponse;
import com.fangjian.framework.core.wx4j.response.ImageResponse;
import com.fangjian.framework.core.wx4j.response.MusicResponse;
import com.fangjian.framework.core.wx4j.response.TransInfoResponse;
import com.fangjian.framework.core.wx4j.response.VideoResponse;
import com.fangjian.framework.core.wx4j.response.VoiceResponse;
import com.fangjian.framework.core.wx4j.response.WechatResponse;
import com.fangjian.framework.core.wx4j.util.XmlHelper;
/**
* 类名称:WxChatSupportAction </br>
* 类描述: </br>
* 创建人:fangjian </br>
* 创建时间:2016年10月19日 上午10:36:03 </br>
* 修改人:fangjian </br>
* 修改时间:2016年10月19日 上午10:36:03 </br>
* 修改备注: </br>
* @version </br>
*/
public abstract class WxChatSupportAction {
Logger logger = Logger.getLogger(WxChatSupportAction.class);
private HttpServletRequest request;
protected WechatRequest wechatRequest;
protected WechatResponse wechatResponse;
/**
* 构建微信处理
* @param request 微信服务发过来的http请求
*/
public WxChatSupportAction(HttpServletRequest request){
logger.info("WechatSupport reading......");
this.request = request;
this.wechatRequest = new WechatRequest();
this.wechatResponse = new WechatResponse();
}
/**
* wechat调用入口,进行数据接收,事件分发
* @return
*/
public String execute(){
logger.info("WechatSupport execute.....");
//分发消息,得到响应
String result = dispatch();
logger.info("WechatSupport execute return msg:" + result);
return result;
}
/**
* 分发处理,得到响应
* @return
*/
private String dispatch() {
String postDataStr = null;
try {
postDataStr = StreamUtils.streamToString(request.getInputStream());
logger.info("postDataStr="+postDataStr);
} catch (IOException e) {
logger.error("post data deal failed!");
e.printStackTrace();
}
// 解析数据
setPostData(postDataStr);
// 消息分发处理
dispatchMessage();
// 响应事件
String result = response();
//返回对象解析出来的xml格式信息
return result;
}
/**
* 得到post数据,对象化
* @param xmlStr
*/
private void setPostData(String xmlStr){
try {
JaxbParser jaxbParser = new JaxbParser(WechatRequest.class);
this.wechatRequest = (WechatRequest)jaxbParser.toObj(xmlStr);
} catch (Exception e) {
logger.error("post data parse error");
e.printStackTrace();
}
}
/**
* 消息事件分发
*/
private void dispatchMessage(){
logger.info("distributeMessage start");
if(StringUtils.isBlank(wechatRequest.getMsgType())){
logger.info("msgType is null");
}
MsgType msgType = MsgType.valueOf(wechatRequest.getMsgType());
logger.info("msgType is " + msgType.name());
switch (msgType) {
case event:
//事件统一处理方法
dispatchEvent();
break;
case text:
onText();
break;
case image:
onImage();
break;
case voice:
onVoice();
break;
case video:
onVideo();
break;
case shortvideo:
onShortVideo();
break;
case location:
onLocation();
break;
case link:
onLink();
break;
default:
onUnknown();
break;
}
}
/**
* event事件分发
*/
private void dispatchEvent() {
logger.info("dispatchEvent start");
EventType event = EventType.valueOf(wechatRequest.getEvent());
logger.info("dispatch event,event is " + event.name());
switch (event) {
case CLICK:
click();
break;
case subscribe:
subscribe();
break;
case unsubscribe:
unSubscribe();
break;
case SCAN:
scan();
break;
case LOCATION:
location();
break;
case VIEW:
view();
break;
case TEMPLATESENDJOBFINISH:
templateMsgCallback();
break;
case scancode_push:
scanCodePush();
break;
case scancode_waitmsg:
scanCodeWaitMsg();
break;
case pic_sysphoto:
picSysPhoto();
break;
case pic_photo_or_album:
picPhotoOrAlbum();
break;
case pic_weixin:
picWeixin();
break;
case location_select:
locationSelect();
break;
case kf_create_session:
kfCreateSession();
break;
case kf_close_session:
kfCloseSession();
break;
case kf_switch_session:
kfSwitchSession();
break;
default:
break;
}
}
/**
* 返回响应数据
* @return
*/
private String response(){
String result = null;
try {
// JaxbParser jaxbParser = new JaxbParser(WechatResponse.class);
// //设置
// jaxbParser.setCdataNode(WechatResponse.CDATA_TAG);
// //输出xml格式
// result = jaxbParser.toXML(wechatResponse);
result = XmlHelper.objectToXML(WechatResponse.class, wechatResponse);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 响应数据基础构造
*/
private void responseBase(){
wechatResponse.setToUserName(this.wechatRequest.getFromUserName());
wechatResponse.setFromUserName(wechatRequest.getToUserName());
wechatResponse.setCreateTime(wechatRequest.getCreateTime());
}
/**
* 回复文本消息
* @param content 回复的消息内容(换行:在content中能够换行,微信客户端就支持换行显示)
*/
public void responseText(String content){
responseBase();
wechatResponse.setMsgType(MsgType.text.name());
wechatResponse.setContent(content);
}
/**
* 回复图片消息
* @param mediaId 通过上传多媒体文件,得到的id
*/
public void responseImage(String mediaId){
responseBase();
wechatResponse.setMsgType(MsgType.image.name());
ImageResponse image = new ImageResponse();
image.setMediaId(mediaId);
wechatResponse.setImage(image);
}
/**
* 回复语音消息
* @param mediaId 通过上传多媒体文件,得到的id
*/
public void responseVoice(String mediaId){
responseBase();
wechatResponse.setMsgType(MsgType.voice.name());
VoiceResponse voice = new VoiceResponse();
voice.setMediaId(mediaId);
wechatResponse.setVoice(voice);
}
/**
* 回复视频消息
* @param mediaId 通过上传多媒体文件,得到的id
* @param title 视频消息的标题
* @param description 视频消息的描述
*/
public void responseVideo(String mediaId,String title,String description){
VideoResponse video = new VideoResponse();
video.setMediaId(mediaId);
video.setTitle(title);
video.setDescription(description);
responseVideo(video);
}
/**
* 回复视频消息
* @param video 视频消息
*/
public void responseVideo(VideoResponse video){
responseBase();
wechatResponse.setMsgType(MsgType.video.name());
wechatResponse.setVideo(video);
}
/**
* 回复音乐消息
* @param title 音乐标题
* @param description 音乐描述
* @param musicURL 音乐链接
* @param hQMusicUrl 高质量音乐链接,WIFI环境优先使用该链接播放音乐
* @param thumbMediaId 缩略图的媒体id,通过上传多媒体文件,得到的id
*/
public void responseMusic(String title,String description,
String musicURL,String hQMusicUrl,String
没有合适的资源?快使用搜索试试~ 我知道了~
框架ssm开发的微信实践案例(demo)
共182个文件
jar:66个
png:31个
java:18个
4星 · 超过85%的资源 需积分: 9 535 下载量 55 浏览量
2017-05-28
10:37:16
上传
评论 14
收藏 31.42MB ZIP 举报
温馨提示
框架ssm开发的微信实践案例(demo),用myeclipse+springMvc+spring+mybatis开发的,查询用户信息,上传图片,二维码扫描自动跳转!
资源推荐
资源详情
资源评论
收起资源包目录
框架ssm开发的微信实践案例(demo) (182个子文件)
WxChatSupportAction.class 12KB
URLOAuth2AccreditAction.class 11KB
WxUtil.class 9KB
MyWxChatAction.class 9KB
ImagesController.class 6KB
UrlShareController.class 6KB
IemsuserServiceImpl.class 4KB
WxUserInfo.class 3KB
WeiXinServlet.class 3KB
Iemsuser.class 3KB
IemsuserQuery.class 3KB
IwxUserInfoServiceImpl.class 2KB
ControllerLogAspect.class 2KB
IwxUserInfoDao.class 1KB
IemsuserDao.class 939B
IwxUserInfoService.class 868B
IemsuserService.class 722B
Token.class 691B
.classpath 959B
org.eclipse.wst.common.component 468B
org.eclipse.wst.jsdt.ui.superType.container 49B
weui.css 234KB
weui.min.css 46KB
example.css 8KB
style_css.css 3KB
transparent.gif 2KB
ehcache-2.9.1.jar 8.61MB
aspectjweaver-1.7.2.jar 1.74MB
druid-1.0.2.jar 1.74MB
druid-1.0.1.jar 1.71MB
mybatis-3.3.0.jar 1.35MB
netty-3.9.2.Final.jar 1.24MB
freemarker-2.3.22.jar 1.24MB
jackson-databind-2.6.0.jar 1.11MB
spring-core-3.2.4.RELEASE.jar 849KB
spring-context-3.2.4.RELEASE.jar 843KB
mysql-connector-java-5.1.22.jar 813KB
mysql-connector-java-5.1.22-bin.jar 813KB
jackson-mapper-asl-1.9.13.jar 762KB
mybatis-3.2.4.jar 699KB
spring-webmvc-3.2.4.RELEASE.jar 622KB
spring-web-3.2.4.RELEASE.jar 611KB
spring-beans-3.2.4.RELEASE.jar 594KB
httpclient-4.3.5.jar 577KB
commons-collections-3.2.1.jar 562KB
async-http-client-1.8.13.jar 518KB
xstream-1.4.5.jar 497KB
log4j-1.2.17.jar 478KB
spring-test-3.2.4.RELEASE.jar 447KB
commons-lang3-3.4.jar 424KB
jstl-1.2.jar 405KB
spring-jdbc-3.2.4.RELEASE.jar 396KB
mail-1.4.jar 380KB
fastjson-1.1.33.jar 343KB
spring-aop-3.2.4.RELEASE.jar 328KB
dom4j-1.6.jar 306KB
httpcore-4.3.3.jar 276KB
commons-httpclient-3.0.1.jar 273KB
commons-lang-2.5.jar 273KB
jackson-core-2.6.0.jar 253KB
spring-tx-3.2.4.RELEASE.jar 237KB
commons-codec-1.6.jar 227KB
jackson-core-asl-1.9.13.jar 227KB
commons-beanutils-1.8.0.jar 226KB
spring-expression-3.2.4.RELEASE.jar 192KB
commons-io-2.2.jar 170KB
wx-framework-0.0.1-SNAPSHOT.jar 158KB
json-lib-2.4-jdk15.jar 155KB
jdom-1.1.3.jar 148KB
httpclient-cache-4.3.5.jar 146KB
jedis-2.1.0.jar 136KB
spring-context-support-3.2.4.RELEASE.jar 125KB
xml-apis-1.0.b2.jar 107KB
commons-pool-1.5.5.jar 98KB
ezmorph-1.0.6.jar 84KB
spring-oxm-3.2.4.RELEASE.jar 72KB
commons-fileupload-1.3.1.jar 67KB
activation-1.1.jar 62KB
commons-logging-1.1.1.jar 59KB
fangjee_generator-0.0.1-SNAPSHOT.jar 57KB
mybatis-spring-1.3.0.jar 52KB
spring-aspects-3.2.4.RELEASE.jar 50KB
mybatis-spring-1.2.2.jar 48KB
jackson-annotations-2.6.0.jar 46KB
pager-taglib-2.0.jar 46KB
httpmime-4.3.5.jar 36KB
fluent-hc-4.3.5.jar 29KB
slf4j-api-1.6.6.jar 26KB
xpp3_min-1.1.4c.jar 24KB
slf4j-log4j12-1.6.6.jar 9KB
xmlpull-1.1.3.1.jar 7KB
aopalliance-1.0.jar 4KB
WxChatSupportAction.java 12KB
URLOAuth2AccreditAction.java 12KB
MyWxChatAction.java 11KB
WxUtil.java 8KB
UrlShareController.java 7KB
ImagesController.java 4KB
WxUserInfo.java 3KB
WeiXinServlet.java 3KB
共 182 条
- 1
- 2
岽仔玖等
- 粉丝: 299
- 资源: 215
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 2018年对口升学信息一类第一次联考试题(卷).doc
- 见证时代变迁的高考作文题.doc
- 江苏兴化一中2018年高考第四次模拟考试语文试题整理.doc
- 建筑试题3[识图答案].doc
- 静载检测技术基础理论考试(员)C.doc
- 跨境电商人才初级认证试题以与答案.doc
- 临床的护理文书规范模拟考试标准答案09_8_7.doc
- 垃圾分类知识问答.doc
- 六年级英语上[下册]知识点总结.doc
- 六年级写字教学案.doc
- 农业区位因素教学设计.doc
- 牛津译林版2018年_2018年学年8A英语期末专题练习_首字母填空.doc
- 人版小学数学六年级(下册)第3单元圆柱与圆锥教案.doc
- 巧用多媒体有效地复习有丝分裂和减数分裂考点.doc
- 人民教育出版社五年级语文(下册)易错字易错音.doc
- 山东省医学继续教育公共课程急诊及急救答案.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页