当前位置: 移动技术网 > IT编程>开发语言>Java > Spring MVC 中 短信验证码功能的实现方法

Spring MVC 中 短信验证码功能的实现方法

2019年07月22日  | 移动技术网IT编程  | 我要评论

在外部网站中短信的验证很有必要,比如在实现注册、验证用户信息等的情况下。在springmvc中的实现如下:

短信接口

短信接口,有些企业会购买的有移动的短信平台接口。如果是个人或者是小企业可以使用一些云服务的。比如百度的api store上面的。

我使用的是:http://apistore.baidu.com/apiworks/servicedetail/1018.html

当然短信接口肯定都是要付费的,而且是基于模板的,具体的使用说明可以看这个网址里面的使用说明。

前端界面

前端的界面,可能如下,点击获取验证码,然后按钮变为灰色并且倒计时。(手机号是我的~~)

html代码就不写了,js如下:vailidationcode是获取验证码按钮的id。phone是手机号码的id,手机号码只是简单的验证了,如果是要更精确,使用正则,其中的url的sendsms是后台的springmvc的路径。

$("#validationcode").click(function(){
var phone = $("#phone").val();
if($("#phone").val() && $("#phone").val().length == 11){
$.ajax({
cache : false,
url : "sendsms",
data : {phone : phone}
});
updatebuttonstatus();
}else {
alert("请输入合法的手机号");
}
});
var countdown=60;
function updatebuttonstatus(){
var phone = $("#validationcode");
if (countdown == 0) {
phone.attr("disabled","false");
phone.val("免费获取验证码");
countdown = 60;
return;
} else {
phone.attr("disabled","true");
phone.val("重新发送(" + countdown + ")");
countdown--;
}
settimeout(function() {
updatebuttonstatus() }
,1000)
}

后端代码

@requestmapping(value = "/sendsms")
@responsebody
public string sendsms(@requestparam("phone") string phone, httpservletrequest request){
stringbuilder code = new stringbuilder();
random random = new random();
// 生成6位验证码
for (int i = 0; i < 6; i++) {
code.append(string.valueof(random.nextint(10)));
}
httpsession session = request.getsession();
session.setattribute(validate_phone, phone);
session.setattribute(validate_phone_code, code.tostring());
session.setattribute(send_code_time, new date().gettime());
string smstext = "您的验证码是:"+code;
smsutil.send(phone,smstext);
return "success";
}

其中的smsutil是封装的上面的短信接口的发送类。参考如下,其中的api_key改成自己的。

public class smsutil {
static string httpurl = "http://apis.baidu.com/kingtto_media/106sms/106sms";
final static string api_key = "xxxx";
public static string send(string phone,string content) {
bufferedreader reader = null;
string result = null;
stringbuffer sbf = new stringbuffer();
try {
string httparg = "mobile="+phone+"&content="+urlencoder.encode(content,"utf-8")+"&tag=2";
httpurl = httpurl + "?" + httparg ;
url url = new url(httpurl);
httpurlconnection connection = (httpurlconnection) url
.openconnection();
connection.setrequestmethod("get");
// 填入apikey到http header
connection.setrequestproperty("apikey",api_key);
connection.connect();
inputstream is = connection.getinputstream();
reader = new bufferedreader(new inputstreamreader(is, "utf-8"));
string strread = null;
while ((strread = reader.readline()) != null) {
sbf.append(strread);
sbf.append("\r\n");
}
reader.close();
result = sbf.tostring();
} catch (exception e) {
e.printstacktrace();
}
return result;
}
}

前台的表单提交前还需要使用ajax做一下表单的验证,验证一下验证码是否正确:

@requestmapping("/validate")
@responsebody
protected string validate(httpservletrequest request,@requestparam("phone") string inputphone,@requestparam ("code") string inputcode){
httpsession session = request.getsession();
string code = (string) session.getattribute(validate_phone_code);
string phone = (string) session.getattribute(validate_phone);
if(phone.equals(inputphone) && code.equalsignorecase(inputcode)){
return "success";
}else{
return "failure";
}
}

以上所述是小编给大家介绍的spring mvc 中 短信验证码功能的实现方法,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网