web.xml
<servlet> <servlet-name>weichatServlet</servlet-name> <servlet-class>cn.hy.weixin.controller.WeichatServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>weichatServlet</servlet-name> <url-pattern>/weichat.do</url-pattern> </servlet-mapping>
servlet
package cn.hy.weixin.controller; import java.io.IOException; import java.io.PrintWriter; import java.util.Map; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.mvc.Mvcs; import cn.hy.activity.data.Activity; import cn.hy.activity.service.ActivityService; import cn.hy.weixin.entity.AccessToken; import cn.hy.weixin.util.AccessTokenUtil; import cn.hy.weixin.util.CheckUtil; import cn.hy.weixin.util.MessageUtil; import net.sf.json.JSONObject; public class WeichatServlet extends HttpServlet{ private static final long serialVersionUID = 3264201758083219979L; public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{ String signature = request.getParameter("signature"); String timestamp = request.getParameter("timestamp"); String nonce = request.getParameter("nonce"); String echostr = request.getParameter("echostr"); System.out.println("signature="+signature); System.out.println("timestamp="+timestamp); System.out.println("nonce"+nonce); PrintWriter out = response.getWriter(); if(CheckUtil.checkSignature(signature, timestamp, nonce)){ out.print(echostr); } } public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException{ request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); try { Map<String,String> map = MessageUtil.xmlToMap(request); String toUserName = map.get("ToUserName"); String fromUserName = map.get("FromUserName"); String msgType = map.get("MsgType"); String content = map.get("Content"); for(String str : map.keySet()) { System.out.println("key..." + str + " " + map.get(str)); } String message = null; if(MessageUtil.MESSAGE_EVENT.equals(msgType)){ String eventType = map.get("Event"); System.out.println("msgType" +msgType); System.out.println("scene_id = " + map.get("EventKey"));//获取二维码自定义参数 if(MessageUtil.MESSAGE_EVENT_SUBSCRIBE.equals(eventType)){//关注事件 //创建自定义菜单 AccessToken token = AccessTokenUtil.getAccessToken(); String menu = JSONObject.fromObject(MessageUtil.initMenu()).toString(); int result = MessageUtil.createMenu(token.getToken(), menu); System.out.println("-------------------------------------"); System.out.println(token.getToken()); System.out.println(menu +"\r\n"+menu.getBytes().length); System.out.println("--crate menu--"+result +"--------------"); System.out.println("-------------------------------------"); int activityId =0; String sceneId = map.get("EventKey"); if(sceneId != null && sceneId !=""){ try{ activityId =Integer.parseInt(sceneId.split("_")[1]); }catch(Exception e){ activityId =0; } } if(activityId == 0 ){ message = MessageUtil.initText(toUserName, fromUserName, MessageUtil.initMenuMsaage()); }else{ ActivityService activityService = (ActivityService) Mvcs.ctx().getDefaultIoc().get(ActivityService.class); System.out.println("activityService"+activityService); Activity activity = activityService.getActivityDetail(activityId); StringBuffer sb =new StringBuffer(); sb.append("名称: "+ activity.getName()+"\n\n"); sb.append("活动代码: "+ activity.getCode()+"\n\n"); message = MessageUtil.initText(toUserName, fromUserName, MessageUtil.initMenuMsaage(sb)); } } if(MessageUtil.MESSAGE_EVENT_UNSUBSCRIBE.equals(eventType)){//取消关注 //todo } if(MessageUtil.MESSAGE_EVENT_VIEW.equals(eventType)) { System.out.println("here...." + eventType); } } else if(MessageUtil.MESSAGE_TEXT.equals(msgType)){ if(content.equals("1")){ System.out.println("toUserName------------------------" +toUserName); message = MessageUtil.initText(toUserName, fromUserName, MessageUtil.fristKey()); System.out.println("message------------------------" +message); }else if(content.equals("2")){ System.out.println("toUserName------------------------" +toUserName); message = MessageUtil.initText(toUserName, fromUserName, MessageUtil.secKey()); }else if(content.equals("3")){ System.out.println("toUserName------------------------" +toUserName); message = MessageUtil.initNews(toUserName, fromUserName); }else if(content.equals("?") || content.equals("?")){ message = MessageUtil.initText(toUserName, fromUserName, MessageUtil.initMenuMsaage()); } } out.print(message); } catch (Exception e) { e.printStackTrace(); }finally{ out.close(); } } }
service 获取
ActivityService activityService = (ActivityService) Mvcs.ctx().getDefaultIoc().get(ActivityService.class);
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(支持支付宝和微信 以及扣扣群),没钱捧个人场,谢谢各位。
个人主页:http://knight-black-bob.iteye.com/
谢谢您的赞助,我会做的更好!