之前写过c#短信验证博客《c#_完美实现短信验证》,应该说都是刚开始无从下手,但久而久之,自然明白了无非就是一些人家第三方封装好的接口,然后自己传参,仅此而已。
今天小编再次带你参观java版的手机短信验证,很有意思的,大致和c#相同,但也有不同之处了。
首先,给你们看看效果图的啦!
然后我宏观说一下代码实现思路,当然首先的手机格式验证什么的,都不说了啊,直接聊主题:点击发送验证码后,根据短信验证码接口(天下畅通平台提供的接口)提供的参数,进行传参,然后发送,捕获异常,搞定,只不过java这边需要进入两个java类,也是人家封装好的,直接放到自己的工具类调用即可。
然后,看前台的jsp代码中'获取验证码'的代码:(避免刷新页面,所以异步获取
//ajax异步“获取验证码”
function verifyPhone(){
var code = ""; //验证码
var codeLength = 6;//验证码长度
var usertel = $('#tel').val();
// 产生验证码
for ( var i = 0; i < codeLength; i++) {
code += parseInt(Math.random() * 9).toString();
}
// 1.创建异步交互对象
var xhr = createXmlHttp();
// 2.设置监听
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
if(xhr.status == 200){
}
else{
document.getElementById("telephonenameTip").innerHTML = "<font color='red'>× 网路异常</font>";
}
}
}
// 3.打开连接
xhr.open("GET","<%=rootPath%>"+"/VerifyPhone?usertel="+usertel+"&code=" +code,true);
// 4.发送
xhr.send(null);
}
//创建异步交互对象
function createXmlHttp(){
var xmlHttp;
try{
xmlHttp = new XMLHttpRequest();
}catch(e){
try{
//IE
xmlHttp = new ActiveXobject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlHttp = new ActiveXobject("Microsoft.XMLHTTP");
}catch(e){}
}
}
return xmlHttp;
}
后台controller代码:
/*
* 校验手机验证码
*/
@RequestMapping("VerifyPhone")
public String VerifyPhone(String clientId,HttpServletRequest request,
HttpServletResponse response) throws UnsupportedEncodingException {
//短信验证码接口的测试数据(天下畅通平台给参数)
String result = "0";
String usertel =request.getParameter("usertel");
String code = request.getParameter("code");
<span style="white-space:pre"> </span>String url = "http://xtx.telhk.cn:8080/sms.aspx";
<span style="white-space:pre"> </span>String userid = "****";
<span style="white-space:pre"> </span>String account = "****";
<span style="white-space:pre"> </span>String password = "*****";
<span style="white-space:pre"> </span>String content = "[微信装修平台]注册验证码为:" + code.toString();
String mobile = usertel;
String action=null;
usertel = Util.trim(usertel);
code = Util.trim(code);
/** 短信验证码存入session(session的默认失效时间30分钟) */
//request.setAttribute("code", code.toString());
Cookie cookieCode=new Cookie("code",code);
cookieCode.setPath("/");
String IdDomain = request.getServerName();
cookieCode.setDomain(IdDomain);
cookieCode.setMaxAge(cookieAge);
response.addCookie(cookieCode);
//String a = (String)request.getAttribute("code");
try {
String retObj = SmsClientSend.sendSms(url,action, userid, account, password, mobile, content);
//System.out.println(retObj);
if (retObj == "未发送,编码异常") {
JacksonJsonUntil jacksonJsonUtil = new JacksonJsonUntil();
boolean flag;
flag = false;
jacksonJsonUtil.beanToJson(response, flag);
} else {
request.setAttribute("bool", true);
}
} catch (Exception ex) {
ex.printStackTrace();
}
return "verifyPhone";
}
然后中间需要引入两个java包,有需要的童鞋可以联系我的!