zoukankan      html  css  js  c++  java
  • 开发笔记

    【简单的微信公众平台开发】

    或许是最容易的方式:

    1- 做好能够适应手机屏幕的 H5 网页,放在自家的服务器上(用户、支付什么的完全和微信分离

    2- 把网址直接填入 自定义菜单跳转网页 

    3- 没认证的话可以把网址添加到自动回复中去,别人一样可以看到

    【短信验证码的简单实现】错误 ↓ 。。明显的线程不安全

    请求短信的 URL 为 webapp/reg.do?method=sendSMS

    package com.xkfx.service;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Random;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.yuke.bean.User;
    
    @SuppressWarnings("serial")
    @WebServlet("/reg.do")
    public class DoRegisterService extends HttpServlet {
        
        String code = null; // 保存验证码
        
        // 生成随机字符串
        public static String getRandomString(int length) { // length 表示生成字符串的长度
            String base = "abcdefghijklmnopqrstuvwxyz0123456789";   
            Random random = new Random();   
            StringBuffer sb = new StringBuffer();   
            for (int i = 0; i < length; i++) {   
                int number = random.nextInt(base.length());   
                sb.append(base.charAt(number));   
            }   
            return sb.toString();   
        }  
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            req.setCharacterEncoding("UTF-8");
            resp.setCharacterEncoding("UTF-8");
            // 处理 AJAX 请求
            String txtMobile = req.getParameter("txtMobile");
            if (req.getParameter("method") != null 
                    && req.getParameter("method").equals("sendSMS")) {
                sendSMS(txtMobile, resp); // 生成随机验证码并发送到客户手机
                return;
            }
            String txtPassword = req.getParameter("txtPassword");
            boolean flag = (code != null) && 
                    code.equals(req.getParameter("txtCode"))
                    && txtMobile.equals(req.getParameter("txtMobile"))
                    && txtPassword != null && !"".equals(txtPassword);
            if (flag) {
                UserService userService = new UserService();
                User user = new User();
                user.setUsername(txtMobile);
                user.setPassword(txtPassword);
                flag = userService.register(user); // 判断用户是否已经注册
                if (flag) req.getSession().setAttribute("user", user); // 维护用户信息
            }
            code = null; // 重置验证码
            // 返回 JSON
            PrintWriter pw = resp.getWriter();
            pw.println("{"status": " + (flag ? 1 : 0)
                    + ", "msg": "验证码错误或该账号已经注册"" + ", "url": "/wxapp/user"}");
            pw.close();
        }
        
        public void sendSMS(String txtMobile, HttpServletResponse resp) throws IOException {
            code = getRandomString(4); // 生成随机验证码
            System.out.println(txtMobile); // 发送验证码到客户手机
            PrintWriter pw = resp.getWriter();
            pw.println("{"status": " + 1
                    + ", "msg": "手机验证码获取成功"" + ", "url": "/wxapp/user"}");
            pw.close();
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req, resp);
        }
        
    }

    把 System.out.println(txtMobile); 改成调用一个发短信的函数,把手机号,验证码作为参数传进去就 OK 了,例如 sendSMS("12223232", code); 当然这个发短信的函数需要到提供该服务的平台下载,使用方法也很简单,就 Java 而言,一般会有如下步骤:

    添加必要的 JAR 包 --> 添加一些加密解密(或者其它)的类 --> 把示例代码 COPY 进来 --> 修改成需要的函数

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴
    Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴
    Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴
    Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴
    Java实现 蓝桥杯VIP 算法提高 士兵排队问题
    Java实现 蓝桥杯VIP 算法提高 士兵排队问题
    Java实现 蓝桥杯VIP 算法提高 士兵排队问题
    Java实现 蓝桥杯VIP 算法提高 士兵排队问题
    Java实现 蓝桥杯VIP 算法提高 数字黑洞
    Minifilter微过滤框架:框架介绍以及驱动层和应用层的通讯
  • 原文地址:https://www.cnblogs.com/xkxf/p/7172996.html
Copyright © 2011-2022 走看看