Jave Web阿里云短信服务发送验证码
首先得在阿里云根据流程开通短信服务,申请签名和模版,具体看文档
因为这是个web项目,用到了thymeleaf模板,所以在pom.xml中加入如下依赖
		<dependency>
			<groupId>com.aliyun</groupId>
			<artifactId>aliyun-java-sdk-core</artifactId>
			<version>4.4.0</version>
		</dependency>
		<dependency>
			<groupId>com.aliyun</groupId>
			<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
			<version>1.1.0</version>
		</dependency>
        <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
verifyCodeGenerator.java是生成验证码的工具类
public class verifyCodeGenerator {
//    生成验证码
public static String getVerifyCode()
{
    Random random=new Random();
StringBuffer stringBuffer=new StringBuffer();
for (int i=0;i<6;i++)
{
    stringBuffer.append(String.valueOf(random.nextInt(10)));
}
    System.out.println(stringBuffer.toString());
    return  stringBuffer.toString();
}
}
MsUtil .java是发送验证码的工具类
public class MsUtil {
//    发送验证码及返回验证码字符串
    public static String send(String mobile)
    {
        //设置超时时间-可自行调整
        System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
        System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//初始化ascClient需要的几个参数
        final String product = "Dysmsapi";//短信API产品名称(短信产品名固定,无需修改)
        final String domain = "dysmsapi.aliyuncs.com";//短信API产品域名(接口地址固定,无需修改)
//替换成你的AK
        final String accessKeyId = "yourAccessKeyId";//你的accessKeyId,参考本文档步骤2
        final String accessKeySecret = "yourAccessKeySecret";//你的accessKeySecret,参考本文档步骤2
//初始化ascClient,暂时不支持多region(请勿修改)
        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId,
                accessKeySecret);
        try {
            DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        IAcsClient acsClient = new DefaultAcsClient(profile);
        //组装请求对象
        SendSmsRequest request = new SendSmsRequest();
        //使用post提交
//        request.setMethod(MethodType.POST);//过期了
        request.setSysMethod(MethodType.POST);
        //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式;发送国际/港澳台消息时,接收号码格式为国际区号+号码,如“85200000000”
        request.setPhoneNumbers(mobile);
        //必填:短信签名-可在短信控制台中找到
        request.setSignName("小生不才");
        //必填:短信模板-可在短信控制台中找到,发送国际/港澳台消息时,请使用国际/港澳台短信模版
        request.setTemplateCode("SMS_162732775");
        //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
        //友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败
        String verifyCode=verifyCodeGenerator.getVerifyCode();
        request.setTemplateParam("{\"code\":" + verifyCode + "}");
        //可选-上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段)
        //request.setSmsUpExtendCode("90997");
        //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
        request.setOutId("yourOutId");
//请求失败这里会抛ClientException异常
        try {
            SendSmsResponse acsResponse = acsClient.getAcsResponse(request);
        } catch (ClientException e) {
           e.printStackTrace();
        }
//        if(sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {
//            return verifyCode;
////请求成功
//        }
     return  verifyCode;
    }
}
application.properties的配置
#关闭thymeleaf缓存
spring.thymeleaf.cache=false
#ָ端口
server.port=8888
#模板的路径
spring.freemarker.template-loader-path=classpath:/templates
#设置模板的字符编码
spring.freemarker.charset=utf-8
thymeleaf模板页面
sign_in.html 是发送和输入验证码页面
<!DOCTYPE html>
<html lang="en">
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="matchCode" method="post">
    <!--<input type="text" placeholder="请输入手机号码"/>-->
    <input type="text" placeholder="请输入验证码" name="yourCode">
    <input type="submit" value="确定">
</form>
<div th:text="${code}"></div>
</body>
</html>
test.html 是验证结果页面
<!DOCTYPE html>
<html lang="en">
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div th:text="${result}"></div>
</body>
</html>
UserController .java
@Controller
public class UserController {
    @Autowired
    private HttpServletRequest request; //自动注入request
@GetMapping(value = "/")
public String sign(Model model)
{
    String code= MsUtil.send("你接收验证码的手机号");
//    String verifyCode = verifyCodeGenerator.getVerifyCode();
    model.addAttribute("code","验证码是"+code);
    request.getSession().setAttribute("code",code);
//    attr.addFlashAttribute("code",code);
    return "sign_in.html";
}
//匹配输入的验证码和发送的验证码是否一致
    @PostMapping(value = "matchCode")
    public String matchCode(@RequestParam String yourCode,Model model) {
        String code =(String) request.getSession().getAttribute("code");
        System.out.println("code===="+code);
        if (yourCode.equals(code)){
            System.out.println("成功");
           model.addAttribute("result","成功");
        }else {
            System.out.println("失败");
            model.addAttribute("result","失败");
        }
        return "test";
    }
}
运行结果
Jave Web阿里云短信服务发送验证码的更多相关文章
- springboot 使用阿里云短信服务发送验证码
		一.申请阿里云短信服务 1.申请签名 2.申请模板 3.创建accesskey(鼠标悬停在右上角头像) 二.代码实现 1.springboot引入maven依赖 <dependency> ... 
- java实现阿里云短信服务发送验证码
		由于做项目的时候遇到了接第三方短信服务,所以记录一下. 一.新建一个maven项目并导入相关依赖 <!--手机发送短信验证码--> <dependency> <group ... 
- 阿里云短信服务发送短信验证码(JAVA开发此功能)
		开发此功能需注册阿里云账号,并开通短信服务(免费开通) 充值后,不会影响业务的正常使用!(因为发送验证类短信:1-10万范围的短信是0.045元/条).开发测试使用,充2块钱测试足够了 可参考阿里云官 ... 
- springboot 项目使用阿里云短信服务发送手机验证码
		1.注册阿里云账户进行账号实名认证 2.申请短信签名和模板 3.创建access_key和access_secret 4.然后就是代码编写 一.找到产品与服务里面的云通信模块,然后找到短信服务,开通短 ... 
- php 阿里云短信服务及阿里大鱼实现短信验证码的发送
		一:使用阿里云的短信服务 ① 申请短信签名 ②申请短信模板 ③创建Access Key,获取AccessKeyId 与 AccessKeySecret.(为了安全起见,这里建议使用子用户的Access ... 
- flask+阿里云短信服务实现注册发送手机验证码
		效果图: 该效果主要讲解实现通过调用阿里云的SDK实现发送注册验证码短信(阿里云短信付费使用) 购买阿里云短信服务 购买链接:https://www.aliyun.com/product/sms 1. ... 
- 移动端获取短信验证码java实现——阿里云短信服务
		需求:移动端输入手机号,获取验证码.点击登录,验证验证码是否输入错误.是否超时等情况,一旦校验通过,将用户数据保存到数据中(业务逻辑). 前提:注册阿里用户,开通短信服务,申请key.秘钥.签名.短信 ... 
- 浏览器端获取短信验证码java实现——阿里云短信服务
		需求:浏览器端输入手机号,获取验证码.点击登录,验证验证码是否输入错误.是否超时等情况,一旦校验通过,将用户数据保存到数据中(业务逻辑). 前提:注册阿里用户,开通短信服务,申请key.秘钥.签名.短 ... 
- Zabbix 3.4.3 使用阿里云短信服务进行报警
		目录 一.阿里云短信服务 1.1.首先开通阿里云短信服务 1.2 创建签名 1.3 创建短信模板 1.4 创建发送脚本 二.Zabbix Web 配置 2.1 增加 Media types 2.2 给 ... 
随机推荐
- 在ASP.NET MVC部署AngularJs
			创建一个ASP.NET MVC项目. 打开NuGet管理,安装angularjs: 在App_Start目录下,Bundle刚刚安装的angularjs库: 在Global.asax.cs的Appli ... 
- Linux系统文件权限管理(6)
			Linux操作系统是多任务(Multi-tasks)多用户(Multi-users)分时操作系统,linux操作系统的用户就是让我们登录到linux的权限,每当我们使用用户名登录操作系统时,linux ... 
- 项目中jsp的存放
			今天早上犯的错, 复习jsp,把jsp放在 WEB-INF 下 我启动项目,想看效果的时候,一直找不到指定的资源404 后来一番探索,我把它拖放在了WebContent 直接访问的,下午看到知识点 ... 
- Java几种单例模式的实现与利弊
			饿汉式 提前new出来实例了,并不是在第一次调用get方法时才实例化,没有进行延迟加载 public class Singleton1 { private static Singleton1 inst ... 
- MySQL赋权
			MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利.grant select ... 
- Smart/400开发上手1:入门
			1.介绍 Smart/400是在AS/400之上的开发平台,管理开发.运维的全生命周期. 2.设计基础 Introducing Fields Smart通过字段字典Field Dictionary来存 ... 
- vue路由router的三种传参方式
			方法三: 传参页面传递参数方式: this.$router.push({ path: 'indexTwoDetails', query: { "id": id } }) 接受参数页 ... 
- WebDriver高级应用实例(9)
			9.1封装操作表格的公用类 目的:能够使自己编写操作表格的公用类,并基于公用类进行表格中的元素的各类操作 被测网页的网址的HTML代码: <html> <body> <t ... 
- [原创]K8飞刀 新增Acunetix WVS 远程漏洞 反制黑客
			工具: K8飞刀20150603组织: K8搞基大队[K8team]作者: K8拉登哥哥博客: http://qqhack8.blog.163.com发布: 2015/6/3 20:41:29 简介: ... 
- 关于并发用户数的思考-通过PV量换算并发
			首先介绍一下pv量:PV(访问量):即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次.UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客.00 ... 
