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