package com.hjs.weixin.servlet;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.hjs.weixin.pojo.Person;
import com.hjs.weixin.service.CoreService;
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;
/**
* @author haibing.xiao
* @since jdk1.6
* @version 1.0
*/
public class CoreServlet extends HttpServlet{
private Logger log =Logger.getLogger(this.getClass().getName());
private static final long serialVersionUID = 1L;
private String Token;
private String echostr;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
connect(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//第一套方案,用于响应微信客户端的请求信息
//message(request,response);
//XMLSerializer xml =new XMLSerializer();
//第二套方案,
request.setCharacterEncoding("utf-8") ;
response.setCharacterEncoding("utf-8") ;
//调用业务核心类,处理消息
String respMessage = CoreService.processRequest(request);
//响应消息,
PrintWriter out = response.getWriter();
out.print(respMessage);
out.close();
}
/**
*@author haibing.xiao
*@return
*@exception
*@param
*
* <p>接入连接生效验证</p>
*/
private void connect(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
log.info("RemoteAddr: "+ request.getRemoteAddr());
log.info("QueryString: "+ request.getQueryString());
if(!accessing(request, response)){
log.info("服务器接入失败.......");
return ;
}
String echostr=getEchostr();
if(echostr!=null && !"".equals(echostr)){
log.info("服务器接入生效..........");
response.getWriter().print(echostr);//完成相互认证
}
}
/**
* @author haibing.xiao
* Date 2013-05-29
* @return boolean
* @exception ServletException, IOException
* @param
*
*<p>用来接收微信公众平台的验证</p>
*/
private boolean accessing(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
String signature = request.getParameter("signature");
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");
String echostr = request.getParameter("echostr");
if( isEmpty(signature)){
return false;
}
if(isEmpty(timestamp)){
return false;
}
if(isEmpty(nonce)){
return false;
}
if(isEmpty(echostr)){
return false;
}
String[] ArrTmp = { Token, timestamp, nonce };
Arrays.sort(ArrTmp);
StringBuffer sb = new StringBuffer();
for (int i = 0; i < ArrTmp.length; i++) {
sb.append(ArrTmp[i]);
}
String pwd = Encrypt(sb.toString());
log.info("signature:"+signature+"timestamp:"+timestamp+"nonce:"+nonce+"pwd:"+pwd+"echostr:"+echostr);
if(trim(pwd).equals(trim(signature))){
this.echostr =echostr;
return true;
}else{
return false;
}
}
private String Encrypt(String strSrc) {
MessageDigest md = null;
String strDes = null;
byte[] bt = strSrc.getBytes();
try {
md = MessageDigest.getInstance("SHA-1");
md.update(bt);
strDes = bytes2Hex(md.digest()); //to HexString
} catch (NoSuchAlgorithmException e) {
System.out.println("Invalid algorithm.");
return null;
}
return strDes;
}
public String bytes2Hex(byte[] bts) {
String des = "";
String tmp = null;
for (int i = 0; i < bts.length; i++) {
tmp = (Integer.toHexString(bts[i] & 0xFF));
if (tmp.length() == 1) {
des += "0";
}
des += tmp;
}
return des;
}
public String getEchostr(){
return echostr;
}
/**
*@author haibing.xiao
*@return
*@exception ServletException, IOException
*@param
*
* <p>XML组装组件</p>
*/
private void message(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
InputStream is = request.getInputStream();
// 取HTTP请求流长度
int size = request.getContentLength();
// 用于缓存每次读取的数据
byte[] buffer = new byte[size];
// 用于存放结果的数组
byte[] xmldataByte = new byte[size];
int count = 0;
int rbyte = 0;
// 循环读取
while (count < size) {
// 每次实际读取长度存于rbyte中
rbyte = is.read(buffer);
for(int i=0;i<rbyte;i++) {
xmldataByte[count + i] = buffer[i];
}
count += rbyte;
}
is.close();
String requestStr = new String(xmldataByte, "UTF-8");
try{
manageMessage(requestStr,request,response);
}catch(Exception e){
e.printStackTrace();
}
}
/**
* @author haibing.xiao
* @return
* @exception ServletException, IOException
* @param
*
* <p>业务转发组件</p>
*
*/
public static void main(String[] args) {
System.out.println("hello world!");
//XMLSerializer xmlSerializer=new XMLSerializer();
Person person = new Person("cmx", 22) ;
String result = "{'name':'cmx','age':12}";
//JSONObject jsonObject = JSONObject.fromObject(result);
//jsonObject.fromObject(person);
//System.out.println(jsonObject.toString());
//JSONObject jsonObject = JSONObject.fromObject(person.toString())
//String xmlString = ""
//JSONObject jsonObject = (JSONObject) xmlSerializer.read("<a>cmx</a>") ;
//System.out.println(jsonObject.toString());
}
private void manageMessage(String requestStr,HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
String responseStr;
try {
XMLSerializer xmlSerializer=new XMLSerializer();
JSONObject jsonObject =(JSONObject) xmlSerializer.read(requestStr);
String event =jsonObject.getString("Event");
String msgtype =jsonObject.getString("MsgType");
if("CLICK".equals(event) && "event".equals(msgtype)){ //菜单click事件
String eventkey =jsonObject.getString("EventKey");
if("hytd_00
没有合适的资源?快使用搜索试试~ 我知道了~
javaweb微信接入

共68个文件
class:27个
java:25个
jar:3个

需积分: 50 19 下载量 29 浏览量
2018-01-17
17:39:16
上传
评论
收藏 1.58MB RAR 举报
温馨提示
Java后台接入微信平台源码,只需要传入appid,appserect 就可以直接运行。javaweb接入微信公众开发平台。
资源推荐
资源详情
资源评论












收起资源包目录



































































































共 68 条
- 1
资源评论


friendship_all
- 粉丝: 0
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 最好的农村电商“遂昌模式”长啥样(马云都夸第一).doc
- 职业化培训客户投诉处理与投诉危机管理培训.docx
- 医院病房数据库课程设计报告.doc
- 西安市汽车产业发展战略研究概要.doc
- 项目管理的亮点及经验总结.pdf
- 服务员晋升分级.docx
- 幼儿园结构游戏组织方法与指导分析.doc
- 中层管理人员如何进行有效管理.doc
- 网络广告实务培训教材.pptx
- 富怡CAD智能笔功能操作说明.doc
- 上海中考英语试题及答案.doc
- 调研报告——新形势下职工心理疏导方法的思考与探索.doc
- 稀缺性原理在网站运营中的策略.doc
- 新马灯饰门市管理制度.doc
- 人力资源管理复习题.doc
- 新版建筑工程施工许可办理流程.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
