在Web项目中手机短信验证码实现的全过程记录

 更新时间:2017年12月07日 15:54:37   作者:james  
这篇文章主要给大家介绍了关于在Web项目中实现短信验证码的全过程记录,文中通过示例代码介绍的非常详细,在文末跟大家提供了源码下载,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。

前言

最近在做远程智能水表管理系统这个过程有一个功能是在注册页面可以使用手机注册,找了许久才大致了解了手机验证码实现流程,今天在此和大家分享一下。下面话不多说了,来一起看看详细的介绍吧。

短信验证码实现流程

      1、构造手机验证码:使用random对象生成要求的随机数作为验证码,例如4位验证码:1000~9999之间随机数;

      2、使用接口向短信平台发送手机号和验证码数据,然后短信平台再把验证码发送到制定手机号上,接口参数一般包括:目标手机号,随机验证码(或包含失效时间),平台接口地址,平台口令;

      3、保存接口返回的信息(一般为json文本数据,然后需转换为json对象格式);

      4、将手机号--验证码、操作时间存入Session中,作为后面验证使用;

      5、接收用户填写的验证码及其他数据;

      6、对比提交的验证码与Session中的验证码是否一致,同时判断提交动作是否在有效期内;

      7、验证码正确且在有效期内,请求通过,处理相应的业务。

今天我们就前4步进行实现:

为了简化流程,我们在就使用固定手机验证码而不采用随机产生的数作为验证码

在此我们有一个前端页面一个后台逻辑处理页面,下面就该两项进行简单说明:

前端页面

<body>
 <h1>
  <%
  Send send = new Send();
  String PostData = "account=JamesXT&password=18770918982lkx&mobile=18770918982&content="+java.net.URLEncoder.encode("您的订单编码:4557。如需帮助请联系客服。","utf-8");
  //out.println(PostData);
  String ret = Send.SMS(PostData, "http://sms.106jiekou.com/utf8/sms.aspx");
  out.println(ret);
  //请自己反序列化返回的字符串并实现自己的逻辑
 %>
 </h1>
 </body>

PostData:就是想短信服务平台提交的待处理的数据,它一般包括短信服务平台注册者的用户账号名,密码,以及你想向谁发送短信验证码以及短信验证码所属信息的完整内容。

String ret = Send.SMS(PostData, http://sms.106jiekou.com/utf8/sms.aspx);

这个是将数据和短信服务平台的网址进行绑定,即该提交数据交付哪个平台进行处理。

后台逻辑处理类:

public class Send {
 //SMS方法中有两个参数,这个参数是由前台页面提交的PostData和前者绑定的短信服务地址确定的
 public static String SMS(String postData, String postUrl) {
 try {
  //发送POST请求
  URL url = new URL(postUrl);
  HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  conn.setRequestMethod("POST");
  conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
  conn.setRequestProperty("Connection", "Keep-Alive");
  conn.setUseCaches(false);
  conn.setDoOutput(true);
  conn.setRequestProperty("Content-Length", "" + postData.length());
  OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
  //将前台提交的数据放入输出流中,即向短信服务平台发送该条业务请求
  out.write(postData);
  out.flush();
  out.close();

  //获取响应状态码
  if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
  System.out.println("connect failed!");
  return "";
  }
  //获取响应内容
  String line, result = "";
  BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
  while ((line = in.readLine()) != null) {
  result += line + "\n";
  }
  in.close();
  return result;
 } catch (IOException e) {
  e.printStackTrace(System.out);
 }
 return "";
 }
}

最后附上Demo源码地址:http://xiazai.jb51.net/201712/yuanma/MobileRegist(jb51.net).rar

本demo所用短信服务商地址为:http://www.106jiekou.com/login/?ReturnUrl=/member/trigger/templates/

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Java按值传递和按址传递(面试常见)

    Java按值传递和按址传递(面试常见)

    这篇文章主要介绍了Java按值传递和按址传递(面试常见)知识,在面试笔试题中经常会遇到,今天小编给大家详细介绍下,需要的朋友可以参考下
    2017-02-02
  • Struts2实现文件下载功能代码分享(文件名中文转码)

    Struts2实现文件下载功能代码分享(文件名中文转码)

    这篇文章主要介绍了Struts2实现文件下载功能代码分享(文件名中文转码)的相关资料,需要的朋友可以参考下
    2016-06-06
  • Java实现五子棋(附详细源码)

    Java实现五子棋(附详细源码)

    这篇文章主要为大家详细介绍了Java实现五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Quarkus集成open api接口使用swagger ui展示

    Quarkus集成open api接口使用swagger ui展示

    这篇文章主要为大家介绍了Quarkus集成open api接口使用swagger ui的展示示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • 浅析Java Web错误/异常处理页面

    浅析Java Web错误/异常处理页面

    这篇文章主要和大家一起对Java Web错误/异常处理页面进行分析研究,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • Java数据结构中七种排序算法实现详解

    Java数据结构中七种排序算法实现详解

    这篇文章主要介绍了Java数据结构中七种排序算法的实现方法,排序算法可分为两大类,比较类排序和非比较类排序,顾名思义可知它们是通过比较来决定元素间的相对次序,需要详细了解排序算法的朋友可以参考下
    2024-02-02
  • 使用FileReader采用的默认编码

    使用FileReader采用的默认编码

    这篇文章主要介绍了使用FileReader采用的默认编码,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • SSM框架+Plupload实现分块上传大文件示例

    SSM框架+Plupload实现分块上传大文件示例

    这篇文章主要介绍了SSM框架+Plupload实现分块上传示例(Spring+SpringMVC+MyBatis+Plupload),将用户选中的文件(可多个)分隔成一个个小块,依次向服务器上传,有兴趣的可以了解一下。
    2017-03-03
  • java中的switch case语句使用详解

    java中的switch case语句使用详解

    这篇文章主要介绍了java中的switch case语句使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • springcloud实现注册中心Eureka

    springcloud实现注册中心Eureka

    这篇文章主要介绍了springcloud实现注册中心Eureka,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02

最新评论