国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Spring MVC 中 短信驗(yàn)證碼功能的實(shí)現(xiàn)方法

2019-11-26 13:46:09
字體:
供稿:網(wǎng)友

在外部網(wǎng)站中短信的驗(yàn)證很有必要,比如在實(shí)現(xiàn)注冊(cè)、驗(yàn)證用戶信息等的情況下。在SpringMVC中的實(shí)現(xiàn)如下:

短信接口

短信接口,有些企業(yè)會(huì)購買的有移動(dòng)的短信平臺(tái)接口。如果是個(gè)人或者是小企業(yè)可以使用一些云服務(wù)的。比如百度的API Store上面的。

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

當(dāng)然短信接口肯定都是要付費(fèi)的,而且是基于模板的,具體的使用說明可以看這個(gè)網(wǎng)址里面的使用說明。

前端界面

前端的界面,可能如下,點(diǎn)擊獲取驗(yàn)證碼,然后按鈕變?yōu)榛疑⑶业褂?jì)時(shí)。(手機(jī)號(hào)是我的~~)

HTML代碼就不寫了,JS如下:vailidationCode是獲取驗(yàn)證碼按鈕的ID。phone是手機(jī)號(hào)碼的ID,手機(jī)號(hào)碼只是簡(jiǎn)單的驗(yàn)證了,如果是要更精確,使用正則,其中的url的sendSms是后臺(tái)的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("請(qǐng)輸入合法的手機(jī)號(hào)");}});var countdown=60;function updateButtonStatus(){var phone = $("#validationCode");if (countdown == 0) {phone.attr("disabled","false");phone.val("免費(fèi)獲取驗(yàn)證碼");countdown = 60;return;} else {phone.attr("disabled","true");phone.val("重新發(fā)送(" + countdown + ")");countdown--;}setTimeout(function() {updateButtonStatus() },1000)}

后端代碼

@RequestMapping(value = "/sendSms")@ResponseBodypublic String sendSMS(@RequestParam("phone") String phone, HttpServletRequest request){StringBuilder code = new StringBuilder();Random random = new Random();// 生成6位驗(yàn)證碼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 = "您的驗(yàn)證碼是:"+code;SMSUtil.send(phone,smsText);return "success";}

其中的SMSUtil是封裝的上面的短信接口的發(fā)送類。參考如下,其中的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 headerconnection.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;}}

前臺(tái)的表單提交前還需要使用ajax做一下表單的驗(yàn)證,驗(yàn)證一下驗(yàn)證碼是否正確:

@RequestMapping("/validate")@ResponseBodyprotected 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 中 短信驗(yàn)證碼功能的實(shí)現(xiàn)方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)武林網(wǎng)網(wǎng)站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 康定县| 揭西县| 长垣县| 册亨县| 静乐县| 根河市| 遂昌县| 信宜市| 渝中区| 闽清县| 日土县| 绥滨县| 宝清县| 岐山县| 蚌埠市| 石景山区| 营口市| 临洮县| 惠州市| 徐汇区| 定边县| 太保市| 京山县| 儋州市| 新宾| 冀州市| 江阴市| 新巴尔虎左旗| 鸡泽县| 胶州市| 梅河口市| 报价| 米脂县| 竹溪县| 秀山| 万载县| 内乡县| 阳朔县| 钟山县| 奉化市| 新巴尔虎左旗|