程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Spring MVC 中 短信驗證碼功效的完成辦法

Spring MVC 中 短信驗證碼功效的完成辦法

編輯:關於JAVA

Spring MVC 中 短信驗證碼功效的完成辦法。本站提示廣大學習愛好者:(Spring MVC 中 短信驗證碼功效的完成辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Spring MVC 中 短信驗證碼功效的完成辦法正文


在內部網站中短信的驗證很有需要,好比在完成注冊、驗證用戶信息等的情形下。在SpringMVC中的完成以下:

短信接口

短信接口,有些企業會購置的有挪動的短信平台接口。假如是小我或許是小企業可使用一些雲辦事的。好比百度的API Store下面的。

我應用的是:http://apistore.百度.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.百度.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 中 短信驗證碼功效的完成辦法,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved