乐信手机注册验证服务

  • BizNumberUtil随机码工具类:当前时间精确到秒+3位数字(此工具包可忽略)

package com.java11.crowd.util;

import java.text.SimpleDateFormat;

import java.util.Date;

/**

随机码工具包(当前时间精确到秒+3位数字)

*/

public class BizNumberUtil {

public static  int curttNo;

private final static String dataFormatString="yyMMddHHmmss";

public  synchronized static final String createBizId(){

if(curttNo<999) {

curttNo++;

}else{

curttNo=1;

}

String curttNoStr=String.valueOf(curttNo);

while(curttNoStr.length()<3){;

curttNoStr="0"+curttNoStr;

}

return new SimpleDateFormat(dataFormatString).format(new Date())+curttNoStr;

}

public static void main(String[] args) {

System.out.println(createBizId());

}

}

  • MD5.java工具类

package com.java11.crowd.util;

import java.security.MessageDigest;

/**

MD5码工具包

*/

public class MD5 {

private final static char[] hexDigits = { '0', '1', '2', '3', '4', '5',

'6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };

private static String bytes2hex(byte[] bytes) {

StringBuffer sb = new StringBuffer();

int t;

for (int i = 0; i < 16; i++) {// 16 == bytes.length;

t = bytes[i];

if (t < 0)

t += 256;

sb.append(hexDigits[(t >>> 4)]);

sb.append(hexDigits[(t % 16)]);

}

return sb.toString();

}

public static String getMd5String(String strSrc) {

try {

MessageDigest md5 = MessageDigest.getInstance("MD5");

return bytes2hex(md5.digest(strSrc.getBytes()));

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

}

  • SendSms.java短信发送工具类,sendSms方法

package com.java11.crowd.util;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLEncoder;

import java.util.Random;

/**

短信发送工具包,sendSms方法

*/

public class SendSms {

//测试

public static void main(String[] args) {

System.out.println("=======================");

//随机生成一个1-100000的验证码并存放在模板中

new SendSms().sendSms("xxxxx@qq.com", "wwwwww", "17700000000", "尊敬的用户:您的验证码:"+new Random().nextInt(100000)+"工作人员不会索要,请勿泄露。【wcl】");

System.out.println("=======================");

}

//sendSms方法,短信发送的具体实现

public  String sendSms(String accName,String accPwd,String mobies,String content){

StringBuffer sb = new StringBuffer("http://www.lx198.com/sdk/send?");

try {

sb.append("accName="+accName); //用户名

sb.append("&accPwd="+MD5.getMd5String(accPwd)); //密码

sb.append("&aimcodes="+mobies);//收取验证码的手机号

sb.append("&content="+URLEncoder.encode(content,"UTF-8"));//验证信息

sb.append("&dataType=string");

System.out.println(sb.toString());

URL url = new URL(sb.toString());

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

connection.setRequestMethod("POST");

BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

return in.readLine();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

}

  • sendSms.js(可自由选择)

function getRealPath(){

//获取当前网址,如: http://localhost:8083/myproj/view/ahha.jsp

var curWwwPath=window.document.location.href;

//获取主机地址之后的目录,如: myproj/view/ahha.jsp

var pathName=window.document.location.pathname;

var pos=curWwwPath.indexOf(pathName);

//获取主机地址,如: http://localhost:8080

var localhostPaht=curWwwPath.substring(0,pos);

//获取带"/"的项目名,如:/ahha

var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1);

//得到了 服务器名称和项目名称

var realPath=localhostPaht+projectName;

return realPath;

}

// 声明全局变量pageContext

var pageContext = getRealPath();

$(function(){

send();

});

function send(){

var sms="";

document.getElementById("btn").οnclick=function(){

var phone=$("#usPhone").val();

if(phone!="")

{

$.ajax({

url:pageContext + "/user/code.action",

type:"post",

dataType : "json",

data:{"usPhone":phone},

success:function(data){

sms=data;

alert("========="+sms);

}

});

}else{

alert("请输入手机号");

return false;

}

};

$("#lo").click(function(){

var code=$("#code").val();

var phone=$("#usPhone").val();

var usPassword=$("#usPassword").val();

if(code==""){

alert("请输入验证码");

}else{

if(sms==code){

$.ajax({

url:pageContext + "/user/phoneReg.action",

type:"post",

dataType : "json",

data:{"usPhone":phone,"usPassword":usPassword},

success:function(data){

alert(data.msg);

},

});

}else{

alert("验证码错误");

}

}

});

}

  • UserController

package com.java11.crowd.controller;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Date;

import java.util.HashMap;

import java.util.Map;

import java.util.Random;

import javax.servlet.ServletRequest;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import org.apache.ibatis.annotations.Param;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

import com.java11.crowd.service.IUserService;

import com.java11.crowd.util.EmailUtil;

import com.java11.crowd.util.GenerateLinkUtil;

import com.java11.crowd.util.IDCardUtil;

import com.java11.crowd.util.MyPasswordEncrypt;

import com.java11.crowd.util.SendSms;

import com.java11.crowd.vo.User;

/**

实现短信注册的Controller

*/

@RequestMapping("/user/*")

@Controller

public class UserController extends AbstractController {

@Autowired

private IUserService service;

//进入注册邮箱页面

@RequestMapping("/toregist")

public String toemail() {

return "index/email_reg";

}

//进入手机注册页面

@RequestMapping("/phoneregist")

public String phonereg() {

return "index/phone_reg";

}

//生成验证码,并发送给用户

@RequestMapping("code")

public @ResponseBody int code(HttpServletRequest request,HttpSession session) {

String accName="xxxxxxx@qq.com";//短信平台的注册账户

String accPwd="wwwwwww"; //平台密码

String mobies=request.getParameter("usPhone");//用户输入的手机号

int  code=new Random().nextInt(1000000); //随机生成验证码

String content="尊敬的用户:您的验证码:"+code+"工作人员不会索要,请勿泄露。【wcl】"; //格式要和短信平台一直  签名要写对

session.setAttribute("code", code);//将生成的code验证码保存到session

System.out.println(request.getSession().getAttribute("code"));//测试能否从session中获取验证码

SendSms sms=new SendSms();//创建工具包对象

sms.sendSms(accName, accPwd, mobies, content); //调用发送方法

return code;

}

@RequestMapping("phoneReg")

public @ResponseBody Object phoneReg(User vo,HttpServletRequest request) throws Exception {

//System.out.println(vo);

vo.setUsRole(1);

vo.setUsCreateTime(new Date());

Map<String,String> map=new HashMap();

map.put("msg", "注册成功");

if(service.phoneReg(vo)) {

return map;

}else {

return "redirect:/user/phoneregist.action";

}

}

}

注:此api可去乐信短信平台官网进行下载:http://www.lmobile.cn/

java手机注册获取验证码--乐信平台相关推荐

  1. 手机注册(发送短信验证码)

    手机注册(发送短信验证码) 去阿里开通短信服务,accesskey号然后创建签名 复制粘贴代码就可使用,根据指导修改就ok 如有报错 不能使用 还请大家谅解.(没有经过作者同意,禁止修改代码,盗用(利 ...

  2. 注册app短信验证平台_怎样挑选网站验证码短信平台?

    短信验证码对于一个网站来说,已经是管理用户和保障网站安全的重要手段了.短信验证码在网站中负责注册登录.修改密码/找回密码.支付转账.账户异常行为.敏感操作(修改账号信息,修改重要设置,修改手机号码)等 ...

  3. 验证码短信平台短信发送失败怎么办?

    日常工作和生活中,我们经常要注册网站或者APP账号,或者找回密码,忘记密码时,也都需要用到验证码来进行身份验证,验证码的形式有很多,比如:图形.识字.短信等等,这些企业.网站为了保障数据安全也是煞费苦 ...

  4. 验证码短信平台短信发送失败原因,四大方面全面解读

    日常生活或工作当中,我们经常遇到短信验证码,验证码的形式有很多,有图形.数字.英文.滑块.短信以及语音验证码,其中短信验证码是被公认为最安全的验证方式,比如我们换手机,换手机号码,再次登录QQ.微信. ...

  5. 微信小程序手机号注册获取验证码+验证判断

    微信小程序手机号注册获取验证码+验证判断 扫描二维码,进入首页,找到"小程序演示",效果类->手机号码注册效果,点击进入即可.

  6. jeecg 手机注册 阿里云短信API 【 阿里云短信发送验证码 平台配置和项目中使用】

    文章目录 jeecg 项目效果展示 短息通知页面入口 代码中调用短信api 配置和代码 API中的重要参数配置项: 阿里控制台注册 注册签名 注册短信模板  阿里云短信发送验证码配置和项目使用 je ...

  7. 验证码短信平台API接口的应用

    事实上,现在不论是企业商家还是用户,都现已渐渐离不开短信验证码接口途径了.因为现在很多工作都在经过短信验证码接口实现各种短信服务功用,例如帐号的注册.身份的验证.付出时的提示.物流告诉等等.那么接下来 ...

  8. JAVA实现注册登陆的短信验证

    一.找到一个短信API服务数据接口 使用短信api接口服务我这里是使用一个第三方的接口服务(步骤需要不是打广告). 1.获取短信接口的Appkey程序钥匙. https://www.juhe.cn/ ...

  9. JAVA实现注册页面验证码刷新

    撰写人--软件二班--陈喜平 需要的工具:tomcat/eclipse/jdk/(注意jdk版本要和tomca相匹配,以及注意区分32位和64位) 步骤:依次创建servlet (服务器需要)/ js ...

最新文章

  1. [恢]hdu 2524
  2. Pycharm使用技巧(转载)
  3. 呼呗电销机器人_为什么企业销售电销都用电销外呼智能机器人
  4. SpringBoot在项目中基本配置设置
  5. 系统新模块增加需要哪些步骤_人工智能之父的问题解决策略:模块化
  6. 增强现实采用什么相机_从增强现实到情感检测:相机如何成为解读世界的最佳工具...
  7. 微信小程序蓝牙模块BLE开发说明基础知识
  8. 为什么联通走归属地ip_为什么企业争先恐后地进行品牌虚拟IP打造?
  9. 如何同时让多台服务器安装系统,如何同时安装多台服务器?
  10. python开源项目2019_2019年6月Github上最热门的Python开源项目
  11. 在软件工程中有两件难事
  12. STP中各算法接口开销(COST)计算方式
  13. 如何使用百度云人脸识别服务(V3版接口python语言) (七)开始应用人脸库
  14. 华为笔试题——分礼物
  15. dic={key:“字典”}
  16. iOS 仿钉钉文字水印
  17. 计算机组成原理画出CPU与主存及3-8译码器之间信号线的连接问题
  18. 《深度探索C++对象模型》勘误表
  19. 【搜集】AVI解码器下载(AE导入avi时报错的解决办法)
  20. QQ登录界面模仿和事件监听(下)

热门文章

  1. 显卡机器linux 6卡挖矿,显卡挖矿是什么意思?购买显卡矿机应该注意什么?
  2. Kali2021修改更新源
  3. 在Visual C++中实现一个DLL木马
  4. 分解和合并:Java 也擅长轻松的并行编程! 作者:Julien Ponge
  5. Jzoj5665 奥立卡的诗
  6. php中autofocus,HTML5中的autofocus(自动聚焦)属性介绍
  7. 提高IT专业人员薪酬水平的十种方法
  8. 星志远:亚马逊开店怎么选择区域?
  9. JavaScript开发之数组求和和平均值
  10. 软件测试之测试经理篇