Springboot整合阿里云短信服务
目录
一、阿里云短信配置
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整合阿里云短信服务相关推荐
- SpringBoot整合阿里云短信服务详细过程(保证初学者也能实现)
前言 网上关于实操性的文章普遍大部分都记录不全,要么只记录重点部分,对于刚学习的小伙伴来说看起来是比较困难的 所以,基于这一点. 该文章会详细介绍使用SpringBoot整合阿里云短信服务的每一步过程 ...
- SpringBoot集成阿里云短信服务
SpringBoot集成阿里云短信服务 1.准备工作 2.项目集成 2.1 添加依赖 2.2 配置文件 2.3 业务逻辑实现 在实际项目中经常有发送短信的功能,今天进说一下对接阿里云短信服务实现短信发 ...
- springboot集成阿里云短信服务,实现发送短信功能
springboot集成阿里云短信服务,实现发送短信功能 准备工作: 1.登陆阿里云->进入控制台->开通短信服务(进入后根据提示开通) 2.充值(借人家平台发短信你以为不要钱的?我充了3 ...
- SpringBoot实现阿里云短信服务
阿里云短信服务 了解阿里云用户权限 准备工作 开启子用户 新建一个用户组 创建用户并添加进用户组 开启阿里云短信服务 添加模板 添加签名 编写代码测试 新建项目 导入依赖 编写测试代码 开启redis ...
- springboot+springsecurity+阿里云短信服务验证实现注册登录
使用springboot+security+Aliyun短信服务实现注册登录 为了实现个人博客部分的登录注册,我采用了阿里云短信服务发送验证码,后端比对验证码的方式完成注册,现在功能还不完全,以后这个 ...
- springboot整合阿里云短信验证(无需签名和模板,通过阿里云api测试实现短信验证)
一.开通阿里云短信服务 开通步骤如下图所示 开通完成后,进入阿里云短信验证首页,点击国内消息 一般来说,在短信验证时需要签名管理和模板管理,但是签名管理需要备案或者上线服务,所以对于没有备案和上线应用 ...
- springboot整合阿里云短信验证服务
导入上面jar包 <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sd ...
- SpringBoot集成阿里云短信服务实现登录注册(超详细)
本篇博客采用得技术为:springboot + redis + aliyun短信验证 redis我用来做短信校验,首先我们先刨除redis部分做一个发送功能 登录你得阿里云账号 1 -> 控制台 ...
- 谷粒学院——Day12【整合阿里云短信服务、首页登录和注册】
❤ 作者主页:欢迎来到我的技术博客
最新文章
- .net下绘制统计图工具-请推荐
- 买了一个软件测试就业班课程,不知道值不值
- 3168串口java_电子称串口读取数据(转)
- Android 图片压缩、照片选择、裁剪,上传、一整套图片解决方案
- 批量修改 Netapp NFS Export
- kafka从入门到精通:Java设置全局变量传值
- 机器学习Scikit-Learn基本操作实战
- 20145212 罗天晨 Web安全基础实践
- U盘写保护通过量产工具解除
- 计算机固态硬盘256g,1t(后悔买256g的固态硬盘了)
- read/write函数
- 通用计算机含义,当今的计算机其通用的名称应该是通用数字计算机,请简单描述包含的三层含义? (8.0分)...
- ps软件哪个好?十年老用户推荐这两个给你
- 一步一步学Spring Boot(一)
- Oracle中有dateadd吗,SQL Server 中add函数到 oracle date add的操作
- windows winrar 指令_windows中winrar命令行方式使用
- ubuntu18.0.4安装网卡驱动记录
- 地图数据快速渲染------基于分布式系统的准实时渲染技术(前段+后端)
- [渝粤教育] 中国地质大学 政府与事业单位会计 复习题 (2)
- 2017年大数据可视化的3个趋势,有企业已经提前布局
热门文章
- 照相机数据恢复软件使用办法
- 2023最新闪灵域名生成短链接源码+附安装步骤/功能强大
- 基于MobileNet的人脸表情识别系统(MATLAB GUI版+原理详解)
- 论文里的好句子(2)
- MPLS-虚拟专用网 实验(分支之间可以互通)
- Kubesphere部署nacos
- anaconda打开python文本编辑器_Python开发环境安装(Anaconda+PyCharm)
- c++win32项目 如何显示后再删除一个绘图_CAD 100个快捷键+20个实用绘图技巧
- 为什么很多人都不愿意去小公司面试?
- ar模型matlab fpe,基于Matlab的AR模型参数估计.pdf