栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java实现短信验证码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java实现短信验证码

作者简介:大家好,我是郭嘉烨
个人主页:郭嘉烨
往期链接:Java实现手机短信验证码功能

目录
  • 前言
    • 原代码
    • 优化
      • 添加maven依赖
      • 创建config.properties配置文件
      • 创建applicationContext.xml配置文件
      • 封装工具类
      • 测试类

前言

上一篇简单的实现了短信的验证码功能,今天主要对上篇的代码进行优化,这样方便运用到具体的实例当中。


原代码
// This file is auto-generated, don't edit it. Thanks.

import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.tea.*;
import com.aliyun.dysmsapi20170525.*;
import com.aliyun.dysmsapi20170525.models.*;
import com.aliyun.teaopenapi.*;
import com.aliyun.teaopenapi.models.*;

public class Sample {
    public static void main(String[] args_) throws Exception {
        Config config = new Config()
                //这里修改为我们上面生成自己的AccessKey ID
                .setAccessKeyId("LTAI5tLdwwPpCrJbzMdTdQ7")
             
                //这里修改为我们上面生成自己的AccessKey Secret
                .setAccessKeySecret("jnP9no9KhtsE4kVbqbV40JKCksCqy3");
        // 访问的域名
        config.endpoint = "dysmsapi.aliyuncs.com";
        Client client = new Client(config);
        SendSmsRequest sendSmsRequest = new SendSmsRequest()
                .setSignName("阿里云短信测试")//短信签名
                .setTemplateCode("SMS_154950909")//短信模板
                .setPhoneNumbers("157xxxxxxxx")//这里填写接受短信的手机号码
                .setTemplateParam("{"code":"1234"}");//验证码
        // 复制代码运行请自行打印 API 的返回值
        client.sendSms(sendSmsRequest);
    }
}
优化 添加maven依赖
 

     org.mybatis
     mybatis
     3.5.9
 
 
 
     org.springframework
     spring-context
     5.1.6.RELEASE
 
 
 
     org.springframework
     spring-jdbc
     5.1.6.RELEASE
 

 
 
     com.aliyun
     dysmsapi20170525
     2.0.9
 
 
 
     junit
     junit
     4.12
     test
 
 
 
     org.springframework
     spring-test
     5.1.6.RELEASE
 
 
     com.aliyun.oss
     aliyun-sdk-oss
     3.10.2
 
创建config.properties配置文件

在原代码中,我们用到的AccessKey ID、AccessKey Secret、域名。短信签名以及短信模板都是固定不变的,因此我们可以将它们拿出来放到一个配置文件中。

#aliyun短信配置参数
aliyun.accessKeyId=LTAI5tLdwwPpCrJbzMdTdQ7w
aliyun.accessKeySecret=jnP9no9KhtsE4kVbqbV40JKCksCqy2
aliyun.endpoint=dysmsapi.aliyuncs.com
aliyun.signName=阿里云短信测试
aliyun.templateCode=SMS_154950909
创建applicationContext.xml配置文件

在配置文件中配置注解自动扫描,以及加载外部配置文件



    
    
    
    

封装工具类
package com.it.sms;

import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.dysmsapi20170525.models.SendSmsResponseBody;
import com.aliyun.teaopenapi.models.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component  //创建当前类的对象
public class MessageTemplate {

    @Value("${aliyun.accessKeyId}")
    private String accessKeyId;
    @Value("${aliyun.accessKeySecret}")
    private String accessKeySecret;
    @Value("${aliyun.endpoint}")
    private String endpoint;
    @Value("${aliyun.signName}")
    private String signName;
    @Value("${aliyun.templateCode}")
    private String templateCode;


    public void sendMessage(String phone,String code) throws Exception {
        Config config = new Config()
                // 您的AccessKey ID
                .setAccessKeyId(accessKeyId)
                // 您的AccessKey Secret
                .setAccessKeySecret(accessKeySecret);
        // 访问的域名
        config.endpoint = endpoint;
        Client client = new Client(config);
        SendSmsRequest sendSmsRequest = new SendSmsRequest()
                .setSignName(signName)
                .setTemplateCode(templateCode)
                .setPhoneNumbers(phone)
                .setTemplateParam("{"code":""+code+""}");
        // 复制代码运行请自行打印 API 的返回值
        SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);
        SendSmsResponseBody body = sendSmsResponse.getBody();
        System.out.println("短信发送结果:"+body.toString());//打印结果
    }
}

测试类
package com.it.sms;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import static org.junit.Assert.*;
//spring整合单元测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class MessageTemplateTest {

    @Autowired
    private MessageTemplate messageTemplate;

    @Test
    public void sendMessage() {

        try {
            messageTemplate.sendMessage("17809523930","1024");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

✨ 原 创 不 易 , 还 希 望 各 位 大 佬 支 持 一 下 textcolor{blue}{原创不易,还希望各位大佬支持一下} 原创不易,还希望各位大佬支持一下

 点 赞 , 你 的 认 可 是 我 创 作 的 动 力 ! textcolor{green}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力!

⭐️ 收 藏 , 你 的 青 睐 是 我 努 力 的 方 向 ! textcolor{green}{收藏,你的青睐是我努力的方向!} 收藏,你的青睐是我努力的方向!

✏️ 评 论 , 你 的 意 见 是 我 进 步 的 财 富 ! textcolor{green}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/842355.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号