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/
谢谢您的赞助,我会做的更好!
相关推荐
在MVC模式下,Nutz提供了Controller、Service、DAO三层架构,使得业务逻辑与视图层分离,便于代码维护和扩展。Controller负责处理HTTP请求,Service层处理业务逻辑,而DAO层则与数据库交互。Nutz还提供了强大的模板...
2. 用户在SSO服务进行身份验证,成功后,SSO服务生成一个服务票据(Service Ticket)并返回给用户。 3. 用户携带服务票据返回到应用系统A,系统A通过与SSO服务通信验证服务票据的有效性。 4. 验证通过后,系统A创建...
ASP.NET是一种基于.NET框架的服务器端编程模型,用于构建高性能、易于维护的Web应用程序。在这个中学图书馆系统的案例中,开发者利用ASP.NET的技术栈设计并实现了这样一个功能丰富的平台,旨在为中学生、教师以及图书馆管理员提供方便的信息管理和检索服务。下面我们将深入探讨这个系统的核心知识点。 1. **ASP.NET架构**:ASP.NET提供了多种开发模式,如Web Forms、MVC、Web API和Blazor。本系统可能采用了Web Forms或MVC架构,这两种模式都支持事件驱动和模型-视图-控制器(MVC)设计原则,便于创建动态网页和处理用户交互。 2. **数据库设计**:图书馆系统通常需要管理书籍信息、借阅记录、用户账户等数据,因此数据库设计是关键。可能使用了SQL Server或MySQL等关系型数据库,通过ADO.NET或Entity Framework进行数据访问,实现CRUD(创建、读取、更新、删除)操作。 3. **身份验证与授权**:为了确保系统安全,。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
《图书管理系统(基于ASP .NET)》是一款专为学习者设计的应用程序,旨在提供一个全面的图书管理平台。系统的设计采用ASP .NET技术,这是一款由微软开发的用于构建动态网站、web应用和web服务的强大工具。ASP .NET框架以其高效、安全和易于维护的特点,深受开发者的喜爱。 该系统包含了多个核心模块,这些模块覆盖了图书管理的主要功能。有图书录入模块,它允许管理员录入图书的基本信息,如书名、作者、出版社、ISBN号、分类等。图书查询模块提供给用户方便快捷的搜索功能,用户可以根据书名、作者、关键词等条件进行检索。此外,借阅与归还模块确保图书的流通管理,记录图书的借阅状态,提醒用户按时归还,并处理超期罚款等事务。 系统还具备用户管理模块,允许用户注册、登录、修改个人信息。对于权限管理,后台有专门的管理员角色,他们可以对用户进行操作,如分配权限、冻结或解冻账户。同时,系统的统计分析模块能够生成各类报表,如图书借阅量、热门书籍、用户活跃度等,这些数据对于图书馆运营决策有着重要参考价值。 在。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
本专刊的主要目的是帮助初学者系统化和结构化地掌握会计知识。我们采用思维导图的形式,将复杂的会计概念和流程进行有效的简化,旨在让学习者能够更清晰地理解这些内容,并增强记忆效果。通过视觉化的方式,读者不仅能够感受到会计知识的关联性,还能轻松掌握关键点,提升学习效率。无论是在学习新知识还是复习旧知识时,这种方法都能够为学习者提供极大的便利和帮助。
精选毕设项目-todolist,带简易后端
精选毕设项目-美食菜谱
精选毕设项目-地图定位
精选毕设项目-学富网家教电商平台
精选毕设项目-乐租租房工具
chromedriver-linux64_123.0.6296.0
永磁同步电机,基于扩展卡尔曼滤波算法无传感器仿真模型,s函数编写算法,基于matlab simulink搭建。 附参考资料
factoryio液位PID仿真程序 使用简单的梯形图编写,通俗易懂,起到抛砖引玉的作用,比较适合有动手能力的入门初学者。 软件环境: 1、西门子编程软件:TIA Portal V15(博图V15) 2、FactoryIO 2.4.0 内容清单: 1、FactoryIO中文说明书+场景模型文件 2、博图V15PLC程序(源码)。
comsol光学仿真 任意偏振态BIC,利用扭转光子晶体实现远场偏振的调控,包含能带,品质因子计算以及远场辐射偏振椭圆绘制
STM32使用技巧,实战应用开发小系统参考资料,源码参考。经测试可运行。 详细介绍了一些STM32框架的各种功能和模块,以及如何使用STM32进行应用开发等。 适用于初学者和有经验的开发者,能够帮助你快速上手STM32并掌握其高级特性。。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
内容概要:本文提出了一种数据驱动进化算法(ADE-GRNN)来优化风电场布局,旨在最大化风电场功率输出并减少计算时间。文中引入了自适应差分演化算法和通用回归神经网络来训练数据驱动模型,通过快速过滤低效候选解来提高求解效率。同时详细描述了风力发电机组的位置排布对功率产生成关键影响的因素如湍流效应以及不同算法(ADE、JADE、CLPSO)间的性能对比实验结果。研究表明,在多个评估指标方面,所提出的 ADE-GRNN 方法均表现出显著优势。 适合人群:对于希望深入理解智能算法在工程实践中特别是新能源领域的应用的研发人员和技术爱好者非常适合。 使用场景及目标:用于需要高效能解决复杂组合最优化问题的企业或项目组,特别是在涉及大规模风电场布局规划时的目标定位是提升能源转换率,降低成本消耗,提高运算速度。 其他说明:未来的研究可以进一步考虑更为复杂的风电场拓扑结构及更精确地模拟尾流效应,并探索三维空间下最优布局的可能性;此外还可以尝试不同的机器学习方法来稳定代理模型的表现。
电流计算方法:.docx
精选毕设项目-茶叶商城(含后端)
精选毕设项目-化妆品商城
chromedriver-linux64_123.0.6286.0