日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Java:實(shí)現(xiàn)微信公眾平臺(tái)

1.  Easyui學(xué)習(xí)班.jpg    

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),平順企業(yè)網(wǎng)站建設(shè),平順品牌網(wǎng)站建設(shè),網(wǎng)站定制,平順網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,平順網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

2. [文件] web.xml ~ 755B

 
 
 
 
  1.  
  2.     xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
  3.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
  4.     id="WebApp_ID" version="3.0"> 
  5.     微信公共平臺(tái)開發(fā)者接口 
  6.      
  7.         WeChatFilter 
  8.         com.gson.WeChatFilter 
  9.      
  10.      
  11.         WeChatFilter 
  12.         /wechat/* 
  13.      
  14.  
  15.      
  16.         index.jsp 
  17.      
  18.  

#p#

3. [文件] WeChatFilter.java

 
 
 
 
  1. package com.gson; 
  2.  
  3. import java.io.File; 
  4. import java.io.FileInputStream; 
  5. import java.io.FileNotFoundException; 
  6. import java.io.IOException; 
  7. import java.util.Date; 
  8. import java.util.Properties; 
  9.  
  10. import javax.servlet.Filter; 
  11. import javax.servlet.FilterChain; 
  12. import javax.servlet.FilterConfig; 
  13. import javax.servlet.ServletException; 
  14. import javax.servlet.ServletInputStream; 
  15. import javax.servlet.ServletRequest; 
  16. import javax.servlet.ServletResponse; 
  17. import javax.servlet.http.HttpServletRequest; 
  18. import javax.servlet.http.HttpServletResponse; 
  19.  
  20. import org.apache.log4j.Logger; 
  21.  
  22. import com.gson.bean.Articles; 
  23. import com.gson.bean.InMessage; 
  24. import com.gson.bean.OutMessage; 
  25. import com.gson.inf.MessageProcessingHandler; 
  26. import com.gson.util.Tools; 
  27. import com.gson.util.XStreamFactory; 
  28. import com.thoughtworks.xstream.XStream; 
  29.  
  30. /** 
  31.  * 請(qǐng)求攔截 
  32.  * @author GodSon 
  33.  * 
  34.  */ 
  35. public class WeChatFilter implements Filter { 
  36.      
  37.     private final Logger logger = Logger.getLogger(WeChatFilter.class); 
  38.     private String _token; 
  39.     private String conf = "classPath:wechat.properties"; 
  40.     private String defaultHandler = "com.gson.inf.DefaultMessageProcessingHandlerImpl"; 
  41.     private Properties p; 
  42.  
  43.     @Override 
  44.     public void destroy() { 
  45.         logger.info("WeChatFilter已經(jīng)銷毀"); 
  46.     } 
  47.  
  48.     @Override 
  49.     public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { 
  50.         HttpServletRequest request = (HttpServletRequest) req; 
  51.         HttpServletResponse response = (HttpServletResponse) res; 
  52.         Boolean isGet = request.getMethod().equals("GET"); 
  53.          
  54.         String path = request.getServletPath(); 
  55.         String pathInfo = path.substring(path.lastIndexOf("/")); 
  56.          
  57.         if (pathInfo == null) { 
  58.             response.getWriter().write("error"); 
  59.         } else { 
  60.             _token = pathInfo.substring(1); 
  61.             if (isGet) { 
  62.                 doGet(request, response); 
  63.             } else { 
  64.                 doPost(request, response); 
  65.             } 
  66.         } 
  67.     } 
  68.  
  69.     private void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { 
  70.         response.setCharacterEncoding("UTF-8"); 
  71.         response.setContentType("text/xml"); 
  72.          
  73.         OutMessage oms = new OutMessage(); 
  74.         ServletInputStream in = request.getInputStream(); 
  75.         //轉(zhuǎn)換微信post過來的xml內(nèi)容 
  76.         XStream xs = XStreamFactory.init(false); 
  77.         xs.alias("xml", InMessage.class); 
  78.         String xmlMsg = Tools.inputStream2String(in); 
  79.         InMessage msg = (InMessage) xs.fromXML(xmlMsg); 
  80.         //獲取自定消息處理器,如果自定義處理器則使用默認(rèn)處理器。 
  81.         String handler = p.getProperty("MessageProcessingHandlerImpl"); 
  82.         if(handler== null) 
  83.             handler = defaultHandler; 
  84.          
  85.         try { 
  86.             //加載處理器 
  87.             Class clazz = Class.forName(handler); 
  88.             MessageProcessingHandler processingHandler = (MessageProcessingHandler) clazz.newInstance(); 
  89.             //取得消息類型 
  90.             String type = msg.getMsgType(); 
  91.             //針對(duì)不同類型消息進(jìn)行處理 
  92.             if (type.equals(MessageProcessingHandler.MSG_TYPE_TEXT)) { 
  93.                 oms = processingHandler.textTypeMsg(msg); 
  94.             } else if (type.equals(MessageProcessingHandler.MSG_TYPE_LOCATION)) { 
  95.                 oms = processingHandler.locationTypeMsg(msg); 
  96.             } else if (type.equals(MessageProcessingHandler.MSG_TYPE_LINK)) { 
  97.                 oms = processingHandler.linkTypeMsg(msg); 
  98.             } else if (type.equals(MessageProcessingHandler.MSG_TYPE_IMAGE)) { 
  99.                 oms = processingHandler.imageTypeMsg(msg); 
  100.             } else if (type.equals(MessageProcessingHandler.MSG_TYPE_EVENT)) { 
  101.                 oms = processingHandler.eventTypeMsg(msg); 
  102.             } 
  103.             if(oms == null){ 
  104.                 oms = new OutMessage(); 
  105.                 oms.setContent("系統(tǒng)錯(cuò)誤!"); 
  106.             } 
  107.             //設(shè)置發(fā)送信息 
  108.             oms.setCreateTime(new Date().getTime()); 
  109.             oms.setToUserName(msg.getFromUserName()); 
  110.             oms.setFromUserName(msg.getToUserName()); 
  111.         } catch (ClassNotFoundException e) { 
  112.             logger.error("沒有找到" + handler + "類", e); 
  113.             oms.setContent("系統(tǒng)錯(cuò)誤!"); 
  114.         } catch (InstantiationException e) { 
  115.             logger.error(e); 
  116.             oms.setContent("系統(tǒng)錯(cuò)誤!"); 
  117.         } catch (IllegalAccessException e) { 
  118.             logger.error(e); 
  119.             oms.setContent("系統(tǒng)錯(cuò)誤!"); 
  120.         } 
  121.          
  122.         //把發(fā)送發(fā)送對(duì)象轉(zhuǎn)換為xml輸出 
  123.         xs = XStreamFactory.init(false); 
  124.         xs.alias("xml", OutMessage.class); 
  125.         xs.alias("item", Articles.class); 
  126.         xs.toXML(oms, response.getWriter()); 
  127.     } 
  128.  
  129.     private void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { 
  130.         String signature = request.getParameter("signature");// 微信加密簽名 
  131.         String timestamp = request.getParameter("timestamp");// 時(shí)間戳 
  132.         String nonce = request.getParameter("nonce");// 隨機(jī)數(shù) 
  133.         String echostr = request.getParameter("echostr");// 
  134.         //驗(yàn)證 
  135.         if (Tools.checkSignature(_token, signature, timestamp, nonce)) { 
  136.             response.getWriter().write(echostr); 
  137.         } 
  138.     } 
  139.  
  140.     /** 
  141.      * 啟動(dòng)的時(shí)候加載wechat.properties配置 
  142.      * 可以在過濾器配置wechat.properties路徑 
  143.      */ 
  144.     @Override 
  145.     public void init(FilterConfig config) throws ServletException { 
  146.         String cf = config.getInitParameter("conf"); 
  147.         if (cf != null) { 
  148.             conf = cf; 
  149.         } 
  150.         String classPath = this.getClass().getResource("/").getPath().replaceAll("%20", " "); 
  151.         conf = conf.replace("classPath:", classPath); 
  152.         p = new Properties(); 
  153.         File pfile = new File(conf); 
  154.         if (pfile.exists()) { 
  155.             try { 
  156.                 p.load(new FileInputStream(pfile)); 
  157.             } catch (FileNotFoundException e) { 
  158.                 logger.error("未找到wechat.properties", e); 
  159.             } catch (IOException e) { 
  160.                 logger.error("wechat.properties讀取異常", e); 
  161.             } 
  162.         } 
  163.         logger.info("WeChatFilter已經(jīng)啟動(dòng)!"); 
  164.     } 
  165.  

網(wǎng)站標(biāo)題:Java:實(shí)現(xiàn)微信公眾平臺(tái)
標(biāo)題路徑:http://www.dlmjj.cn/article/dhiiocp.html