博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
手机号码验证
阅读量:4159 次
发布时间:2019-05-26

本文共 4214 字,大约阅读时间需要 14 分钟。

1.首先用ajax调用servlet

<script type="text/javascript">

    $(function() {
        $('#bt').click(function() {
            var number = window.document.getElementById("phoneNumber").value;
            //var codes = window.document.getElementById("codes").value;
            $.ajax({
                //第一步 请求路径
                url : "code",
                //第二步 请求方式:get或post
                type : "get",
                //第三步 请求参数:1.传统的拼接 2.json格式
                //data:"uname=对对对&pwd=123",
                data : {
                    "phoneNumber" : number
                },
                //默认发送的是异步请求,若为false 则为同步请求
                async : true,
                //服务器返回的参数的类型:jason/text/html三种方式
                dateType : "text",
                //请求的结果:success成功响应后执行的方法
                success : function(content) {
                    //content响应正文,回调参数
                    //alert(content);
                },
                error : function() {
                    //没有回调参数,url不存在,响应接收类型不一致
                    alert("验证失败");
                }
            });
        });
    });

    function show() {

        var codes = window.document.getElementById("codes").value;
        var number = window.document.getElementById("phoneNumber").value;
        $.ajax({
            //第一步 请求路径
            url : "code_reg",
            //第二步 请求方式:get或post
            type : "get",
            //第三步 请求参数:1.传统的拼接 2.json格式
            //data:"uname=对对对&pwd=123",
            data : {
                "codes" : codes,
                "phoneNumber" : number
            },
            //默认发送的是异步请求,若为false 则为同步请求
            async : true,
            //服务器返回的参数的类型:jason/text/html三种方式
            dateType : "text",
            //请求的结果:success成功响应后执行的方法
            success : function(row) {
                //content响应正文,回调参数
                if(row>0){
                alert("密码修改成功,初始密码为手机号后4位");
                location.href="show_All";
                }else{
                    alert("密码修改失败");
                    location.href="show_All";
                }
                    
            },
            error : function() {
                //没有回调参数,url不存在,响应接收类型不一致
                alert("验证失败");
            }
        });

    };

</script>

2.对应的两个servlet

@WebServlet("/code")

public class sendCodeServlet extends HttpServlet {

    private static final long serialVersionUID = -8559217512617151073L;

    @Override

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String phoneNumber = req.getParameter("phoneNumber");

        if (phoneNumber.trim().equals("") || phoneNumber == null) {

            resp.sendRedirect("show_All");
            return;
        }
        // 生成一个6位0~9之间的随机字符串
        StringBuffer buffer = new StringBuffer();
        Random random = new Random();
        for (int i = 0; i < 6; i++) {
            buffer.append(random.nextInt(10));
        }
        PrintWriter out = resp.getWriter();
        try {
            if (!SMScode.sendCode(phoneNumber, buffer.toString())) {
            } else {
                // 将验证码、手机号码和当前的系统时间存储到session中
                req.getSession().setAttribute("code", buffer.toString());
                req.getSession().setAttribute("number", phoneNumber);
                req.getSession().setAttribute("time", System.currentTimeMillis());
                // 将数据yitext传前台
                resp.getWriter().write(buffer.toString());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        out.close();

    }

    @Override

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        doGet(req, resp);

    }
}

@WebServlet("/code_reg")

public class RegCodes extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String codes = req.getParameter("codes");
         String phoneNumber = req.getParameter("phoneNumber");
        String code = (String) req.getSession().getAttribute("code");
 
        if (codes.equals(code)) {//两次验证一样,修改密码为手机后4位
            IUserService us=new UserServiceImpl();
            int updateUserByMobel = us.updateUserByMobel(phoneNumber);
            resp.getWriter().write(JSON.toJSONString(updateUserByMobel));
        }else {//失败修改
        resp.getWriter().write(JSON.toJSONString(0));
        }
    }

    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        doGet(req, resp);
    }
}

3.发送验证码的方法

public class SMScode {

    // 把手机号码和随机验证码传递过来

    public static boolean sendCode(String phoneNumber, String code) throws Exception {

        String str_code = URLEncoder.encode("#code#=" + code, "UTF-8");

        // 包装好URL对象,将接口地址包装在此对象中
        URL url = new URL("http://v.juhe.cn/sms/send?mobile=" + phoneNumber + "&tpl_id={此处去聚合数据申请即可}&tpl_value=" + str_code
                + "&key={此处去聚合数据申请即}");
        /* 短信模板id */ /* 短信应用接口的key */
        // 打开连接,得到连接对象
        URLConnection connection = url.openConnection();
        // 向服务器发送连接请求
        connection.connect();
        // 获得服务器响应的数据
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
        StringBuffer buffer = new StringBuffer();
        String lineDate = null;
        while ((lineDate = bufferedReader.readLine()) != null) {
            buffer.append(lineDate);
        }
        bufferedReader.close();
        if (buffer.toString().indexOf("\"error_code\":0") >= 0) {
            return true;
        }

        return false;

    }

转载地址:http://rejxi.baihongyu.com/

你可能感兴趣的文章
go的值类型和引用类型------重要的概念
查看>>
求二叉树中结点的最大值(所有结点的值都是正整数)
查看>>
用go的flag包来解析命令行参数
查看>>
来玩下go的http get
查看>>
队列和栈的本质区别
查看>>
matlab中inline的用法
查看>>
如何用matlab求函数的最值?
查看>>
Git从入门到放弃
查看>>
java8采用stream对集合的常用操作
查看>>
EasySwift/YXJOnePixelLine 极其方便的画出真正的一个像素的线
查看>>
Ubuntu Linux系统下apt-get命令详解
查看>>
ubuntu 16.04 下重置 MySQL 5.7 的密码(忘记密码)
查看>>
Ubuntu Navicat for MySQL安装以及破解方案
查看>>
HTTPS那些事 用java实现HTTPS工作原理
查看>>
oracle函数trunc的使用
查看>>
MySQL 存储过程或者函数中传参数实现where id in(1,2,3,...)IN条件拼接
查看>>
java反编译
查看>>
Class.forName( )你搞懂了吗?——转
查看>>
jarFile
查看>>
EJB与JAVA BEAN_J2EE的异步消息机制
查看>>