目录

一、阿里云短信配置

1、开通短信服务​

2、 申请模板

3、申请签名

二、springboot中集成阿里云短信服务

0、pom中引入依赖

1、配置application.properties

2、编写controller,根据手机号发送短信

3、编写service

4、实现类

5、随机数工具类


一、阿里云短信配置

1、开通短信服务

2、 申请模板

3、申请签名

二、springboot中集成阿里云短信服务

0、pom中引入依赖

  <!--阿里云短信服务依赖--><dependencies><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId></dependency></dependencies>

1、配置application.properties

# 服务端口
server.port=8005
# 服务名
spring.application.name=service-msm# mysql数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/guli?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root#Resis配置
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=lyf20
spring.redis.database= 0
spring.redis.timeout=1800000
spring.redis.lettuce.pool.max-active=20
spring.redis.lettuce.pool.max-wait=-1
#最大阻塞等待时间(负数表示没限制
spring.redis.lettuce.pool.max-idle=5
spring.redis.lettuce.pool.min-idle=0#返回json的全局时间格式
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8#mybatis日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

2、编写controller,根据手机号发送短信

package com.lyf.msmservice.controller;
import com.lyf.commonutils.R;
import com.lyf.msmservice.service.MsmService;
import com.lyf.msmservice.utils.RandomUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/*** @Author 刘耀福* @create 2021/9/4 18:44*/
@RestController
@RequestMapping("/edumsm/msm")
public class MsmController {@Autowiredprivate MsmService msmService;@Autowiredprivate RedisTemplate<String, String> redisTemplate;@GetMapping(value = "/send/{phone}")public R code(@PathVariable String phone) {//先从redis中获取验证码,如果取到直接返回,如果取不到进行阿里云发送String code = redisTemplate.opsForValue().get(phone);if(!StringUtils.isEmpty(code)) {return R.ok();}code = RandomUtil.getFourBitRandom();Map<String,Object> param = new HashMap<>();param.put("code", code);boolean isSend = msmService.send(phone, param);if(isSend) {//验证码发送成功,将手机号的验证码放到redis 中5分钟redisTemplate.opsForValue().set(phone, code,5, TimeUnit.MINUTES);return R.ok();} else {return R.error().message("发送短信失败");}}
}

3、编写service

package com.lyf.msmservice.service;
import java.util.Map;/*** @Author 刘耀福* @create 2021/9/4 18:45*/
public interface MsmService {boolean send(String phone, Map<String, Object> param);
}

4、实现类

package com.lyf.msmservice.service.impl;import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.lyf.msmservice.service.MsmService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.Map;
/*** @Author 刘耀福* @create 2021/9/4 18:46*/
@Service
public class MsmServiceImpl implements MsmService {/*** 发送短信*/@Overridepublic boolean send(String PhoneNumbers, Map<String,Object> param) {if(StringUtils.isEmpty(PhoneNumbers)) {return false;}//设置固定参数DefaultProfile profile =DefaultProfile.getProfile("default", "LTAIq6nIPY09VROj", "FQ7UcixT9wEqMv9F35nORPqKr8XkTF");IAcsClient client = new DefaultAcsClient(profile);CommonRequest request = new CommonRequest();request.setMethod(MethodType.POST);request.setDomain("dysmsapi.aliyuncs.com");request.setVersion("2017-05-25");request.setAction("SendSms");//设置发送的相关参数request.putQueryParameter("PhoneNumbers", PhoneNumbers);//手机号request.putQueryParameter("SignName", "申请的阿里云签名名称");//申请的阿里云签名名称request.putQueryParameter("TemplateCode", "SMS_180051135");//模板coderequest.putQueryParameter("TemplateParam", JSONObject.toJSONString(param));//验证码try {CommonResponse response = client.getCommonResponse(request);System.out.println(response.getData());return response.getHttpResponse().isSuccess();} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();}return false;}
}

5、随机数工具类

package com.lyf.msmservice.utils;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
/*** 获取随机数**/
public class RandomUtil {private static final Random random = new Random();private static final DecimalFormat fourdf = new DecimalFormat("0000");private static final DecimalFormat sixdf = new DecimalFormat("000000");/*** 生成4位的随机数* @return*/public static String getFourBitRandom() {return fourdf.format(random.nextInt(10000));}/*** 生成6位的随机数* @return*/public static String getSixBitRandom() {return sixdf.format(random.nextInt(1000000));}/*** 给定数组,抽取n个数据* @param list* @param n* @return*/public static ArrayList getRandom(List list, int n) {Random random = new Random();HashMap<Object, Object> hashMap = new HashMap<Object, Object>();// 生成随机数字并存入HashMapfor (int i = 0; i < list.size(); i++) {int number = random.nextInt(100) + 1;hashMap.put(number, i);}// 从HashMap导入数组Object[] robjs = hashMap.values().toArray();ArrayList r = new ArrayList();// 遍历数组并打印数据for (int i = 0; i < n; i++) {r.add(list.get((int) robjs[i]));System.out.print(list.get((int) robjs[i]) + "\t");}System.out.print("\n");return r;}
}

Springboot整合阿里云短信服务相关推荐

  1. SpringBoot整合阿里云短信服务详细过程(保证初学者也能实现)

    前言 网上关于实操性的文章普遍大部分都记录不全,要么只记录重点部分,对于刚学习的小伙伴来说看起来是比较困难的 所以,基于这一点. 该文章会详细介绍使用SpringBoot整合阿里云短信服务的每一步过程 ...

  2. SpringBoot集成阿里云短信服务

    SpringBoot集成阿里云短信服务 1.准备工作 2.项目集成 2.1 添加依赖 2.2 配置文件 2.3 业务逻辑实现 在实际项目中经常有发送短信的功能,今天进说一下对接阿里云短信服务实现短信发 ...

  3. springboot集成阿里云短信服务,实现发送短信功能

    springboot集成阿里云短信服务,实现发送短信功能 准备工作: 1.登陆阿里云->进入控制台->开通短信服务(进入后根据提示开通) 2.充值(借人家平台发短信你以为不要钱的?我充了3 ...

  4. SpringBoot实现阿里云短信服务

    阿里云短信服务 了解阿里云用户权限 准备工作 开启子用户 新建一个用户组 创建用户并添加进用户组 开启阿里云短信服务 添加模板 添加签名 编写代码测试 新建项目 导入依赖 编写测试代码 开启redis ...

  5. springboot+springsecurity+阿里云短信服务验证实现注册登录

    使用springboot+security+Aliyun短信服务实现注册登录 为了实现个人博客部分的登录注册,我采用了阿里云短信服务发送验证码,后端比对验证码的方式完成注册,现在功能还不完全,以后这个 ...

  6. springboot整合阿里云短信验证(无需签名和模板,通过阿里云api测试实现短信验证)

    一.开通阿里云短信服务 开通步骤如下图所示 开通完成后,进入阿里云短信验证首页,点击国内消息 一般来说,在短信验证时需要签名管理和模板管理,但是签名管理需要备案或者上线服务,所以对于没有备案和上线应用 ...

  7. springboot整合阿里云短信验证服务

    导入上面jar包 <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sd ...

  8. SpringBoot集成阿里云短信服务实现登录注册(超详细)

    本篇博客采用得技术为:springboot + redis + aliyun短信验证 redis我用来做短信校验,首先我们先刨除redis部分做一个发送功能 登录你得阿里云账号 1 -> 控制台 ...

  9. 谷粒学院——Day12【整合阿里云短信服务、首页登录和注册】

    ❤ 作者主页:欢迎来到我的技术博客

最新文章

  1. .net下绘制统计图工具-请推荐
  2. 买了一个软件测试就业班课程,不知道值不值
  3. 3168串口java_电子称串口读取数据(转)
  4. Android 图片压缩、照片选择、裁剪,上传、一整套图片解决方案
  5. 批量修改 Netapp NFS Export
  6. kafka从入门到精通:Java设置全局变量传值
  7. 机器学习Scikit-Learn基本操作实战
  8. 20145212 罗天晨 Web安全基础实践
  9. U盘写保护通过量产工具解除
  10. 计算机固态硬盘256g,1t(后悔买256g的固态硬盘了)
  11. read/write函数
  12. 通用计算机含义,当今的计算机其通用的名称应该是通用数字计算机,请简单描述包含的三层含义? (8.0分)...
  13. ps软件哪个好?十年老用户推荐这两个给你
  14. 一步一步学Spring Boot(一)
  15. Oracle中有dateadd吗,SQL Server 中add函数到 oracle date add的操作
  16. windows winrar 指令_windows中winrar命令行方式使用
  17. ubuntu18.0.4安装网卡驱动记录
  18. 地图数据快速渲染------基于分布式系统的准实时渲染技术(前段+后端)
  19. [渝粤教育] 中国地质大学 政府与事业单位会计 复习题 (2)
  20. 2017年大数据可视化的3个趋势,有企业已经提前布局

热门文章

  1. 照相机数据恢复软件使用办法
  2. 2023最新闪灵域名生成短链接源码+附安装步骤/功能强大
  3. 基于MobileNet的人脸表情识别系统(MATLAB GUI版+原理详解)
  4. 论文里的好句子(2)
  5. MPLS-虚拟专用网 实验(分支之间可以互通)
  6. Kubesphere部署nacos
  7. anaconda打开python文本编辑器_Python开发环境安装(Anaconda+PyCharm)
  8. c++win32项目 如何显示后再删除一个绘图_CAD 100个快捷键+20个实用绘图技巧
  9. 为什么很多人都不愿意去小公司面试?
  10. ar模型matlab fpe,基于Matlab的AR模型参数估计.pdf