乐信手机注册验证服务
- 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/