Springboot整合阿里云短信SDK发送短信验证码笔记
一、阿里云短信服务条件
1.阿里云帐号开通短信服务
2.申请短信签名signName和模版templateCode,并通过。模版中的code不要变
添加短信签名(个人开发者建议选择验证码,通用的话需要补充企业信息),添加短信模版(推荐使用推荐模版,审核快一点)
3.设置accessKeyId和Secret,且确保账户有钱或者可以考虑购买短信套餐
二、代码开始
1.创建Springboot项目hello-rabbit,导入核心依赖,官方依赖(尽量最新版)
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.2.RELEASE</version><relativePath/>
</parent>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><!-- 阿里云短信 SDK for Java -->
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.4.6</version>
</dependency>
2.application.yml配置
alisms:accessKeyId: AccessKey管理里的accessKeyIdaccessSecret: AccessKey管理里的SecretsignName: 短信签名名称templateCode: 模版code
3.修改官方demo进行封装,SendSmsUtil.java
package com.basic.hellorabbit.util;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.google.gson.Gson;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* @Description: 短信发送工具
* @Author: Joe
* @CreateDate: 2020/3/21 15:49
*/
@Service
public class SendSmsUtil {@Value("${alisms.accessKeyId}")private String accessKeyId;@Value("${alisms.accessSecret}")private String accessSecret;@Value("${alisms.signName}")private String signName;@Value("${alisms.templateCode}")private String templateCode;public String aliSendSms(String PhoneNumbers,String TemplateParam){String result = "";DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessSecret);IAcsClient client = new DefaultAcsClient(profile);CommonRequest request = new CommonRequest();request.setSysMethod(MethodType.POST);request.setSysDomain("dysmsapi.aliyuncs.com");request.setSysVersion("2017-05-25");request.setSysAction("SendSms");request.putQueryParameter("RegionId", "cn-hangzhou");request.putQueryParameter("PhoneNumbers", PhoneNumbers);request.putQueryParameter("SignName", signName);request.putQueryParameter("TemplateCode", templateCode);request.putQueryParameter("TemplateParam", TemplateParam);try {CommonResponse response = client.getCommonResponse(request);System.out.println(response.getData());String infojson = response.getData();Gson gson2 = new Gson();Map map = gson2.fromJson(infojson, Map.class);String codes = map.get("Message").toString();System.out.println("codes="+codes);if(codes.equals("OK")){result="ok";}else {result="not_ok";}} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();}System.out.println("result="+result);return result;}}
4.在resources/templates下新建sms.html进行测试
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>短信测试页面</title>
</head>
<body>
<h3>短信验证码发送</h3>
<br>
<br>
<br>
<a href="/sendSms/手机号码">阿里云短信发送</a>
<hr><h3>短信验证</h3>
<form method="post" action="/yanSms"><p>手机号码:<input type="text" name="PhoneNumbers"/></p><p>验证码:<input type="text" name="code"/></p><p><input type="submit" value="开始验证"/></p>
</form>
</body>
</html>
5.使用SmsController.java进行发送和验证
package com.basic.hellorabbit.controller;import com.basic.hellorabbit.util.SendSmsUtil;
import com.basic.hellorabbit.util.VerificationCode;
import com.google.gson.Gson;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;/**
* @Description: 短信
* @Author: Joe
* @CreateDate: 2020/3/21 16:31
*/
@Controller
public class SmsController {@Autowiredprivate SendSmsUtil sendSmsUtil;@Datapublic static class SmsData{String code;public SmsData(String code) {this.code = code;}}/*** 跳转到短信测试页面* @return*/@RequestMapping(value = "/toSms",method = RequestMethod.GET)public String toSms(){return "sms";}/*** 发送验证码* @param PhoneNumbers 手机号* @return*/@ResponseBody@RequestMapping(value = "/sendSms/{PhoneNumbers}",method = RequestMethod.GET)public String sendSms(@PathVariable String PhoneNumbers, HttpServletRequest request){HttpSession session = request.getSession();//随机生成验证码String numeral = VerificationCode.getNumeral();SmsData smsData = new SmsData(numeral);Gson gson = new Gson();String code = gson.toJson(smsData);String information = sendSmsUtil.aliSendSms(PhoneNumbers, code);session.setAttribute(PhoneNumbers,numeral);session.setMaxInactiveInterval(3 * 60);if(information.equals("ok")){return "成功发送给"+PhoneNumbers+";验证码是"+numeral;}return "失败了"+PhoneNumbers;}/*** 验证* @param PhoneNumbers* @param code* @param request* @return*/@ResponseBody@RequestMapping(value = "/yanSms",method = RequestMethod.POST)public String yanSms(String PhoneNumbers, String code,HttpServletRequest request){HttpSession session = request.getSession();String ycode = (String) session.getAttribute(PhoneNumbers);if(ycode.equals(code)){return PhoneNumbers+"验证成功";}return PhoneNumbers+"验证失败";}}
6.生成随机验证码工具类VerificationCode.java:java实现随机生成验证码工具类
代码初步测试通过,至于其中涉及到的手机号码校验等在此忽略
Springboot整合阿里云短信SDK发送短信验证码笔记相关推荐
- SpringBoot整合阿里云短信服务详细过程(保证初学者也能实现)
前言 网上关于实操性的文章普遍大部分都记录不全,要么只记录重点部分,对于刚学习的小伙伴来说看起来是比较困难的 所以,基于这一点. 该文章会详细介绍使用SpringBoot整合阿里云短信服务的每一步过程 ...
- springboot整合阿里云oss上传的方法示例
这篇文章主要介绍了springboot整合阿里云oss上传的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 OSS申请和 ...
- SpringBoot整合阿里云视频点播
文章目录 SpringBoot整合阿里云视频点播 1.准备工作 2.服务端SDK的使用 2.1 导入依赖 2.2 初始化类 2.3 创建读取公共常量的工具类 2.4 获取视频播放地址 2.5 获取视频 ...
- SpringBoot整合阿里云OSS
文章目录 SpringBoot整合阿里云OSS 1.准备工作 1.1 开通"对象存储OSS"服务 1.2 创建Bucket 1.3 创建RAM子用户 2.SpringBoot整合阿 ...
- SpringBoot整合阿里云OSS文件上传、下载、查看、删除
SpringBoot整合阿里云OSS文件上传.下载.查看.删除 该项目源码地址:https://github.com/ggb2312/springboot-integration-examples ( ...
- SpringBoot整合——阿里云对象存储(OSS)
SpringBoot整合--阿里云对象存储 1 OSS介绍 在开发应用的过程中,我们经常会有用户需要实名认证之后才能访问的需求. 用户认证需要上传证件图片.首页轮播也需要上传图片,因此我们要做文件服务 ...
- 一小时学会使用SpringBoot整合阿里云SMS短信服务
1. 登录阿里云进入控制台 进入阿里云控制台,https://home.console.aliyun.com/在个人头像位置点击进入AccessKey管理: 2. 创建用户和用户组 创建用户组 添加完 ...
- Springboot整合阿里云视频点播服务
目录 一.阿里云视频点播服务 二.开通视频点播云平台 1.搜索视频点播服务 2.开通视频点播 3.选择按使用流量计费 三.使用SDK 1.添加Jar包依赖 2.application.properti ...
- SpringBoot整合阿里云OSS上传文件
一.需求分析 文件上传是一个非常常见的功能,就是通过IO流将文件写到另外一个地方,这个地方可以是项目下的某个文件夹里,或者是本地电脑某个盘下面,还可以是云服务OSS里面,这里就是我要讲到的OSS,我写 ...
- SpringBoot实现阿里短信SDK发送短信,使用MQ监听器
先 创建sms短信微服务工程,有可能很多工程要使用我们创建的短信服务. 项目环境: SpringBoot SpringClould 步骤: config SmsConfiguration: /*** ...
最新文章
- 电压放大倍数公式运放_运放电路:同相放大还是反相放大?
- 52个有用的 Docker 工具
- linux centos7修改默认启动的内核(升级及切换内核)
- 禁用内存清理_win10电脑开机内存占用高达80%以上如何解决
- Java核心篇之泛型--day5
- Ranger-Sqoop2插件安装
- seo自动工具_【SEO工具】搭建一个网站需要用到哪些SEO工具?
- sql server 群集_SQL Server 2014 –安装群集实例–分步(3/3)
- java程序员目标_Java程序员的目标,你都达到了多少条?
- (转)什么时候加上android.intent.category.DEFAULT和LAUNCHER
- linux --- 启动过程
- 使用vs2005经验与教训(关于masterpage,menu,gridview及对exce的l操作)
- MyEclipse9.0 XJad的配置
- CSDN认证博客专家申请通过,感动,欣慰,分享一下我的经验!
- 大数据Flink(八):Flink入门案例
- 波士顿大学计算机科学与技术专业,波士顿大学计算机科学专业.pdf
- 500Illegal PORT command 错误 无法取得目录列表 8uftp
- Fibonacci数列练习题
- 2021-2027全球与中国核磁共振管市场现状及未来发展趋势
- safari浏览网页打开速度很慢怎样解决