java web實現手機短信驗證碼登錄實例


java web實現手機短信驗證碼登錄實例

運行環境

jdk7+tomcat7

項目技術(必填)

Servlet+Ajax+Bootstrap

數據庫文件

我這里沒用到數據庫,比較簡單,如果需要用到數據庫不會的話可以私信我或者加我QQ

jar包文件

jar包只有一個,在項目的lib文件夾下

運行截圖

java web實現手機短信驗證碼登錄實例java web實現手機短信驗證碼登錄實例

項目描述

這個小案例呢大家可以在項目中小小的裝個逼,本人在校生,反正在項目答辯的時候,看大家的反應還不錯,哈哈。

本次案例呢大家不僅可以在登錄的時候使用,另外注冊的時候也可以用,大家自行決定,反正我在注冊的時候用了,這次的案例沒給大家敲注冊,就簡單寫了個登錄給大家分享一下。沒有使用任何框架,用了一個簡單的Servlet,非常簡單易懂,下載下來我的代碼,只需要簡單改幾行代碼就可以了,改成屬於你自己的驗證碼就OK了!

1、你需要登錄秒嘀科技(www.miaodiyun.com)這個官網去注冊一個賬號,這是我已經注冊之后的是這個樣子的,你需要做的就是,在開發者信息里面獲得你自己的AUTH_TOKEN

java web實現手機短信驗證碼登錄實例java web實現手機短信驗證碼登錄實例


2、需要在配置管理中新建一個模板,這個模板就是發送驗證碼的模板,給大家看一下我的模板


java web實現手機短信驗證碼登錄實例

3、接着下載下來我的代碼,導入開發工具之后,在java.aaa.util這個包中的GetMessageCode的類中,把我圈住的地方改成你自己的,我相信大家應該都能看懂,就不細說了, 把我圈的地方改了就行了(ACCOUNT_SID和AUTH_TOKEN)最好就改這兩個就好了;下面那個是要和你模板里面的對應的,上面說了,你需要自己新建一個模板,而我下面圈住那個就是和你模板一致,切記,一定要保持一致

 

java web實現手機短信驗證碼登錄實例


4、一切准備就緒之后,部署項目,啟動項目,登錄地址是:

頁面展示如下:

java web實現手機短信驗證碼登錄實例

驗證碼提示錯誤頁面:(我收到的驗證碼是919805,我輸入的,是919804,就會提示錯誤,當然輸入正確就跳轉成功頁面)

java web實現手機短信驗證碼登錄實例

java web實現手機短信驗證碼登錄實例

java web實現手機短信驗證碼登錄實例

最后忘了跟大家說了,這個網站注冊之后會贈送10元錢,足夠大家學習使用了,所以不用擔心需要充錢,放心用。

整理不易,剛開始摸索的時候遭遇各種BUG,一度想放棄,但是最終還是堅持下來了,同時也想着能夠給大家分享一下,希望大家能夠喜歡。

 

 

 

 

Java實現短信驗證碼--(阿里雲完整教程)

版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接: https://blog.csdn.net/qq_32196629/article/details/80062926

        我們在實現登錄注冊的時候,常常用到了短信驗證碼校驗,下面給大家簡單介紹阿里雲的短信服務平台。

        相關jar包:

        aliyun-java-sdk-core-3.2.2.jar(點此下載

        aliyun-java-sdk-dysmsapi-1.0.0-SANPSHOT.jar(點此下載

        用Maven導入jar包:


    
    
    
            
  1. <dependency>
  2.      <groupId>com.aliyun </groupId>
  3.     <artifactId>aliyun-java-sdk-core </artifactId>
  4.     <version>3.2.8 </version> 注:如提示報錯,先升級基礎包版,無法解決可聯系技術支持
  5. </dependency>
  6. <dependency>
  7.      <groupId>com.aliyun </groupId>
  8.      <artifactId>aliyun-java-sdk-dysmsapi </artifactId>
  9.      <version>1.1.0 </version>
  10. </dependency>

        1、登錄阿里雲官網(https://www.aliyun.com/),進入之后打開控制台,左上角點擊產品與服務,然后選擇短信服務,如圖:

        2.創建AccessKey,(Access Key ID -- Access Key Secret)如圖:


        3.進行 短信簽名短信模板 設定,如圖:

        4.基本配置完成后,我們就需要寫代碼了

        StaticParam.java (為了方便配置和明確易懂,我把配置參數放到這個類中)


    
    
    
            
  1. package com.beishan.util;
  2. public class StaticPeram {
  3. /**
  4. * 手機驗證部分配置
  5. */
  6. // 設置超時時間-可自行調整
  7. final static String defaultConnectTimeout = "sun.net.client.defaultConnectTimeout";
  8. final static String defaultReadTimeout = "sun.net.client.defaultReadTimeout";
  9. final static String Timeout = "10000";
  10. // 初始化ascClient需要的幾個參數
  11. final static String product = "Dysmsapi"; // 短信API產品名稱(短信產品名固定,無需修改)
  12. final static String domain = "dysmsapi.aliyuncs.com"; // 短信API產品域名(接口地址固定,無需修改)
  13. // 替換成你的AK (產品密)
  14. final static String accessKeyId = "accessKeyId"; // 你的accessKeyId,填你自己的 上文配置所得 自行配置
  15. final static String accessKeySecret = "accessKeySecret"; // 你的accessKeySecret,填你自己的 上文配置所得 自行配置
  16. // 必填:短信簽名-可在短信控制台中找到
  17. final static String SignName = "簽名";    // 阿里雲配置你自己的短信簽名填入
  18. // 必填:短信模板-可在短信控制台中找到
  19. final static String TemplateCode = "SMS_91945080"; // 阿里雲配置你自己的短信模板填入
  20. }

        PhoneCode.java(工具類,基本可以直接使用,里面加入了main方法,可以直接在main方法中設置你的手機號碼進行測試)


    
    
    
            
  1. package com.beishan.util;
  2. import com.aliyuncs.DefaultAcsClient;
  3. import com.aliyuncs.IAcsClient;
  4. import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
  5. import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
  6. import com.aliyuncs.exceptions.ClientException;
  7. import com.aliyuncs.exceptions.ServerException;
  8. import com.aliyuncs.http.MethodType;
  9. import com.aliyuncs.profile.DefaultProfile;
  10. import com.aliyuncs.profile.IClientProfile;
  11. public class PhoneCode {
  12. private static String code ;
  13. public static void main(String[] args) {
  14. String phone = "手機號碼"; //此處可輸入你的手機號碼進行測試
  15. getPhonemsg(phone);
  16. }
  17. /**
  18. * 阿里雲短信服務配置
  19. * @param mobile
  20. * @return
  21. */
  22. public static String getPhonemsg(String mobile) {
  23. /**
  24. * 進行正則關系校驗
  25. */
  26. System.out.println(mobile);
  27. if (mobile == null || mobile == "") {
  28. System.out.println( "手機號為空");
  29. return "";
  30. }
  31. /**
  32. * 短信驗證---阿里大於工具
  33. */
  34. // 設置超時時間-可自行調整
  35. System.setProperty(StaticPeram.defaultConnectTimeout, StaticPeram.Timeout);
  36. System.setProperty(StaticPeram.defaultReadTimeout, StaticPeram.Timeout);
  37. // 初始化ascClient需要的幾個參數
  38. final String product = StaticPeram.product; // 短信API產品名稱(短信產品名固定,無需修改)
  39. final String domain = StaticPeram.domain; // 短信API產品域名(接口地址固定,無需修改)
  40. // 替換成你的AK
  41. final String accessKeyId = StaticPeram.accessKeyId; // 你的accessKeyId,參考本文檔步驟2
  42. final String accessKeySecret = StaticPeram.accessKeySecret; // 你的accessKeySecret,參考本文檔步驟2
  43. // 初始化ascClient,暫時不支持多region
  44. IClientProfile profile = DefaultProfile.getProfile( "cn-hangzhou",
  45. accessKeyId, accessKeySecret);
  46. try {
  47. DefaultProfile.addEndpoint( "cn-hangzhou", "cn-hangzhou", product,
  48. domain);
  49. } catch (ClientException e1) {
  50. e1.printStackTrace();
  51. }
  52. //獲取驗證碼
  53. code = vcode();
  54. IAcsClient acsClient = new DefaultAcsClient(profile);
  55. // 組裝請求對象
  56. SendSmsRequest request = new SendSmsRequest();
  57. // 使用post提交
  58. request.setMethod(MethodType.POST);
  59. // 必填:待發送手機號。支持以逗號分隔的形式進行批量調用,批量上限為1000個手機號碼,批量調用相對於單條調用及時性稍有延遲,驗證碼類型的短信推薦使用單條調用的方式
  60. request.setPhoneNumbers(mobile);
  61. // 必填:短信簽名-可在短信控制台中找到
  62. request.setSignName(StaticPeram.SignName);
  63. // 必填:短信模板-可在短信控制台中找到
  64. request.setTemplateCode(StaticPeram.TemplateCode);
  65. // 可選:模板中的變量替換JSON串,如模板內容為"親愛的${name},您的驗證碼為${code}"時,此處的值為
  66. // 友情提示:如果JSON中需要帶換行符,請參照標准的JSON協議對換行符的要求,比如短信內容中包含\r\n的情況在JSON中需要表示成\\r\\n,否則會導致JSON在服務端解析失敗
  67. request.setTemplateParam( "{ \"number\":\""+code+ "\"}");
  68. // 可選-上行短信擴展碼(無特殊需求用戶請忽略此字段)
  69. // request.setSmsUpExtendCode("90997");
  70. // 可選:outId為提供給業務方擴展字段,最終在短信回執消息中將此值帶回給調用者
  71. request.setOutId( "yourOutId");
  72. // 請求失敗這里會拋ClientException異常
  73. SendSmsResponse sendSmsResponse;
  74. try {
  75. sendSmsResponse = acsClient.getAcsResponse(request);
  76. if (sendSmsResponse.getCode() != null
  77. && sendSmsResponse.getCode().equals( "OK")) {
  78. // 請求成功
  79. System.out.println( "獲取驗證碼成功!!!");
  80. } else {                               
  81.                                  //如果驗證碼出錯,會輸出錯誤碼告訴你具體原因
  82.                                 System.out.println(sendSmsResponse.getCode());
  83.                                 System.out.println( "獲取驗證碼失敗...");
  84. }
  85. } catch (ServerException e) {
  86. e.printStackTrace();
  87. return "由於系統維護,暫時無法注冊!!!";
  88. } catch (ClientException e) {
  89. e.printStackTrace();
  90. return "由於系統維護,暫時無法注冊!!!";
  91. }
  92. return "true";
  93. }
  94. /**
  95. * 生成6位隨機數驗證碼
  96. * @return
  97. */
  98. public static String vcode(){
  99. String vcode = "";
  100. for ( int i = 0; i < 6; i++) {
  101. vcode = vcode + ( int)(Math.random() * 9);
  102. }
  103. return vcode;
  104. }
  105. }

        注:如果獲取驗證碼失敗:sendSmsResponse.getCode() 會返回一個錯誤碼告訴你失敗的原因,如:返回isv.AMOUNT_NOT_ENOUGH 為:賬戶余額不足。希望大家都能成功實現。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM